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

редактировать
Эта статья посвящена процессу оптимизации криптоанализа. Чтобы узнать о форме перехвата связи, см. Атака «Человек посередине».

Встречаются в-середины атака ( MITM), известная открытый текст атака, является общим пространственно-временный компромисс криптографической атакой против схем шифрования, которые полагаются на выполнение нескольких операций шифрования в последовательности. Атака MITM является основной причиной того, почему двойной DES не используется и почему ключ тройного DES (168-битный) может быть взломан злоумышленником с 2 56 пробелами и 2 112 операциями.

СОДЕРЖАНИЕ
  • 1 Описание
  • 2 История
  • 3 Встреча посередине (1D-MITM)
    • 3.1 Алгоритм MITM
    • 3.2 Сложность MITM
  • 4 Многомерный MITM (MD-MITM)
    • 4.1 Алгоритм MD-MITM
    • 4.2 Сложность МД-МИТМ
  • 5 Общий пример 2D-MITM
    • 5.1 2D-MITM алгоритм
    • 5.2 2D-MITM сложность
  • 6 Смотрите также
  • 7 использованная литература
Описание

При попытке повысить безопасность блочного шифра возникает соблазнительная идея - зашифровать данные несколько раз с использованием нескольких ключей. Можно подумать, что это удваивает или даже n- кратно увеличивает безопасность схемы множественного шифрования, в зависимости от того, сколько раз данные шифруются, потому что исчерпывающий поиск по всем возможным комбинациям ключей (простой перебор) потребует 2 n K попыток, если данные зашифрованы k- битными ключами n раз.

MITM - это обычная атака, которая ослабляет преимущества безопасности от использования нескольких шифров, сохраняя промежуточные значения из шифров или дешифрования и используя их для сокращения времени, необходимого для перебора ключей дешифрования. Это делает атаку Meet-in-the-Middle (MITM) типичной криптографической атакой на основе пространственно-временного компромисса.

Атака MITM пытается найти ключи, используя как диапазон (зашифрованный текст), так и домен (открытый текст) композиции нескольких функций (или блочных шифров), так что прямое отображение через первые функции такое же, как обратное отображение (обратное image) через последние функции, буквально встречающиеся в середине скомпонованной функции. Например, хотя Double DES шифрует данные двумя разными 56-битными ключами, Double DES можно взломать с помощью 2 57 операций шифрования и дешифрования.

Многомерный MITM (MD-MITM) использует комбинацию нескольких одновременных атак MITM, как описано выше, где встреча происходит в нескольких позициях в составной функции.

История

Диффи и Хеллман впервые предложили атаку "встречу посередине" на гипотетическое расширение блочного шифра в 1977 году. Их атака использовала пространственно-временной компромисс, чтобы взломать схему двойного шифрования всего за вдвое больше времени, необходимого для взлома единственного шифра. -схема шифрования.

В 2011 году Бо Чжу и Гуан Гун исследовали многомерную атаку «встречу посередине» и представили новые атаки на блочные шифры ГОСТ, KTANTAN и Hummingbird-2.

Встреча посередине (1D-MITM)

Предположим, кто-то хочет атаковать схему шифрования со следующими характеристиками для данного открытого текста P и зашифрованного текста C:

C знак равно E N C k 2 ( E N C k 1 ( п ) ) п знак равно D E C k 1 ( D E C k 2 ( C ) ) {\ displaystyle {\ begin {align} C amp; = {\ mathit {ENC}} _ ​​{k_ {2}} ({\ mathit {ENC}} _ ​​{k_ {1}} (P)) \\ P amp; = {\ mathit {DEC}} _ ​​{k_ {1}} ({\ mathit {DEC}} _ ​​{k_ {2}} (C)) \\\ конец {выровнено}}}

где ENC - функция шифрования, DEC - функция дешифрования, определенная как ENC -1 (обратное отображение), а k 1 и k 2 - два ключа.

Наивный подход к брутфорсу этой схемы шифрования состоит в том, чтобы расшифровать зашифрованный текст со всеми возможными k 2 и расшифровать каждый из промежуточных выходов со всеми возможными k 1, всего 2 k 1 × 2 k 2 (или 2 k 1 + k 2) операции.

Атака встречи посередине использует более эффективный подход. Расшифровывая C с помощью k 2, получаем следующую эквивалентность:

