Рейтинг:0

Можно ли хранить AES-GCM IV рядом с БД?

флаг za

Я пытаюсь зашифровать и сохранить строки в PHP в соответствии с примером № 1 на PHP документация openssl_encrypt.

<?php
//$key должен был быть предварительно сгенерирован криптографически безопасным способом, например openssl_random_pseudo_bytes.
$plaintext = "сообщение, которое нужно зашифровать";
$шифр = "aes-128-gcm";
если (in_array($шифр, openssl_get_cipher_methods ()))
{
    $ivlen = openssl_cipher_iv_length($шифр);
    $iv = openssl_random_pseudo_bytes($ивлен);
    $ зашифрованный текст = openssl_encrypt ($простой текст, $ шифр, $ключ, $опций=0, $IV, $тег);
    //сохраняем $шифр, $iv и $тег для расшифровки позже
    $original_plaintext = openssl_decrypt($зашифрованный текст, $ шифр, $ключ, $опций=0, $IV, $тег);
    эхо $исходный_открытый текст."\n";
}
?>

Если пользователь несет ответственность за запоминание $ключ, безопасно ли хранить $iv вместе с зашифрованной строкой в ​​базе данных?

Из этого другого вопроса AES 256 CBC - Хранение локальных данных, как сохранить вектор IV? и другие, я вижу важность уникального $iv но в ответе упоминается:

Если вы используете AES-CBC, вы можете хранить IV так, как вам нравится. Не важно держать IV в секрете; вам просто нужно убедиться, что противник не может заранее предсказать IV.

Это относится и к GCM?

РЕДАКТИРОВАТЬ: Если я не ошибаюсь, этот ТАК вопрос, Попытка расшифровать с помощью aes-256-gcm с php это ответ.(что да, IV и тег могут храниться вместе с зашифрованным текстом)

kelalaka avatar
флаг in
Связанный с этим вопрос [Построчный зашифрованный журнал, хранящийся в iv/salt/iterations. Насколько это безопасно?] (https://crypto.stackexchange.com/q/78350/18298)
Рейтинг:4
флаг cr

Это относится и к GCM?

Для GCM еще важнее, чем для CBC, никогда не использовать IV с одним и тем же ключом шифрования. Это полностью сломает шифрование.

IV не является секретом. Вы можете делать с ним все, что хотите, в том числе хранить его в базе данных.

флаг za
Извините, я должен был сформулировать вопрос более четко, но вы повторили, что IV не является секретом и действительно может храниться в БД. Спасибо.
Swashbuckler avatar
флаг mc
@waffl Принцип Керкхоффа: криптосистема должна быть безопасной, даже если все о системе, * кроме ключа *, является общедоступным.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.