2017-01-24 5 views
1

На данный момент я шифрую много сообщений несколькими ключами AES. Но сообщение будет зашифровано только одним ключом AES. Итак, каждый ключ AES имеет собственный чек-код, чтобы понять, что это сообщение зашифровано им. Перед шифрованием к сообщению прикрепляется контрольный код. После описания проверьте чек-код, чтобы увидеть, что я выбираю правильный ключ для дешифрования.AES Расшифровка ложных срабатываний?

Но, интересно, если сообщение M, зашифрованное ключом A (конечно, есть контрольный код A перед M), может представить чек-код B после дешифровки ключом B? Является ли это возможным?

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

ответ

1

Это зависит полностью от вашего чек-кода. Представьте, что ваш чек-код всего 1 бит, вероятность того, что вы получите ложный результат, составляет 50%.

Однако эта проблема хорошо известна под названием Authenticated Encryption. Многие библиотеки имеют встроенные функции, которые одновременно охватывают шифрование и аутентификацию (и целостность).

Я настоятельно рекомендую использовать библиотеку, которая предлагает AE напрямую, и не комбинировать несколько крипто-примитивов самостоятельно. Причина, по которой была разработана AE, - это наблюдение, что реализации часто допускают ошибки.


Я думаю, что это утверждение не совсем правильно, но суть его должно быть.

+2

Преимущество шифров AE (AD) или ручная конструкция HMAC/SHA- * по * шифруемому тексту * заключается в том, что тег аутентификации (то, что OP вызывает «check-code») можно проверить * до * пытаясь расшифровать неизвестный шифрованный текст. Это уменьшает вектор атаки выбранной атаки шифрованного текста (CCA) и гарантирует, что шифрованный текст не был изменен при переходе. Убедитесь, что вы используете проверку равенства * постоянного времени * для тега auth, чтобы избежать утечки информации о времени. – Andy

+0

Спасибо большое! :) –