C знак равно E N C k 2 ( E N C k 1 ( п ) ) D E C k 2 ( C ) знак равно D E C k 2 ( E N C k 2 [ E N C k 1 ( п ) ] ) D E C k 2 ( C ) знак равно E N C k 1 ( п ) {\ displaystyle {\ begin {align} C amp; = {\ mathit {ENC}} _ ​​{k_ {2}} ({\ mathit {ENC}} _ ​​{k_ {1}} (P)) \\ {\ mathit { DEC}} _ ​​{k_ {2}} (C) amp; = {\ mathit {DEC}} _ ​​{k_ {2}} ({\ mathit {ENC}} _ ​​{k_ {2}} [{\ mathit {ENC }} _ {k_ {1}} (P)]) \\ {\ mathit {DEC}} _ ​​{k_ {2}} (C) amp; = {\ mathit {ENC}} _ ​​{k_ {1}} ( P) \\\ конец {выровнен}}}

Атакующий может вычислить ENC k 1 ( P) для всех значений k 1 и DEC k 2 ( C) для всех возможных значений k 2, всего 2 k 1 + 2 k 2 (или 2 k 1 +1, если k 1 и k 2 имеют одинаковый размер) операций. Если результат любой из операций ENC k 1 ( P) совпадает с результатом операций DEC k 2 ( C), пара из k 1 и k 2, возможно, является правильным ключом. Этот потенциально правильный ключ называется ключом-кандидатом. Злоумышленник может определить, какой ключ-кандидат правильный, проверив его с помощью второго тестового набора открытого текста и зашифрованного текста.

Атака MITM - одна из причин, по которой стандарт шифрования данных (DES) был заменен тройным DES, а не двойным DES. Злоумышленник может использовать атаку MITM для перебора двойного DES с 2 57 операциями и 2 56 пространством, что делает его лишь небольшим улучшением по сравнению с DES. Тройной DES использует ключ «тройной длины» (168-бит) и также уязвим для атаки «встреча посередине» в 2 56 пространствах и 2 112 операциях, но считается безопасным из-за размера своего пространства ключей.

Иллюстрация атаки 1D-MITM

Алгоритм MITM

Вычислите следующее:

  • S ты б C я п час е р 1 знак равно E N C ж 1 ( k ж 1 , п ) , k ж 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {ENC}} _ ​​{f_ {1}} (k_ {f_ {1}}, P), \; \ forall k_ {f_ {1 }}\чернила}:
    и сохраним каждую вместе с соответствующими в наборе A S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} k ж 1 {\ displaystyle k_ {f_ {1}}}
  • S ты б C я п час е р 1 знак равно D E C б 1 ( k б 1 , C ) , k б 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {DEC}} _ ​​{b_ {1}} (k_ {b_ {1}}, C), \; \ forall k_ {b_ {1 }}\чернила}:
    и сравниваем каждую новую с множеством A S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}}

Когда обнаруживается совпадение, держать в качестве кандидата ключа пары в таблице T. Проверьте пары в T на новой паре, чтобы подтвердить достоверность. Если пара ключей не работает с этой новой парой, выполните MITM еще раз с новой парой. k ж 1 , k б 1 {\ displaystyle k_ {f_ {1}}, k_ {b_ {1}}} ( п , C ) {\ displaystyle (P, C)} ( п , C ) {\ displaystyle (P, C)}

Сложность MITM

Если размер ключа равен k, эта атака использует только 2 k +1 шифрования (и дешифрования) и память O (2 k) для хранения результатов прямых вычислений в таблице поиска, в отличие от простой атаки, для которой требуется 2 2 K шифров, но O (1) пробел.

Многомерный MITM (MD-MITM)

Хотя 1D-MITM может быть эффективным, была разработана более изощренная атака: многомерная атака встречей посередине, также сокращенно MD-MITM. Это предпочтительнее, если данные были зашифрованы с использованием более чем двух способов шифрования с разными ключами. Вместо того, чтобы встречаться посередине (одно место в последовательности), атака MD-MITM пытается достичь нескольких определенных промежуточных состояний, используя прямые и обратные вычисления в нескольких позициях шифра.

Предположим, что атака должна быть установлена ​​на блочном шифре, где шифрование и дешифрование определены, как и раньше:

C знак равно E N C k п ( E N C k п - 1 ( . . . ( E N C k 1 ( п ) ) . . . ) ) {\ displaystyle C = {\ mathit {ENC}} _ ​​{k_ {n}} ({\ mathit {ENC}} _ ​​{k_ {n-1}} (... ({\ mathit {ENC}} _ ​​{ k_ {1}} (P))...))}
п знак равно D E C k 1 ( D E C k 2 ( . . . ( D E C k п ( C ) ) . . . ) ) {\ displaystyle P = {\ mathit {DEC}} _ ​​{k_ {1}} ({\ mathit {DEC}} _ ​​{k_ {2}} (... ({\ mathit {DEC}} _ ​​{k_ { n}} (C))...))}

