Лавинный эффект
Лавинный эффект — понятие в криптографии, обычно применяемое к блочным шифрам и криптографическим хэш-функциям. Лавинный эффект проявляется в зависимости всех выходных битов от каждого входного бита. Термин введен Фейстелем[1], хотя концептуальное понятие использовалось еще Шенноном. В алгоритмах с несколькими проходами лавинный эффект обычно достигается благодаря тому, что на каждом проходе изменение одного входного бита ведёт к изменениям нескольких выходных[2].
Если криптографический алгоритм не обладает лавинным эффектом в достаточной степени, криптоаналитик может сделать предположение о входной информации, основываясь на выходной информации. Таким образом, достижение лавинного эффекта является важной целью при разработке криптографического алгоритма[3].
Содержание |
[править] Критерии
Для того, чтобы проверить наличие хорошего лавинного эффекта в конкретном алгоритме, используется несколько критериев[4]:
Криптографический алгоритм удовлетворяет лавинному критерию, если при изменении одного бита входной последовательности изменяется в среднем половина выходных битов.
Криптографический алгоритм удовлетворяет строгому лавинному критерию[5], если при изменении одного бита входной последовательности каждый бит выходной последовательности изменяется с вероятностью одна вторая.
Криптографический алгоритм удовлетворяет критерию независимости битов, если при изменении любого входного бита любые два выходных бита изменяются независимо.
[править] Конфузия и диффузия
Шеннон ввёл[6] понятия конфузии и диффузии в качестве методов, усложняющих статистический криптоанализ. Согласно Шеннону:
Диффузия — метод, при котором избыточность в статистике входных данных "распределяется" по всей структуре выходных данных. При этом большие объёмы выходных данных требуются для статистического анализа, скрывается структура исходного текста. Реализуется при помощи P-блоков (англ.).
Конфузия — метод, при котором зависимость ключа и выходных данных делается как можно более сложной, в частности, нелинейной. При этом становится сложнее делать заключения о ключе по выходным данным, а также об исходных данных, если известна часть ключа. Реализуется при помощи S-блоков (англ.).
Лавинный эффект является следствием хорошей конфузии и диффузии.
[править] Лавинный эффект в популярных алгоритмах
[править] Лавинный эффект в DES
В DES лавинный эффект проявляется уже на четвёртом-пятом раунде[3], оценочно для каждой операции (считая, что к началу раунда изменение распространилось на R0 битов в правой части и L0 - в левой):
После расширения: 
После восьми S-блоков: 
После битового сложения левой и правой частей: 
При вычислении предполагалось, что биты поступают на входы S-блоков случайно, а в S-блоке изменение входного бита влияет на все 4 выходных бита.
[править] Лавинный эффект в AES
В AES лавинный эффект появляется следующим образом: в первом раунде операция MixColumns() распространяет изменения одного байта на все 4 байта колонки, после чего во втором раунде применение операций ShiftRows() и MixColumns() распространяет изменения на всю таблицу. Таким образом, полная диффузия достигается уже на втором раунде. Конфузия обеспечивается операцией SubBytes().
[править] Примеры
[править] Примеры для хэш-функций
В примерах демонстрируется изменение хэша при изменении одного бита во входной последовательности.
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'
[править] Примечания
- ↑ Horst Feistel, "Cryptography and Computer Privacy." Scientific American, Vol. 228, No. 5, 1973. (Отсканированные изображения в формате JPEG)
- ↑ Richard A. Mollin, "Codes: the guide to secrecy from ancient to modern times", Chapman & Hall/CRC, 2005, стр. 142. (Просмотр на Google Books)
- ↑ 1 2 William Stallings, "Cryptography and network security: principles and practice", Prentice Hall, 1999, стр. 80. (Просмотр на Google Books)
- ↑ 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)
- ↑ 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).
- ↑ C. E. Shannon, "Communication Theory of Secrecy Systems", Bell System Technical Journal, Vol 28, Oct 1949, стр. 656-715. (Ссылка на PDF)
- ↑ "a" = 0110 0001, "c" = 0110 0011
|
|
|
|---|---|
| Поточный шифр | |
| Сеть Фейстеля |
ГОСТ 28147-89 • Blowfish • Camellia • CAST-128 • CAST-256 • CIPHERUNICORN-A • CIPHERUNICORN-E • CLEFIA • Cobra • DFC • DEAL • DES • DESX • EnRUPT • FEAL • FNAm2 • HPC • IDEA • KASUMI • Khufu • LOKI97 • MARS • NewDES • Raiden • RC5 • RC6 • RTEA • SEED • Sinople • TEA • Triple DES • Twofish • XTEA • XXTEA |
| SP-сеть | |
| Другие | |
|
|
|
|---|---|
| RSA • DSA • DSS • NTRUEncrypt • Схема Эль-Гамаля • Криптосистема Меркля-Хеллмана • Схема Шнорра • Эллиптическая криптография • ГОСТ Р 34.10-2001 • ДСТУ 4145-2002 |
|
|
|
|---|---|
| Хеш-функции общего назначения | |
| Криптографические хеш-функции |
JH • HAVAL • Keccak • LM-хеш • MD2 • MD4 • MD5 • MD6 • N-Hash • RIPEMD-128 • RIPEMD-160 • RIPEMD-256 • RIPEMD-320 • SHA-1 • SHA-2 • Skein • Snefru • Tiger • Whirlpool • ГОСТ Р 34.11-94 |