AES GCM IV/nonce использование

Я реализую шифрование AES GCM в проекте WCF. После прочтения и поиска я нашел этот пример (первый класс, AESGCM), который, кажется, хорошо написан и обновлен.

Как я понимаю, очень важно, чтобы одноразовый номер был как можно более уникальным, и хочу убедиться, что я понимаю, как работает этот класс.

Когда я использовал IV в прошлом, в режиме CBC, было необходимо сохранить его для дальнейшей расшифровки, но в прилагаемом примере я вижу, что IV (nonce) не сохраняется.

Мой вопрос заключается в том, делает ли nonce часть шифрованного текста и извлекается с использованием:

cipherReader.ReadBytes(NonceBitSize / 8)

Или я что-то упустил и IV/nonce должны быть сохранены?

Кроме того - разве GCM не требует использования соли?

1 ответ

Решение

В связанном фрагменте кода одноразовый номер добавляется к зашифрованному тексту. Это поэтому восстанавливаемый. Потеря одноразового номера означает потерю данных.

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

Другие вопросы по тегам