то есть открытый текст P зашифрован несколько раз с использованием повторения одного и того же блочного шифра

Иллюстрация атаки MD-MITM

MD-MITM использовался для криптоанализа, среди многих, блочного шифра ГОСТ, где было показано, что 3D-MITM значительно снизил временную сложность для атаки на него.

Алгоритм MD-MITM

Вычислите следующее:

S ты б C я п час е р 1 знак равно E N C ж 1 ( k ж 1 , п ) k ж 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {ENC}} _ ​​{f_ {1}} (k_ {f_ {1}}, P) \ qquad \ forall k_ {f_ {1} }\чернила}
и сохраните каждый вместе с соответствующим в наборе. S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} k ж 1 {\ displaystyle k_ {f_ {1}}} ЧАС 1 {\ displaystyle H_ {1}}
S ты б C я п час е р п + 1 знак равно D E C б п + 1 ( k б п + 1 , C ) k б п + 1 K {\ displaystyle {\ mathit {SubCipher}} _ {n + 1} = {\ mathit {DEC}} _ ​​{b_ {n + 1}} (k_ {b_ {n + 1}}, C) \ qquad \ forall k_ {b_ {n + 1}} \ in K}
и сохраните каждый вместе с соответствующим в наборе. S ты б C я п час е р п + 1 {\ displaystyle {\ mathit {SubCipher}} _ {n + 1}} k б п + 1 {\ displaystyle k_ {b_ {n + 1}}} ЧАС п + 1 {\ displaystyle H_ {n + 1}}

Для каждого возможного предположения о промежуточном состоянии вычислите следующее: s 1 {\ displaystyle s_ {1}}

S ты б C я п час е р 1 знак равно D E C б 1 ( k б 1 , s 1 ) k б 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {DEC}} _ ​​{b_ {1}} (k_ {b_ {1}}, s_ {1}) \ qquad \ forall k_ {b_ {1}} \ in K}
и для каждого совпадения между этим и набором сохраняйте и в новом наборе. S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} ЧАС 1 {\ displaystyle H_ {1}} k б 1 {\ displaystyle k_ {b_ {1}}} k ж 1 {\ displaystyle k_ {f_ {1}}} Т 1 {\ displaystyle T_ {1}}
S ты б C я п час е р 2 знак равно E N C ж 2 ( k ж 2 , s 1 ) k ж 2 K {\ displaystyle {\ mathit {SubCipher}} _ {2} = {\ mathit {ENC}} _ ​​{f_ {2}} (k_ {f_ {2}}, s_ {1}) \ qquad \ forall k_ {f_ {2}} \ in K}
и сохраните каждый вместе с соответствующим в наборе. S ты б C я п час е р 2 {\ displaystyle {\ mathit {SubCipher}} _ {2}} k ж 2 {\ displaystyle k_ {f_ {2}}} ЧАС 2 {\ displaystyle H_ {2}}
Для каждого возможного предположения о промежуточном состоянии вычислите следующее: s 2 {\ displaystyle s_ {2}}
  • S ты б C я п час е р 2 знак равно D E C б 2 ( k б 2 , s 2 ) k б 2 K {\ displaystyle {\ mathit {SubCipher}} _ {2} = {\ mathit {DEC}} _ ​​{b_ {2}} (k_ {b_ {2}}, s_ {2}) \ qquad \ forall k_ {b_ {2}} \ in K}
    и для каждого совпадения между этим и множеством проверьте также, S ты б C я п час е р 2 {\ displaystyle {\ mathit {SubCipher}} _ {2}} ЧАС 2 {\ displaystyle H_ {2}}
    он совпадает с и затем сохраняет комбинацию подключей вместе в новом наборе. Т 1 {\ displaystyle T_ {1}} Т 2 {\ displaystyle T_ {2}}
  • Для каждого возможного предположения о промежуточном состоянии вычислите следующее: s п {\ displaystyle s_ {n}}
  1. S ты б C я п час е р п знак равно D E C б п ( k б п , s п ) k б п K {\ displaystyle {\ mathit {SubCipher}} _ {n} = {\ mathit {DEC}} _ ​​{b_ {n}} (k_ {b_ {n}}, s_ {n}) \ qquad \ forall k_ {b_ {n}} \ in K}и для каждого совпадения между этим и набором также проверяйте, совпадает ли он с новым набором, сохраняется и в нем. S ты б C я п час е р п {\ displaystyle {\ mathit {SubCipher}} _ {n}} ЧАС п {\ displaystyle H_ {n}} Т п - 1 {\ displaystyle T_ {n-1}} k б п {\ displaystyle k_ {b_ {n}}} k ж п {\ displaystyle k_ {f_ {n}}} Т п {\ displaystyle T_ {n}}
  2. S ты б C я п час е р п + 1 знак равно E N C ж п + 1 ( k ж п + 1 , s п ) k ж п + 1 K {\ displaystyle {\ mathit {SubCipher}} _ {n + 1} = {\ mathit {ENC}} _ ​​{f_ {n} +1} (k_ {f_ {n} +1}, s_ {n}) \ qquad \ forall k_ {f_ {n + 1}} \ in K}и для каждого совпадения между этим и набором проверьте также S ты б C я п час е р п + 1 {\ displaystyle {\ mathit {SubCipher}} _ {n + 1}} ЧАС п + 1 {\ displaystyle H_ {n + 1}}

