Я разрабатываю частную систему обмена сообщениями для своего сайта с использованием Laravel 4, и я хочу, чтобы сообщения оставались частными. До сих пор, я следующий код, написанный:Как шифровать и хранить личные сообщения?
class PkeyEncryption {
public static function encrypt($input, $cipher = MCRYPT_RIJNDAEL_128) {
$key = sha1(microtime(true) . mt_rand(10000, 90000));
$iv_size = mcrypt_get_size($cipher, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt($cipher, $key, $input, MCRYPT_MODE_CFB, $iv);
}
public static function decrypt($data, $key, $cipher = MCRYPT_RIJNDAEL_128) {
$iv = $data['iv'];
$data = $data['data'];
return mcrypt_decrypt($cipher, $key, $data, MCRYPT_MODE_CFB, $iv);
}
}
Итак, я знаю, как для шифрования сообщений, и я также знаю, что я могу хранить IV наряду с сообщением. Но я не знаю, где я должен хранить открытый ключ. Я уже прочитал несколько других вопросов на сайте, и я до сих пор не нашел ответа. Может ли кто-нибудь указать мне в правильном направлении?
Обратите внимание, что если веб-сервер имеет доступ к информации дешифрования (ключ и IV), то злоумышленник, способный скомпрометировать веб-сервер, также получит к нему доступ. – cdhowie
Сохраните ключ на стороне клиента (например, в файле cookie?) – ferdynator
Итак, я мог хранить ключи за пределами сайта или на другом сервере? –