Эссе на тему «Дифференциальный криптоанализ DES» Выполнил Кривошеев Юрий Группа 413 1. Криптосистема DES. DES (Data Encryption Standard) был принят в 1970-х годах и базировался на алгоритме Lucifer, который был разработан 1960-ых годах компанией IBM. DES является блочным шифром и оперирует с блоками длины 64 бита. Длина ключа равна 56 битам. Рассмотрим кратко алгоритм DES: Рис. 1. Структура алгоритма DES. После начальной перестановки бит 16 раз повторяется следующие процедуры: Получение раундового ключа Ji Применение функции f(Li,Ji) XOR для Ri и f(Li,Ji) – результат записывается в Ri+1 Присвоение Li+1 = Ri После чего опять производится перестановка бит. Функция f выполняет следующие преобразования: Рис.2. Преобразования функции f. Расширяющая перестановка входных битов Операция XOR ключа и расширенного входа Разделение результата на 8 блоков по 6 бит и применение к ним S-блоков, выходом которых являются блоки по 4 бита Перестановка разрядов 2. Первые попытки взлома DES. Долгое время для криптоанализа алгоритма DES не было предложено ни одного метода, позволяющего уменьшить количество требуемых операций по сравнению с полным перебором более чем в 2 раза (эффект 50%-го сокращения достигается, если имеется достаточное количество пар наборов открытый текст – шифротекст, в которых один открытый текст является побитовым отрицанием другого). Были найдены некоторые алгоритмы для «урезанного» DES (т.е. при использовании меньшего количества раундов). Среди них можно выделить следующие: Встреча посередине (Шаум и Эвертс) Метод отыскания линейных зависимостей в битах ключа (Дейвиз) Первым методом, позволяющим ускорить криптоанализ полного DES, был дифференциальный метод, предложенный в 1991 году Бихамом (Biham) и Шамиром (Shamir). 3. Алгоритм дифференциального криптоанализа. Вначале этот метод также был предложен для «урезанного» DES, но вскоре был обобщен на полный 16-раундовый алгоритм. Этот метод требует 247 открытых текстов, выбранных нападающим и обладает 237 сложностью. Природа метода статистическая, т.е. отыскиваются статистически наиболее вероятные ключи. В данном эссе будет рассмотрен алгоритм для трехраундового DES. Алгоритм для большего количества раундов является обобщением приведенного здесь алгоритма. Метод дифференциального криптоанализа основан на влиянии особого вида разностей открытых текстов на разности шифротекстов (разностью будем называть побитовый XOR). Эти разности используются для отыскания статистических вероятностей ключей и отыскания наиболее вероятных из них. Рассмотрим фрагменты Li на входе функции f на i-ой итерации для двух различных открытых текстов. Пусть известна разность Li для заданных текстов. Эта разность инвариантна относительно операции ХОR с раундовым ключом и линейна относительно операций расширения и перестановки битов. Но применение S-блоков в функции f является нелинейной операцией. Поэтому для нахождения XOR результата действия функции f на пару входных аргументов недостаточно знать только разность аргументов, необходимы и сами значения аргументов. Однако каждому входному ХОR определенного S-блока соответствует некоторое вероятностное распределение выходного XOR. В таблице 1 показано вероятностное распределение выходного XOR при заданном входном для первого S-блока (нормированное на 64 – т.е. сколько раз для заданного XORа входа возникает такой XOR выхода). Среднее значение вероятности равно 1/16, но видно, что распределение не равномерно и многие выходные XOR невозможны или имеют малую вероятность. Если известны входы и разность (XOR) на выходе функции f, то, в силу линейности, известны и разности на входах и выходах всех S-блоков. Далее, по этим разностям находим по таблице все возможные варианты входа S-блока (а не разности входов) и вычисляем из них возможные варианты компонент раундового ключа (их – вариантов столько же, сколько и возможных входов S-блоков). Если подобную процедуру повторить для нескольких пар входных/выходных разностей, то можно отсеять наименее вероятные варианты раундового ключа. Таблица 1. Далее рассмотрим алгоритм трехраундового DES: Рис.3. 3-х раундовый DES. Пусть (L, R) – открытый текст, (l, r) – шифротекст. Тогда l=L xor A xor C. Открытый текст будем выбирать следующим образом: L – случайно, R – равно нулю. Тогда XOR выхода первого F (для пары открытых текстов) равен нулю, т.к. входы одинаковы – равны нулю. Отсюда XOR(l) = XOR(L) xor XOR(C), или XOR(C) = XOR(l) xor XOR(L). Под обозначением XOR(i) понимается разность соответствующих блоков для разных открытых текстов. Значение «с» (вход последней F) в явном виде присутствует в шифротектсе, отсюда получаем XOR входа F. К найденным значениям XOR входа и выхода функции F применяется описанный ранее алгоритм, и находятся возможные варианты ключа. К примеру, рассмотрим случай, когда на вход XORа перед первым S-блоком в третьем раунде были поданы значения SE =1h и SE* = 35h (эти значения легко вычисляются из шифротекста), а XOR выходов блока для этих входов равен So = Dh (вычисляется из открытого и шифротекстов). Тогда для полученной пары XOR входов/выходов S-блока (1h/34h) находим все возможные варианты входных значений Si на входе первого Sблока, дающие эту пару XOR входов/выходов. А поскольку Si =SE(*) xor SK, где SK – часть раундового ключа, то отсюда можно найти все возможные варианты SK (см. таблицу 2). Таблица 2. Возможные Si и соответствующие SK. Левая часть таблицы показывает возможные пары (Si Si*), а правая – возможные ключи. Вариантов для ключа для каждой строки два, т.к. которое из чисел является Si, а которое Si*, неопределено. 4. Материалы. 1. Differential Cryptanalysis of DES-like Cryptosystems. Biham, Shamir. 2. Differential Cryptanalysis of the full 16-round DES. Biham, Shamir. 3. http://mpgu.ru/crypto/3.2.htm 4. http://book.itep.ru/6/des_641.htm