совпадает ли он с. Если это так, то: " Т п {\ displaystyle T_ {n}}

Используйте найденную комбинацию подключей на другой паре открытый текст / зашифрованный текст, чтобы проверить правильность ключа. ( k ж 1 , k б 1 , k ж 2 , k б 2 , . . . , k ж п + 1 , k б п + 1 ) {\ displaystyle (k_ {f_ {1}}, k_ {b_ {1}}, k_ {f_ {2}}, k_ {b_ {2}},..., k_ {f_ {n + 1}}, k_ {b_ {n + 1}})}

Обратите внимание на вложенный элемент в алгоритме. Предположение о каждом возможном значении s j выполняется для каждого предположения о предыдущем s j -1. Это составляет элемент экспоненциальной сложности по отношению к общей временной сложности этой атаки MD-MITM.

Сложность МД-МИТМ

Временная сложность этой атаки без грубой силы ⋅ ⋅ 2 | k ж 1 | + 2 | k б п + 1 | + 2 | s 1 | {\ displaystyle 2 ^ {| k_ {f_ {1}} |} + 2 ^ {| k_ {b_ {n + 1}} |} + 2 ^ {| s_ {1} |}} ( 2 | k б 1 | + 2 | k ж 2 | + 2 | s 2 | {\ displaystyle (2 ^ {| k_ {b_ {1}} |} + 2 ^ {| k_ {f_ {2}} |} + 2 ^ {| s_ {2} |}}) ( 2 | k б 2 | + 2 | k ж 3 | + ) ) {\ displaystyle (2 ^ {| k_ {b_ {2}} |} + 2 ^ {| k_ {f_ {3}} |} + \ cdots))}

Что касается сложности памяти, легко увидеть, что они намного меньше, чем первая построенная таблица значений-кандидатов: по мере увеличения i значения-кандидаты, содержащиеся в, должны удовлетворять большему количеству условий, поэтому меньшее количество кандидатов будет передано конечному адресату. Т 2 , Т 3 , . . . , Т п {\ displaystyle T_ {2}, T_ {3},..., T_ {n}} Т 1 {\ displaystyle T_ {1}} Т я {\ displaystyle T_ {i}} Т п {\ displaystyle T_ {n}}

Тогда верхняя граница сложности памяти MD-MITM равна

2 | k ж 1 | + 2 | k б п + 1 | + 2 | k | - | s п | {\ displaystyle 2 ^ {| k_ {f_ {1}} |} + 2 ^ {| k_ {b_ {n + 1}} |} + 2 ^ {| k | - | s_ {n} |} \ cdots}

где k обозначает длину всего ключа (вместе взятого).

Сложность данных зависит от вероятности того, что неверный ключ может пройти (получить ложное срабатывание), то есть, где l - промежуточное состояние в первой фазе MITM. Размер промежуточного состояния и размер блока часто совпадают! Учитывая также, сколько ключей осталось для тестирования после первой фазы MITM, это так. 1 / 2 | л | {\ displaystyle 1/2 ^ {| l |}} 2 | k | / 2 | л | {\ Displaystyle 2 ^ {| к |} / 2 ^ {| l |}}

Следовательно, после первой фазы MITM есть, где - размер блока. 2 | k | - б 2 - б знак равно 2 | k | - 2 б {\ displaystyle 2 ^ {| k | -b} \ cdot 2 ^ {- b} = 2 ^ {| k | -2b}} | б | {\ displaystyle | b |}

Каждый раз, когда окончательное значение-кандидат ключей проверяется на новой паре открытого текста / зашифрованного текста, количество ключей, которые пройдут, будет умножаться на вероятность того, что ключ может пройти. 1 / 2 | б | {\ displaystyle 1/2 ^ {| b |}}

