Лавинный эффект

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Лавинный эффект — понятие в криптографии, обычно применяемое к блочным шифрам и криптографическим хэш-функциям. Лавинный эффект проявляется в зависимости всех выходных битов от каждого входного бита. Термин введен Фейстелем[1], хотя концептуальное понятие использовалось еще Шенноном. В алгоритмах с несколькими проходами лавинный эффект обычно достигается благодаря тому, что на каждом проходе изменение одного входного бита ведёт к изменениям нескольких выходных[2].

Если криптографический алгоритм не обладает лавинным эффектом в достаточной степени, криптоаналитик может сделать предположение о входной информации, основываясь на выходной информации. Таким образом, достижение лавинного эффекта является важной целью при разработке криптографического алгоритма[3].

Содержание

[править] Критерии

Для того, чтобы проверить наличие хорошего лавинного эффекта в конкретном алгоритме, используется несколько критериев[4]:

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

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

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

[править] Конфузия и диффузия

Основная статья: Конфузия и диффузия

Шеннон ввёл[6] понятия конфузии и диффузии в качестве методов, усложняющих статистический криптоанализ. Согласно Шеннону:

Диффузия — метод, при котором избыточность в статистике входных данных "распределяется" по всей структуре выходных данных. При этом большие объёмы выходных данных требуются для статистического анализа, скрывается структура исходного текста. Реализуется при помощи P-блоков (англ.).

Конфузия — метод, при котором зависимость ключа и выходных данных делается как можно более сложной, в частности, нелинейной. При этом становится сложнее делать заключения о ключе по выходным данным, а также об исходных данных, если известна часть ключа. Реализуется при помощи S-блоков (англ.).

Лавинный эффект является следствием хорошей конфузии и диффузии.

[править] Лавинный эффект в популярных алгоритмах

[править] Лавинный эффект в DES

Основная статья: DES

В DES лавинный эффект проявляется уже на четвёртом-пятом раунде[3], оценочно для каждой операции (считая, что к началу раунда изменение распространилось на R0 битов в правой части и L0 - в левой):

После расширения: R_1 = \min(1{,}5\cdot R_0, 32)
После восьми S-блоков: R_2 = 4\cdot 8\cdot (1 - (1 - \frac{1}{8})^{R_1})
После битового сложения левой и правой частей: R_3 \approx R_2 + L_{0} - \frac{R_2\cdot L_{0}}{32}

При вычислении предполагалось, что биты поступают на входы S-блоков случайно, а в S-блоке изменение входного бита влияет на все 4 выходных бита.

[править] Лавинный эффект в AES

Основная статья: Advanced Encryption Standard

В AES лавинный эффект появляется следующим образом: в первом раунде операция MixColumns() распространяет изменения одного байта на все 4 байта колонки, после чего во втором раунде применение операций ShiftRows() и MixColumns() распространяет изменения на всю таблицу. Таким образом, полная диффузия достигается уже на втором раунде. Конфузия обеспечивается операцией SubBytes().

[править] Примеры

[править] Примеры для хэш-функций

В примерах демонстрируется изменение хэша при изменении одного бита во входной последовательности.

SHA-1:

SHA-1(0110 0001 0110 0001 0110 0001 0110 0001) = '70c881d4a26984ddce795f6f71817c9cf4480e79'
SHA-1(0110 0001 0110 0011 0110 0001 0110 0001) = 'c6fdc1a445881de1f33e09cf00420a57b493b96d'
SHA-1(0110 0001 0110 0001 0110 0001 0110 0011) = '00b25f15212ed225d3389b5f75369c82084b3a76'

MD5:

MD5(0110 0001 0110 0001 0110 0001 0110 0001)  = '74b87337454200d4d33f80c4663dc5e5'
MD5(0110 0001 0110 0011 0110 0001 0110 0001)  = 'ca7de9e17429612452a717a44c36e688'
MD5(0110 0001 0110 0001 0110 0001 0110 0011)  = '3963a2ba65ac8eb1c6e2140460031925'

[править] Примеры для шифров

В примерах демонстрируется изменение шифрованного сообщения при изменении одного бита[7] во входной последовательности или в ключе.

AES:

AES(ключ = "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa")   = '5188c6474b228cbdd242e9125ebe1d53'
AES(ключ = "aaaaaaaaaaaaaaaa", "aacaaaaaaaaaaaaa")   = 'f7e5c1118f5cb86198e37ff7a29974bc'
AES(ключ = "aacaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa")   = '2c50b5cac9c755d67aa61b87c26248eb'
AES(ключ = "aacaaaaaaaaaaaaa", "aacaaaaaaaaaaaaa")   = '87c09128de852b990b3dfbd65c7d9094'

RC4:

RC4(ключ = "aaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa")   = '71ddf97f23b8e42a4f0ccc463d7da4aa'
RC4(ключ = "aaaaaaaaaaaaaaaa", "aacaaaaaaaaaaaaa")   = '3d0feab630a32d1d0654c5481bd9ddd9'
RC4(ключ = "aacaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaa")   = '476266d77453695b6cee682f23b0c51d'
RC4(ключ = "aacaaaaaaaaaaaaa", "aacaaaaaaaaaaaaa")   = '3139d4506185d48e9b9e3dbbd4b57ec2'

[править] Пример плохого лавинного эффекта

В шифре Цезаря лавинный эффект не удовлетворяет критерию:

E(k = 3, "aaaaaaaaaaaaaaaa") = 'dddddddddddddddd'
E(k = 3, "acaaaaaaaaaaaaaa") = 'dfdddddddddddddd'

[править] Примечания

  1. Horst Feistel, "Cryptography and Computer Privacy." Scientific American, Vol. 228, No. 5, 1973. (Отсканированные изображения в формате JPEG)
  2. Richard A. Mollin, "Codes: the guide to secrecy from ancient to modern times", Chapman & Hall/CRC, 2005, стр. 142. (Просмотр на Google Books)
  3. 1 2 William Stallings, "Cryptography and network security: principles and practice", Prentice Hall, 1999, стр. 80. (Просмотр на Google Books)
  4. Isıl VERG˙IL˙I, Melek D. Y¨UCEL, "Avalanche and Bit Independence Properties for the Ensembles of Randomly Chosen n × n S-Boxes", Turk J Elec Engin, VOL.9, NO.2 2001, стр. 137. (Ссылка на PDF)
  5. Réjane Forré, "The Strict Avalanche Criterion: Spectral Properties of Boolean Functions and an Extended Definition", Proceedings on Advances in cryptology, Springer-Verlag New York, Inc, 1990, стр. 450. (Ссылка на PDF).
  6. C. E. Shannon, "Communication Theory of Secrecy Systems", Bell System Technical Journal, Vol 28, Oct 1949, стр. 656-715. (Ссылка на PDF)
  7. "a" = 0110 0001, "c" = 0110 0011
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках