Закон на Шнайер

Всеки, от най-безсмисления аматьор до най-добрия криптограф, може да създаде алгоритъм, който сам не може да разбие.
Всеки може да измисли система за сигурност, която не би могъл да разбие.
Двойно криптиране
DES е приет като стандарт през 1977 г. Дължината на ключа на новия стандарт беше 56 бита, доста голям брой за онези времена. Законът на Мур обаче е неумолим и някои криптографи още тогава започнаха да бият тревога. Прословутите основатели на криптографията с публичен ключ, Уитфийлд Дифи и Мартин Хелман, бяха сред първите, които критикуваха дължината на ключа на новия стандарт. В една от своите статии те твърдяха, че 56-битов ключ е твърде малък и оставя място за атака с груба сила.
В светлината на горната забележка изглежда съвсем логично да се опитаме да увеличим силата на DES алгоритъма, като използваме техниката на множествено криптиране. Този метод ви позволява изкуствено да увеличите дължината на ключа, като приложите операцията за криптиране няколко пъти с различни ключове. На пръв поглед може да изглежда, че за решаване на проблема с DES е достатъчно да се удвои дължината на ключа, т.е. използвайте следната схема като криптиране и декриптиране:C=EK2 (EK1 (P)), P=DK1 (DK2 (C)),където C е шифрованият текст; P - обикновен текст; и EK (P) и DK (C) са съответно процедурите за криптиране и декриптиране. Горната схема увеличава ключовото пространство до 2112 и прави атаката с груба сила безсмислено начинание.
Изглежда, че е намерено решение. Но точно в този момент е време да си припомним закона на Шнайер. Ако сте създали схема за криптиране и не можете да намерите недостатъци в нея, това не означава, че няма такива. През 1981 г. Ралф Меркъл и Мартин Хелман анализират подробносигурност на двойното криптиране и описва метод, който позволява възстановяване на ключа за криптиране не в 2112 операции на криптиране, а в относително дребни 2 57 . Методът, предложен от Merkle и Hellman, принадлежи към класа на атаките с обикновен текст и е приложим, ако атакуващият знае двойката публичен-личен текст. Същността на атаката е следната. Нападателят знае открития текст P и съответния шифрован текст C=EK2 (EK1(P)). За да отвори ключа, атакуващият изброява всички възможни 2 56 опции за ключа K1 и записва стойностите K1(P), K1> в таблицата T1. След това, използвайки стойността C, атакуващият преминава през 256 опции за ключа K2 и записва стойностите K2(C), K2> в таблицата T2. След сортиране на таблици T1 и T2, атакуващият приема като вероятни ключове такива K1 и K2, за които EK1(P) = DK2(C). Описаната атака се нарича "среща по средата", т.к Криптирането се извършва от едната страна и декриптирането от другата. Сравняват се резултатите, получени "по средата".
Тройно криптиране
През 1978 г. Walter Tuchman предложи използването на тройно криптиране за увеличаване на силата на алгоритъма DES. Схемата на Тучман също използва два ключа K1 и K2, но процесът на криптиране и декриптиране е както следва: C=EK1 (DK2 (EK1(P))) P=DK1 (EK2 (DK1(C))). Този метод е защитен срещу атаката „среща по средата“. Дори ако нападателят формира таблица K1(C), K1>, за да извърши атаката, той ще трябва да получи всички възможни стойности на K2((EK1(P)), K1K2>, което е 2112 записа и, разбира се, не изглежда реалистично. Но методът Tachman не се счита за надежден дълго време.
Меркъл и Хелман описаха вариант на атака с избран обикновен текст върху схема за тройно криптиране. В предложението на Meckl иHellman атаката е достъпна за нападателя т.нар. дешифриращ оракул. Това означава, че атакуващият може да изпрати всяко съобщение на входа на функцията за криптиране и да получи неговия криптиран аналог. Атаката с тройно криптиране Merkle-Hellman се свежда до следното:
- нападателят изброява всички възможни 2 56 варианта на ключа K2, дешифрира блока, състоящ се от нула байта и записва стойностите K2(0), K2> в таблицата T1;
- атакуващият за всеки от 2 56 варианта на ключа K1 дешифрира блока, състоящ се от нула байта: DK1(0). Нападателят изпраща стойността DK1(0) като вход към оракула за криптиране и дешифрира отговора, получен от оракула, като използва избрания ключ K1: DK1(Enc(DK1(0))). Получената стойност и вариант на ключа K1 K1(Enc(DK1(0))), K1> се записва в таблица Т2
- След като сортира таблиците T1 и T2, атакуващият приема като вероятни ключове такива K1 и K2, за които DK1(Enc(DK1(0))) = DK2(0).
Закон на Шнайер
Ако смятате, че сте създали идеално стабилна система, не бързайте да я използвате във вашия проект. Запомнете закона на Шнайер и по-добре използвайте добре познатия метод.