Часть тестирования методом перебора (проверка ключа-кандидата на новых парах, имеет временную сложность, очевидно, для увеличения кратности b в экспоненте, число стремится к нулю. ( п , C ) {\ displaystyle (P, C)} 2 | k | - б + 2 | k | - 2 б + 2 | k | - 3 б + 2 | k | - 4 б {\ displaystyle 2 ^ {| k | -b} + 2 ^ {| k | -2b} + 2 ^ {| k | -3b} + 2 ^ {| k | -4b} \ cdots}

Заключение о сложности данных основано на аналогичных рассуждениях, ограниченных парами. | k | / п {\ Displaystyle \ lceil | к | / п \ rceil} ( п , C ) {\ displaystyle (P, C)}

Ниже приведен конкретный пример того, как монтируется 2D-MITM:

Общий пример 2D-MITM

Это общее описание того, как 2D-MITM устанавливается на шифрование блочного шифра.

В двумерном MITM (2D-MITM) метод заключается в достижении 2 промежуточных состояний внутри множественного шифрования открытого текста. См. Рисунок ниже:

Иллюстрация атаки 2D-MITM

2D-MITM алгоритм

Вычислите следующее:

S ты б C я п час е р 1 знак равно E N C ж 1 ( k ж 1 , п ) k ж 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {ENC}} _ ​​{f_ {1}} (k_ {f_ {1}}, P) \ qquad \ forall k_ {f_ {1} }\чернила}
и сохраним каждую вместе с соответствующими в наборе A S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} k ж 1 {\ displaystyle k_ {f_ {1}}}
S ты б C я п час е р 2 знак равно D E C б 2 ( k б 2 , C ) k б 2 K {\ displaystyle {\ mathit {SubCipher}} _ {2} = {\ mathit {DEC}} _ ​​{b_ {2}} (k_ {b_ {2}}, C) \ qquad \ forall k_ {b_ {2} }\чернила}
и сохраните каждую вместе с соответствующими в наборе B. S ты б C я п час е р 2 {\ displaystyle {\ mathit {SubCipher}} _ {2}} k б 2 {\ displaystyle k_ {b_ {2}}}

Для каждого возможного предположения о промежуточном состоянии s между и вычислить следующее: S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} S ты б C я п час е р 2 {\ displaystyle {\ mathit {SubCipher}} _ {2}}

  • S ты б C я п час е р 1 знак равно D E C б 1 ( k б 1 , s ) k б 1 K {\ displaystyle {\ mathit {SubCipher}} _ {1} = {\ mathit {DEC}} _ ​​{b_ {1}} (k_ {b_ {1}}, s) \ qquad \ forall k_ {b_ {1} }\чернила}
    и для каждого совпадения между этим и набором A сохраните и в новом наборе T. S ты б C я п час е р 1 {\ displaystyle {\ mathit {SubCipher}} _ {1}} k б 1 {\ displaystyle k_ {b_ {1}}} k ж 1 {\ displaystyle k_ {f_ {1}}}
  • S ты б C я п час е р 2 знак равно E N C ж 2 ( k ж 2 , s ) k ж 2 K {\ displaystyle {\ mathit {SubCipher}} _ {2} = {\ mathit {ENC}} _ ​​{f_ {2}} (k_ {f_ {2}}, s) \ qquad \ forall k_ {f_ {2} }\чернила}
    и для каждого совпадения между этим и набором B проверьте также, совпадает ли оно с T для S ты б C я п час е р 2 {\ displaystyle {\ mathit {SubCipher}} _ {2}}
    если это так, то:

Используйте найденную комбинацию подключей на другой паре открытый текст / зашифрованный текст, чтобы проверить правильность ключа. ( k ж 1 , k б 1 , k ж 2 , k б 2 ) {\ displaystyle (k_ {f_ {1}}, k_ {b_ {1}}, k_ {f_ {2}}, k_ {b_ {2}})}

2D-MITM сложность

Временная сложность этой атаки без грубой силы составляет

2 | k ж 1 | + 2 | k б 2 | + 2 | s | ( 2 | k б 1 | + 2 | k ж 2 | ) {\ displaystyle 2 ^ {| k_ {f_ {1}} |} + 2 ^ {| k_ {b_ {2}} |} + 2 ^ {| s |} \ cdot \ left (2 ^ {| k_ {b_) {1}} |} + 2 ^ {| k_ {f_ {2}} |} \ right)}

где | ⋅ | обозначает длину.

Потребление основной памяти ограничено построением наборов A и B, где T намного меньше других.

Информацию о сложности данных см. В подразделе о сложности MD-MITM.

Смотрите также
использованная литература
Последняя правка сделана 2024-01-02 04:56:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте