← Прикладная криптографическая инженерияСимметричное шифрование

Почему ECB протекает: режимы блочных шифров

Настоящий AES шифрует изображение тремя способами. В ECB картинка переживает шифрование; в CBC и CTR превращается в шум.

Исходное изображение
AES-ECB
AES-CBC, случайный IV
AES-CTR, случайный nonce
Каждый пиксель занимает 4 байта, поэтому один блок AES вмещает 4 пикселя, а вся картинка — это 4096 блоков. Различных среди них всего несколько сотен, и ECB каждый раз переводит одинаковый блок в один и тот же блок шифртекста: разных блоков снова столько же, поэтому контур сохраняется. Нажмите «Новый ключ»: цвета ECB меняются, форма — нет.

На что обратить внимание

  • Сам AES здесь ни при чём. ECB протекает, потому что одинаковые 16-байтовые блоки всегда дают одинаковые блоки шифртекста, и большие однородные области сохраняют форму.
  • CBC скрывает узор, сцепляя каждый блок со следующим; CTR делает XOR с ключевым потоком. Обоим нужен свежий IV или nonce для каждого сообщения.
  • Ни один из этих режимов не обнаруживает подмену. На практике используйте AEAD, например AES-GCM или ChaCha20-Poly1305.