Повторное использование ключа, если IV меняется каждый раз - PullRequest
0 голосов
/ 14 января 2020

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

В настоящее время я использую AES-GCM, и мне интересно, использую ли тот же ключ но изменение IV для каждого шифрования является правильным способом сделать это?

Я использую mBedTLS для этого, и я могу успешно зашифровать / расшифровать файл, используя AES-GCM и жестко закодированный ключ и IV. Однако по соображениям безопасности я хочу убедиться, что я изменяю то, что нужно изменить, а по соображениям производительности не менять то, что не нужно.

1 Ответ

1 голос
/ 14 января 2020

Да,

Даже одноразовое повторное использование AES-GCM может привести к катастрофическим последствиям c с тем же ключом stati c.

Одно повторное использование одноразового номера приводит к утечке xor открытых текстов Таким образом, если один открытый текст известен, противник может полностью расшифровать другой.

Таким образом, вы можете использовать один и тот же [nonce (IV), key] кортеж один раз для каждого сообщения.

Это идеально отлично для использования новый nonce / IV с тем же ключом тот же stati c.

AES-GCM работает со счетчиком 32-bit, поэтому, к сожалению, с тем же ключом, пару nonce (IV) вы может безопасно шифровать только ~ 64GB данных (2^39-256 bits).

. Если вы хотите перейти на еще более безопасный шифр, я рекомендую XSalsa20 или XChaCha20, которые обеспечивают размер одноразового номера 192-bit, эффективно позволяя практически «Неограниченное» количество сообщений, которые должны быть зашифрованы одним и тем же ключом, nonce pair.

...