AES GCM IV/nonce использование
Я реализую шифрование AES GCM в проекте WCF. После прочтения и поиска я нашел этот пример (первый класс, AESGCM), который, кажется, хорошо написан и обновлен.
Как я понимаю, очень важно, чтобы одноразовый номер был как можно более уникальным, и хочу убедиться, что я понимаю, как работает этот класс.
Когда я использовал IV в прошлом, в режиме CBC, было необходимо сохранить его для дальнейшей расшифровки, но в прилагаемом примере я вижу, что IV (nonce) не сохраняется.
Мой вопрос заключается в том, делает ли nonce часть шифрованного текста и извлекается с использованием:
cipherReader.ReadBytes(NonceBitSize / 8)
Или я что-то упустил и IV/nonce должны быть сохранены?
Кроме того - разве GCM не требует использования соли?
1 ответ
В связанном фрагменте кода одноразовый номер добавляется к зашифрованному тексту. Это поэтому восстанавливаемый. Потеря одноразового номера означает потерю данных.
В комментариях я увидел опасную идею: не генерировать одноразовый номер криптографически безопасным способом. Это не очень хорошая идея, потому что вы рискуете столкнуться с одноразовыми номерами таким образом. Это излишне ослабляет безопасность.