Режим AES-CTR (потоковое шифрование) 1-битное изменение в открытом тексте 1-битное изменение в шифрованном тексте?

Из того, что я понимаю, в потоковом шифре (или режиме AES CTR) ключ фактически шифруется с использованием IV (или вообще, из ключа K мы производим псевдослучайные байты). Затем мы используем этот ключ для шифрования открытого текста с использованием XOR.

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

Я прав или я все понял?

И если я прав, разве это не менее безопасно, чем CBC? (Потому что в CBC изменение одного бита в открытом тексте изменяет все биты в зашифрованном тексте с момента изменения и включения)

Спасибо!!!

4 ответа

Решение

По-видимому, режим CTR нарушает принцип диффузии Шеннона, поскольку изменение битов в открытом тексте лишь незначительно меняет вывод. Однако это только часть истории. На самом деле, вы также должны изменить IV для каждого сообщения. Поэтому в следующем сообщении изменится много битов, даже если вы измените только один бит в открытом тексте или даже если сообщение останется прежним.

С другой стороны, если вас беспокоит вредоносная модификация сообщений, ни CTR, ни CBC не застрахованы от этих атак, и, как сказал @GregS, вы должны использовать аутентифицированные режимы шифрования, такие как CCM, GCM или EAX.

Вы правы, поэтому существуют режимы, включающие как режим CTR, так и аутентификацию данных, обычно называемые режимами AEAD, например режимы CCM и GCM.

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

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

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