Итак, как уже говорилось в предыдущей статье, идея ДК заключается в последовательном сравнении пар открытый/закрытый текст в результате их прохождения через алгоритмы шифрования. Учитывая, что вся информация представляется в двоичном виде, под разностью подразумевается сумма двух последовательностей по модулю два (побитовый XOR). В самом начале анализа алгоритма принято отбрасывать начальную и конечную перестановки (P- блоки), так как они линейны. Рассмотрим один раунд шифрования DES: Введем следующие обозначения. Пусть нам будет задана входная пара и , имеющие разность , а так же пара выходов и с разностью . Так как расширяющая перестановка с блоком известны, мы можем посчитать разность на выходе после нее и записать как . Эта разность после прохождения через S даст , которая после перестановки даст . Остаётся вопрос о подключе. После выхода из сумматора XOR разность будет равна , потому что подключ будет складываться с самим собой. Иными словами: Таким образом, подключ не влияет на конечную разность. Можно доказать, что соответствия между и носят не равновероятный характер в силу особенностей строения S - блоков. Знать соответствие между этими двумя значениями крайне важно, так как благодаря этому можно восстановить раундовый подключ. Как уже говорилось выше, длина раундового подключа равна 48 бит, однако, зная алгоритм развёртки ключа, можно восстановить целый 56 – битный ключ методом полного перебора, используя всего комбинаций. Метод ДК позволяет вскрывать подключ . Так как наблюдается несходство различных пар и , вероятность появления того или иного шифртекста также не равновероятная. В следующем пункте мы сформулируем алгоритм нахождения статистики и построим таблицы для каждого S - блока замены. Если при определенном количестве пар у нас выявляется наибольшее количество совпадений, то в этом случае подключ подобран верно. В таком случае дана пара, которая соответствует разностям и , называется правильной парой. Для того, чтобы отыскать нужный подключ, необходимо собрать как можно большее количество правильных пар. Далее, правильный подключ будет появляться чаще остальных. Именно в этих операциях и заключается метод ДК. В одной из работ А. Шамира показано как, зная характеристику одного раунда шифрования, построить характеристику для нескольких раундов. На рисунке 2.7 изображена характеристика одного раунда шифрования. Входное значение разбито на две части  и , причем, правая часть равна нулю. Это сделано с той целью, чтобы на выходе функции было нулевое значение. Это означает, что на выходе мы всегда получим эту же разность. Если привести пример ненулевой входной разности, то он представлен на рисунке 3 Здесь в качестве входной разности берется значение , где символ означает конкатенацию строк. Она подобрана таким образом, чтобы на выходе из раундовой функции было значение . Соответственно, полученный шифртекст будет иметь значение . Причины подбора тех или иных цифр самим Шамиром не были объяснены. Далее рассмотрим пример с несколькими раундами. На рисунке 2.9 приведена схема алгоритма DES с тремя раундами. Будем исходить из того, что правая часть входной разности нулевая, так же как и в однораундовой характеристике. Это соответствует a=0 на рисунке 2. В таком случае Разность A также всегда будет нулевой, и на вход функции F второго раунда поступит разность . На выходе мы будем иметь шифртекст . По значениям и нетрудно определить биты подключа последнего раунда, а после чего восстановить весь ключ. Помимо этого существует еще один способ, позволяющий анализировать алгоритм. Мы можем подобрать такую входную разность (а именно, значение правой части), что на выходе из функции F мы получим значение из левой части. Из этого следует, что на вход второго раунда поступит нулевая разность, которая в свою очередь при прохождении через раундовую функцию даст значение, равное правой половине исходного текста . На рисунке 5 отображена подобная характеристика. Для того, чтобы провести атаку на полный 16 – раундовый DES Шамир предложил использовать двухраундовую характеристику и использовать такой дифференциал, который при прохождении через функцию F давал нулевую разность. Подобная структура отображена на рисунке 6. В качестве примера можем рассмотреть случай, когда входная разность равна . Что же будет происходить в функции F? В таком случае в каждом нечетном раунде на её вход будет поступать нулевая разность, что на выходе также даст нулевой результат. В каждом же четном раунде в раундовую функцию будет поступать результат сложения прежней левой части и выходной нулевой разности в нечетном раунде. В данном случае это . На вход первых трех S – блоков поступит , и . соответственно. На остальные S – блоки поступят нули. На выходе от разности , что равно мы получим нули с вероятностью . Вероятность того, что на выходе второго S – блока будет нулевая разность составляет , а вероятность того, что на выходе третьего S – блока будет нулевая разность составляет . Нетрудно посчитать, что суммарная вероятность получения нулевой разности по трем S – блокам составляет: Для анализа 16 – раундового DES было предложено использовать подобную характеристику 6 раз, - со 2- го по 13-ый раунды. В таком случае на вход 14- го раунда поступит нулевая разность. Так как нам известна выходная разность 14-го и 16-го раунда, мы можем определить разность 15-г раунда. Благодаря статистическим данным нам может стать известна разность после прохождения через F – функцию 16-го раунда. Последние три раунда всегда будут выполняться со стопроцентной вероятностью. Вероятность же выполнения шести двухраундовых характеристик равна: Следующий рисунок наглядно демонстрирует применение анализа к полному алгоритму DES Учитывая, что правая часть входной разности равна , то всего существует возможных вариантов для её получения. Левая входная разность может принимать практически любые значения. Для того чтобы начать искать подключ, необходимо собрать статистические данные о криптографических примитивах, входящих в исследуемый алгоритм шифрования. В данном случае, это будут S – блоки. Именно от них зависит стойкость шифра и степень лавинного эффекта на каждом раунде. В DES каждый S – блок принимает на вход 6 битов, а на выходе выдает 4. Ввиду подобной несбалансированности длина подключа изначально не соответствует размеру блока данных, с которым будет складываться. Для того, чтобы это обеспечить, используют E – блок, который расширяет подключ до 48 бит (по 6 бит на каждый из 8-ми S – блоков). Итак, имеется необходимость построить таблицы соответствия входной и выходной разностей, – и соответственно. Каждая разность может иметь 64 различных значений. К примеру, при это может быть сумма и или же и и так далее. Теперь, если мы каждое из этих значений подвергнем преобразованию через первый S – блок, то увидим, что значению соответствует , значению , - . Это означает, что разности в одном из случаев соответствует . Теперь можно сформулировать алгоритм анализа S – блоков, который можно будет применить не только к DES, но и к любому другому алгоритму шифрования: Возьмем дифференциал . Подберем два таких открытых текста, для которых  Каждое значение прогоняем через анализируемый S–блок. Затем складываем между собой получившиеся значения. Далее подбираем другое значение и , которые так же в сумме дают исходный дифференциал и возвращаемся к пунктам 2 и 3. Так продолжаем раз, где – разрядность входа S–блока. После подсчитываем число похожих выходных разностей. Берём следующий дифференциал и так раз. На основе полученных таблиц мы можем сделать следующие выводы. Во-первых, сумма всевозможных значений разности  всегда равна 64. Для того, чтобы посчитать вероятность появления того или иного значения при заданных и необходимо поделить частоту появления на 64. Из таблиц видно, что максимально возможная вероятность появления равна 1/4. Также стоит обратить внимание на то, что все значения четные. Это объясняется тем, что каждому дифференциалу соответствует по две пары и . Перво-наперво, определяем на какие S – блоки какие значения отправятся. Для этого заданный дифференциал подвергается  E – преобразованию. После этого становится очевидно, что только на вход второго S – блока поступит ненулевое значение, в то время как на остальные поступят нули. Далее, на основе полученных таблиц мы определяем, что дифференциалу с наибольшей вероятностью соответствует разность . После этого полученный результат проходит через P – преобразование, что в итоге дает . Если в изначальной входной разности левая часть будет равна этому значению, то на вход второго раунда поступит нулевая разность. Теперь рассмотрим другую разность, которая представлена на рисунке 5. Здесь точно также, после E – преобразования на все S – блоки, кроме первого, поступят нули. На вход первого S – блока поступит дифференциал , которому  соответствует разность (с вероятностью 14/64). После P – преобразования полученная разность будет равна . В работах Шамира было предложено использовать на самую наиболее вероятную пару по той причине, что в таком случае пришлось бы затрагивать большое количество S – блоков ввиду E – преобразования. Выбранный дифференциал является наиболее компромиссным вариантом, так как затрагивает лишь три блока замены. Нетрудно посчитать, что для этого будет использоваться лишь возможных значений. E – преобразование повторяет крайние биты для каждого из блоков замены, в связи с чем есть необходимость, чтобы два первых и два последних бита всегда были равны нулю. Таких комбинаций всего четыре: , , и . Первая среди них всегда дает нулевое значение, а три остальные никогда не дают его ни для одного блока замены. Выше было установлено, что суммарная вероятность получения нулевой разности по трем S – блокам составляет:  Если мы переберем всевозможные значения, которые могут дать нулевую разность с вероятностью большей заданной, то получим и . Поэтому, для анализа можно использовать эти два дифференциала. На основе этого алгоритма можно осуществить поиск правильных пар, а затем и искомого секретного ключа. Итак, на рисунке 7 представлена схема анализа алгоритма DES для всех 16-ти раундов. Здесь явно определена правая часть, равная , в то время как левая может принимать практически любые значения. Итак, на вход первого блока поступает разность . По составленным таблицам определяем, что при этом значении на выходе никогда не получится разность и . Аналогично, для второго блока замены при значении никогда не выйдет разность , а для третьего блока, - . Так как в правой части значащими битами являются лишь первые 12, то всего может быть вариантов. Из них невозможными являются следующие значения: , , и . Нетрудно посчитать, что число невозможных дифференциалов составляет . За счет этого мы можем сократить время вычисления на (1024/4096)*100%=25%. Конечная разность, получающаяся на выходе из раундовой функции, является результатом P – преобразования. В таблице 2 показано, какие из этих битов соответствуют первым 12 битам входной разности. Именно эти биты и должны подвергаться изменению. При этом необходимо помнить, что в левой части могут встречаться не все комбинации. Как уже отмечалось ранее, атака на полный алгоритм DES полностью строится на анализе двух последних раундов. На выходе мы имеем разность и . Правая часть разности должна получиться в результате прохождения через функцию F. Как мы уже определили, эта разность может быть получена 3072 различными способами. Если же мы получим любую другую разность, - это будет означать, что выбрана пара заведомо не правильная. После того, как мы определили, что имеет допустимое значение, можно приступить к рассмотрению . Для начала прибавим к ней разность , чтобы получить то значение, которое получается на выходе из раундовой функции F. На рисунке 10 изображены те биты, на которые накладываются ограничения в виду невозможных дифференциалов. Итак, сформулируем алгоритм поиска правильных пар: Для начала побираются правые части открытого текста и таким образом, чтобы . Подбирается левая часть , на которую накладываются следующие ограничения: a. 9, 23 и 31 одновременно не равны единице; b. 2, 13, 18 и 28 биты одновременно не равны единице; c. 6, 24 и 30 биты одновременно не равны нулю, а 16 бит – единице; Подбираются два значения и таким образом, чтобы . Далее, выбранные пары и подвергаются шифрованию, после чего на выходе получаются пары и . Теперь определяется правая часть Если она удовлетворяет критериям пункта 2, то приступаем к следующему шагу. В противном случае подбирается новая пара и  Определяется левая часть . Если удовлетворяет критериям пункта 2, то приступаем к следующему шагу. В противном случае подбирается новая пара и  Далее все пункты повторяются для всех возможных значений и . Так как вероятность нахождения ключа для полного алгоритма DES составляет то по нижеприведенной мы можем определить минимальное число текстов, проанализировав которые можно с вероятностью 0.5 найти верный ключ:. Как уже говорилось ранее, со второго по 15 раунд мы используем двухраундовую характеристику, что позволяет использовать разработанный алгоритм для анализа меньшего количества раундов. Теперь, когда мы нашли правильные пары текстов, можно приступить к поиску секретного ключа. На рисунке 11 изображен последний раунд шифрования. Очевидно, что мы можем определить входное значение в функцию F, зная . Также, мы можем найти значение выхода из этой функции, посчитав . Применив E – преобразование к входной разности и обратное P – преобразование к выходной, мы можем найти соответствие между ними. На основе этого сформулируем алгоритм подбора секретного ключа: Определение разности на выходе из F-функции, сложив  Применить обратное P - преобразование к этой разности. Применить E – преобразование к разностям и  Сложить полученные значения и с произвольным ключом  и подвергнуть S – преобразованию. Если значения равны , то счетчик ключа необходимо увеличить на единицу. Ключи, имеющие максимальное значение счетчиков, и будут наиболее вероятными. Проанализировав таким образом все найденные правильные пары текстов, можно определить 48-битный подключ после чего восстановить остальные 8 бит методом полного перебора. В таблице 7 показано соответствие между битами основного ключа и 16-го. В предыдущих пунктах было определено, что левая часть входной разности  может принимать одно из 3072 значений. Согласно построенной статистике, не все эти значения могут быть равновероятны. Если проанализировать имеющиеся данные в таблицах, то мы увидим, что существует всего 7 значений, вероятность появления которых выше 1/8. Для первого блока это и , для второго, - , и , а для третьего, - и . Нетрудно посчитать, что всего существует 12 различных комбинаций этих значений. При их анализе также необходимо учитывать, что после S – преобразования следует перестановка P. Если проанализировать все 12 комбинаций этих значений, то получим разности, представленные в таблице 9. Именно среди этих разностей есть большая вероятность нахождения правильных пар. Используемая литература: Шнайер Б. Прикладная криптография: Протоколы, алгоритмы, исходные тексты на языке СИ. – М.:ТРИУМФ. – 2002 Heys H. M. A Tutorial on Linear and Differential Cryptanalysis [Электронный ресурс].  http://www.engr.mun.ca/~howard/PAPERS/ldc_tutorial.pdf D. Coppersmith The Data Encryption Standard (DES) and its strength against attacks VOL. 38 NO. 3 MAY 1994 Бабенко Л. К., Ищукова Е. В. Особенности применения методов дифференциального криптоанализа к симметричным блочным шифрам Вопросы кибербезопасности №1(9) - 2015 Сивцев Д. А. Подбор ключей симметричного алгоритма шифрования DES методом дифференциального криптоанализа. Тенденции инновационных процессов в науке: сборник статей Международной научно – практической конференции – Москва: РИО ЕФИР, 2015. стр. 29 E. Biham, A. Shamir. Differencial Cryptoanalysis of DES-like Cryptosystems. The Weizmann Institute of Science Departament of Apllied Mathematics, July 19, 1990 p. 13 E. Biham, A. Shamir. Differencial Cryptoanalysis of the Full 16-round DES p. 491 Ященко В. В. Введение в криптографию – СПб.: Питер, 2001 стр. 78