Атака по полному двудольному графу

Материал из testwiki
Версия от 06:30, 9 июля 2023; imported>InternetArchiveBot (Спасено источников — 3, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Атака по полному двудольному графу (Шаблон:Lang-en) — одна из разновидностей атаки «встречи посередине»[1]. В данной атаке используется структура полного двудольного графа для увеличения количества попыток атаки посредника. Так как эта атака основа на методе атаки посредника, то она применима как к блочным шифрам, так и к криптографическим хеш-функциям. Данная атака известна тем, что позволяет вскрыть шифры AES[2] и IDEA[3], хотя по скорости лишь немного обгоняет метод полного перебора. Вычислительная сложность атаки составляет 2126.1, 2189.7 и 2254.4 для AES128, AES192 и AES256 соответственно. Так как вычислительная сложность – теоретическое значение, то это означает, что AES не был взломан и его использование остается относительно безопасным. Также эта атака поставила под сомнение достаточность количества раундов, используемых в AES.

История

Метод атаки посредника был впервые предложен Диффи и Хеллманом в 1977 году в процессе обсуждения свойств алгоритма DES.[4] Они рассуждали о том, что размер ключа был слишком мал, и что повторное использование DES с разными ключами могло быть решением данной проблемы. Однако, было предложено не использовать "double DES", а сразу применять как минимум triple DES из-за особенностей атаки посредника. С тех пор, как Диффи и Хеллман предложили метод атаки посредника, появилось много вариаций, которые могут использоваться, когда классический вариант MITM неприменимы. Идея атаки по полному двудольному графу была впервые высказана Хоратовичем, Рехбергером и Савельевой для варианта с использованием хеш-функций.[5] Впоследствии Богданов, Хоратович и Рехбергер опубликовали атаку на AES, в которой показали, как можно применить концепцию полного двудольного графа к секретному ключу, включающий в себя блочный шифр[6].

Полный двудольный граф

Шаблон:Main В атаке посредника биты ключей K1 и K2, соответствующие первому и второму шифрам подстановки, должны быть не зависимы друг от друга, иначе совпадающие промежуточные значения открытого и зашифрованного текстов не смогут быть вычислены независимо в атаке посредника. Это свойство часто бывает трудно использовать в течение большого количества раундов, за счет диффузии атакуемого шифра.

Проще говоря, чем больше итераций будет использоваться в атаке, тем больший шифр подстановки будет “на выходе”, что в свою очередь приведёт к уменьшению числа независимых битов ключа между шифрами подстановки, которые придется взламывать полным перебором.

В данном случае, полный двудольный граф помогает в решении этой проблемы. Например, если проводить 7 раундов атаки посредника на AES, и затем использовать полный двудольный граф длиной 3 (покрывающий 3 итерации шифра), то будет возможность сопоставить промежуточное состояние в начале 7 итерации с промежуточным состоянием последней итерации (с 10, в случае с AES128). Таким образом, получается атака на все раунды шифра, хотя в классической атаке посредника это могло быть невозможно.

Суть атаки по полному двудольному графу состоит в том, чтобы построить эффективный полный двудольный граф, который в зависимости от битов ключей K1 и K2 мог сопоставлять текущее промежуточное значение соответствующему шифртексту.

Построение полного двудольного графа

Данный метод был предложен Богдановым, Ховратовичем и Рехбергером в работе Biclique Cryptanalysis of the Full AES.

Необходимо помнить, что основная функция полного двудольного графа состоит в том, чтобы строить связи между состояниями S и шфиротекстами C, используя ключи K[i,j]: Построение:
Первый шаг: Выбираем состояние(S0), шифротекст(C0) и ключ(K[0,0]) так, что: S0fK[0,0]Co, где f — это функция, которая отображает состояние в шифротекст, использую данный ключ.

Второй шаг: Выбирается два множества ключей, каждое размером 2d, таким образом, что:

  • Первое множество ключей — это ключи, которые удовлетворяют дифференциальным требованиям функции f на основе базовые вычислений: 0fΔiKΔi
  • Второе множество ключей — это ключи, которые удовлетворяют дифференциальным требованиям функции f на основе базовые вычислений: jfjK0

Третий шаг: Заметим, что
0fΔiKΔijfjK0=jfΔiKjKΔi,
Также легко заметить, что кортеж (S0,C0,K[0,0]),так же удовлетворяем обоим дифференциалам. Подставляя S0,C0 K[0,0] в любое из определений, получим 0f00, где Δ0=0,0=0 и Δ0K=0.
Это означает, что к кортежу, полученному из базовых вычислений, также можно применять операцию XOR : S0jfK[0,0]ΔiKjKC0Δi

Четвертый шаг: Легко заметить, что:
Sj=S0j
K[i,j]=K[0,0]ΔiKjK
Ci=C0Δi
Таким образом, имеем:
SjfK[i,j]Ci
Что совпадает с определением функции полного двудольного графа, показанной выше:
i,j:SjfK[i,j]Ci

Таким образом, можно создать полный двудольный граф размера 22d(22d, так как 2d ключей первого множества необходимо соединить с 2d ключами второго множества). Это означает, что граф размером 22d можно построить, используя 2*2d вычислений дифференциалов Δi и j и функции f. Если Δij для i+j>0 , тогда все ключи K[i,j] будут различными во всем графе.

Криптографический анализ атаки

1. Криптоаналитик собирает все возможные ключи в подмножества ключей размером 22d, где d некоторое число. Ключ в группе обозначается как K[i,j] в матрице размера 2d×2d. Далее криптоаналитик разделят шифр на два шифра подстановки, f и g (такие, что E=fg), так же, как и в атаке посредника. Множества ключей для каждого шифра подстановки имеют мощности 2d, и обозначаются K[i,0] и K[0,j]. Объединение ключей обоих шифров подстановки выражается через вышеупомянутую матрицу K[i,j].

2. Криптоаналитик строит полный двудольный граф для каждой группы 22d ключей. Граф имеет размерность d, так как он сопоставляет 2d внутренних состояний, Sj, с 2d шифротекстами, Ci, используя 22d ключей. В данном случае полный двудольный граф строится на основе отличий двух множеств ключей, K[i,0] и K[0,j].

3. Криптоаналитик выбирает 2d возможных шифротекстов, Ci, и запрашивает соответствующие им открытые тексты, Pi.

4. Злоумышленник выбирает внутреннее состояние, Sj и соответствующий ему открытый текст, Pi, и производит классическую атаку посредника, используя f и g.

5. Как только находиться ключ, сопоставляющий Sj с Pi, он тестируется на другой паре 'внутреннее состояние-шифротекст'. Если ключ работает и на этой паре, то с большой долей вероятности это корректный ключ.

Пример атаки

Ниже представлен пример атаки на AES128. Атака состоит из 7 раундовой атаки посредника, полный двудольный граф используется в 3 последних итерациях.

Разделение ключей

Ключи разделены на 2112 групп, каждая группа состоит из 216 ключей. Для каждой группы используется уникальный базовый ключ K[0,0], используемый для вычисления. Данный ключ имеет следующий вид:

[00]

Оставшиеся 14 байт (112 бит) заполняются последовательно. Таким образом получается 2112 уникальных базовых ключей; по одному на каждую группу ключей.
Обычно 216 ключей в каждой группе выбираются в соответствии с базовым ключом группы. Они отличаются только 2 байтами (либо из i, либо из j) из представленных ниже 4 байт:

[iijj]

Таким образом, получается28K[i,0] и 28K[0,j], что в сумме даёт 216 различных ключей, K[i,j].

Построение графа

Полный двудольный граф размером 2112 строится так, как это указано в разделе "Построение полного двудольного графа".

Атака посредника

Как только граф построен, можно начинать атаку посредника. До начала атаки 2d состояний из открытого текста:
PiK[i,0]vi,
2d состояний из шифротекста:
vjK[0,j]Sj,
и соответствующие состояния и множества ключей K[i,0] или K[0,j] уже посчитаны.

Теперь можно начинать атаку посредника. Чтобы проверить ключ K[i,j], необходимо только пересчитать части шифра, который будет лежать между значениями PiK[i,0]vi и PiK[i,j]vi. Для обратных вычислений с Sj к vj, необходимо пересчитать только 4 S-блока. Для дальнейших вычислений с Pi к vi, всего 3 S-блока.

Когда состояния совпадут, ключ-кандидат K[i,j], принимающий значения от Pi до Sj найден. Далее этот ключ тестируется на другой паре открытый-/шифротекст

Результаты

Эта атака позволяет уменьшить сложность вычислений для взлома AES128 до 2126.18, что в свою очередь в 3-5 раз быстрее метода полного перебора.

Примечания

Шаблон:Примечания

Литература