Криптоанализ ГОСТ 28147-89

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Криптоанализ ГОСТа 28147-89»)
Перейти к навигации Перейти к поиску

Криптоанализ ГОСТ 28147-89

Криптоалгоритм ГОСТ 28147-89 был разработан на начальном этапе развития блочного шифрования спецслужбами СССР. Алгоритм не был запатентован, поэтому может быть бесплатно использован в коммерческих приложениях[1]

Чтобы передать данные, их разбивают на блоки. Каждый состоит из 64 бит. Чтобы их зашифровать, необходимо использовать ключ большего размера. Используется ключ размером 256 бит. Для шифрования реализуется классическая сеть Фейстеля, состоящая из 32 раундов с двумя ветвями.

Раунды получаются из разбиения 256 бит ключа на 8 групп по 32 бита. Части ключа применяются в прямом порядке 4 раза. Для дешифрования используется тот же код, но в обратном порядке. Данный процесс называется схемой развертывания ключа.

Чтобы зашифровать текст, необходимо разбить его на левую и правую половину. На -м этапе используется часть ключа:

Функция состоит в следующем : и складываются по модулю Результат делится на 8 частей по 4 бита каждый. Затем каждая часть поступает в свой -блок (перестановка чисел от 0 до 15). Выходная последовательность объединяется в 32-битное слово и сдвигается на 11 битов влево. Результат с помощью XOR объединяется с левой половиной, получается новая правая половина. Так повторяется 32 раза. В этом заключается криптоалгоритм ГОСТ 28147-89.

Краткий обзор криптоатак[править | править код]

Название работы Количество раундов ГОСТ Количество текста (ОТ — открытого, СПТ — специально подобранного) Вычислительная сложность
Атака скольжения на модифицированный ГОСТ[2] 20() (ОТ)
Метод рационального продолжения[3] 32 несколько десятков(СПТ)
1R атака на связанных ключах[4] 32 (СПТ)
Улучшенная атака скольжения[5] 24 (ОТ)
Атаки О. Кара[6] 30 (СПТ)
Атака методом бумеранга[7] 32 пар открытого/зашифрованного текста
Атаки Исобе[8] 32 (ОТ)
Атаки Динура-Данкельмана-Шамира[9] 32 (ОТ)
Атаки Динура-Данкельмана-Шамира[9] 8 (ОТ)
Атака на шифросистему с 12 связанными ключам[10] 8 от до (СПТ)
Алгебраический анализ[11] 32 (ОТ)

Атаки на схему развертывания ключа[править | править код]

4R атака на 24-раундовый ГОСТ[править | править код]

В работе[1] применяется атака на связанных ключах. Атакующий использует парадокс дней рождений, чтобы найти пары для скольжения такие, что . Шифротексты также сохранят зависимость: . Такая атака может быть проведена только при условии, что могут быть взломаны с помощью двух известных пар текста, что случается не всегда.

Используется тройка однораундовых характеристик , не длиннее 4 бит, где каждая характеристика проходит через один активный блок. В входной отличительный признак находится в старших битах. В в младших битах выходной отличительный признак отсутствует, получено с помощью функции сети Фейстеля из . Далее выходной отличительный признак сдвигается раундовой функцией на 11 бит. Три ненулевых бита из попадают на вход активного -блока второго раунда, получаем . Теперь входной отличительный признак отсутствует в трех старших битах, и мы можем получить из . То есть за счет сдвига отличительные признаки остались на тех же местах, что и были в первом раунде.

Авторы атаки подсчитали вероятность нахождения таких зависимостей для 12-раундов стандартного набора -блоков. Она равна , что недостаточно для взлома криптосистемы. В случае вероятностной генерации блоков, вероятность появления таких зависимостей варьировалась от до .

Атака скольжения на модифицированный ГОСТ[править | править код]

В работе[2] была произведена атака скольжения, не зависящая от числа раундов, на модифицированный ГОСТ 28147-89. Вместо сложения с ключом использовалась операция исключающего или. С помощью предложенной атаки можно вскрыть только алгоритмы, раунды которых обладают существенным сходством. Имея две пары текстов, связанные между собой лишь одним раундом шифрования, криптоаналитик способен получить значение ключа для любого раунда.

Авторы доказали необходимость введения с 24 раунда обратного хода ключа для ГОСТ 28147-89, чтобы криптоалгоритм противостоял атакам скольжения. В случае, если вместо сложения с ключом используется операция исключающего или будет найдено порядка слабых ключей.

Для 20-раундового ГОСТ 28147-89() используется следующий ключ K4 K5 K6 K7 K0 K1 K2 K3 K4 K5 K6 K7 K7 K6 K5 K4 K3 K2 K1 K0 K0 K1 K2 K3 K4 K5 K6 K7 K7 K6 K5 K4 K3 K2 K1 K0 K7 K6 K5 K4. Пусть провели 4 раунда ГОСТ 28147-89, тогда используя открытых текстов, авторы ожидали найти две пары для скольжения . Свойство пары: . Каждая пара дала бы две входные/выходные пары для поиска . Как только найдена пара, шифр взломан из-за уязвимости для атаки с известным открытым текстом. Взлом по двум текстам сравним с временем выполнения 4 раундов ГОСТ 28147-89 раза. После нахождения K4 K5 K6 K7 ищутся оставшиеся подключи с помощью поиска фиксированных точек. Предложенная атака, потребовавшая открытых текстов, времени и памяти, работает для любых -блоков, но затраты памяти делают её не реализуемой.

1R атака на связанных ключах[править | править код]

Специалисты из Кореи предложили атаку с помощью которой, используя дифференциальный криптоанализ на связанных ключах, можно получить с вероятностью 91,7 % 12 бит секретного ключа[4]. Для атаки требуется выбранных открытых текстов и операций шифрования.

Возможность нахождения дифференциальных характеристик зависит не только от входных-выходных зависимостей, но и от подключей. Чтобы уменьшить данный эффект были выбраны специфические дифференциальные характеристики.

Предлагается атака распознавания ГОСТ 28147-89 от случайной последовательности (вероятность успеха ). Пусть дан открытый текст и ключ и открытый текст и ключ . Сам ключ не известен, но известно соотношение . Для ГОСТ 28147-89 сохранится зависимость и в шифротексте для любого раунда. Для произвольной же последовательности после каждого раунда мы не сможем предсказать зависимости. Так можно отличать ГОСТ 28147-89 от произвольного алгоритма с вероятностью .

Для атаки на 31-раундовый ГОСТ 28147-89 были использованы следующие зависимости у ключей : , шифротексты и . Данная зависимость сохранялась 24 раунда. Для следующих 6 раундов используются вероятностные зависимости между отличительными признаками. С вероятностью можно будет атаковать криптосистему, зная зависимость между двумя ключами. Создатели статьи смогли восстановить 32 бита ключа с 97,9 % успеха.

Был предложен алгоритм атаки на полный ГОСТ 28147-89 с успешным открытием 12 бит ключа. Пусть и с ключами и . Тогда после каждого раунда зависимость исчезнет с вероятностью . Вероятность создания 30 раундовой дифференциальной характеристики равна . Вероятность успешности такой атаки 0,917.

Улучшенная атака скольжения[править | править код]

Были опробованы улучшенные атаки скольжения на 24 раунда ГОСТ 28147-89[5], основанные на слабостях алгоритма развертывания ключа и раундовой функции. Они существенно уменьшают время, необходимое на атаку. Однако так атаковать можно только 24-раундовый ГОСТ 28147-89 со слабыми ключами и неизвестными -блоками, либо 30-раундовый ГОСТ 28147-89 с известными -блоками.

Авторы вместо поиска пар для скольжения с помощью парадокса дней рождения используют циклическую структуру функции продолжения ключа и круговых функций. Найденные пары могут быть использованы в атаке с известным открытым текстом или, если достаточно пар найдено, — в атаке с избранным открытым текстом. Атака на выполняется только один раз, вне зависимости от свойств .

Атака начинается с открытого текста . Шифрование повторяется пока не будет снова получен . Когда это произошло — мы нашли цикл, кроме того, он не зависит ни от , ни от его длины. Найденные пары для скольжения — это и , где  — процедура расширения ключа. Для случайной величины матожидание длины цикла , поэтому авторы и находили пар для скольжения. Учитывая независимость длины циклов друг от друга, после атак вероятность успеха была равна , где  — функция Эйлера,  : .

Атаки на алгоритм шифрования[править | править код]

Метод рационального продолжения[править | править код]

Ростовцев предложил следующий метод[3]. В основе лежит продолжение кольца (многочленов Жегалкина)на упорядоченное множество рациональных чисел с евклидовым нормированием и на множество целых 2-адических чисел с 2-адическим неевклидовым нормированием. Это позволяет задать метрику для подсчета расстояния между тестируемым ключом и истинным. Криптоанализ построен на поиске локального максимума продолженной целевой функции в предположении, что истинное значение ключа дает увеличение продолженной целевой функции.

Метод состоит из нескольких этапов. На первом этапе для каждого бита ключа составляется статистический «нулевой и единичный портреты шифра» при некоторых приближениях. На втором этапе для неизвестного ключа составляется аналогичный «портрет». Далее решается задача определения, на какой (нулевой или единичный) «портрет» он больше похож. Данный метод позволяет строить статистику на основе нескольких открытых текстов.

В основе лежит предположение: вероятность правильного вскрытия бита ключа превышает 0,5 и не зависит от вида разреженных открытых текстов. В этом случае сложность криптоанализа определяется первыми двумя этапами и практически не превышает . Тогда ключ ГОСТ 28147-89 может быть вскрыт с малой сложностью на основе нескольких десятков подобранных открытых текстов.

Атаки О. Кара[править | править код]

Были изданы две работы O. Кара[6] об атаке на ГОСТ 28147-89, обладающей особыми свойствами ключей, и на 30-раундовый ГОСТ 28147-89. Используется предположение биективности -блоков, зависимости между шифрованием и расшифрованием данных.

Запишем алгоритм ГОСТ 28147-89 в следующем виде: , где  — инвертированная ,  — операция замены. Пусть существует фиксированная точка такая, что и . Таких ключей штук. Тогда  — фиксированная точка и для функции . Атака будет следующая: зашифруем текста, чьи левые и правые части одинаковые. Соберем все фиксированные точки в массив . Если массив пуст, то атаку провести нельзя. Иначе решим выражение для всех из для . Таких решений найдется штук. Для каждого предполагаем и затем определяем и из системы, учитывающей биективность и . Ищем обратные функции от и , определяем входные данные, а затем и и .

Вторая предложенная атака — это атака с открытым ключом на 30-раундовый ГОСТ 28147-89. Функция шифрования выглядит следующим образом . У имеется фиксированных точек, тогда по доказанной О. Кара лемме у тоже . Пусть  — одна из фиксированных точек,  — соответствующий открытый текст. Имеем . Предположив значения , мы получим двух раундовую сеть Фейстеля с ключами и входной/выходной парой . Тогда восстановим и путём обращения круговой функции. Искомый ключ будет одним из вариантов.

Атака методом бумеранга[править | править код]

В работе[12] приведена атака на алгоритм блочного шифрования ГОСТ 28147-89 на основе метода бумеранга со связанными ключами, которая содержит ряд ошибок и на самом деле не работает. Однако основная идея работы позволяет подправить атаку и, внеся дополнительные модификации, получить работающий алгоритм.

В работе[7] проведен разбор[12], показано, что предложенная атака не быстрее полного перебора. Так же Рудской предлагает новую атаку. Для нахождения всего ключа шифрования при использовании -блоков требуется 18 связанных ключей и проводится зашифрований. Однако есть ряд случаев, к которым эти результаты неприменимы. Если подстановка s8 обладает линейным транслятором, то невозможно различить истинные биты ключа от ложных с помощью представленного в работе различителя. Также данный различитель не позволяет найти раундовые ключи 25- и 26-го раундов. Тем самым определяются только 192 бита ключа шифрования. Для этого требуется 14 связанных ключей.

Атака методом бумеранга состоит из двух шагов — различительного и восстановительного. В процессе различительного шага атакующий ищет правильные пары открытого текста, чтобы разница между ними была и (4 текста). Далее делается попытка, используя известные соотношения между входными и выходными различиями найденных пар, восстановить некоторые ключевые биты. Для атаки предположим, что атакующий может шифровать и расшифровывать любой нужный ему текст с помощью ключа, чью разницу с другим известным ему ключом он может установить. ГОСТ 28147-89 представляется в виде , где представляет первые 24 раунда,  — оставшиеся. Известны следующие зависимости между ключами : для и для . Используя дифференциальные характеристики, восстанавливаются все биты ключа.

Атаки Исобе и Динура-Данкельмана-Шамира[править | править код]

Общая идея атак Исобе[8] и Динура-Данкельмана-Шамира[9] заключается в построении для зависящего от ключа узкого множества открытых текстов эквивалентного на этом множестве преобразования, имеющего более простую, чем само шифрующее преобразование, структуру. При попадании открытого текста в это множество результат полного 32-раундового преобразования ГОСТ 28147-89 совпадает с результатом 16-раундового, что и эксплуатируется автором атаки. Для всякого открытого текста из этого множества преобразование ГОСТ 28147-89 работает в точности так же, как последние его 8 раундов, что и упрощает анализ.

Трудоемкость атаки Исобе составляет операций зашифрования, атаки Динура-Данкельмана-Шамира — . Для метода Исобе требуется пар открытых и шифрованных текстов, а для метода ДДШ — . Обработка таких объемов материала без смены ключа априорно неприемлема для любого блочного шифра с длиной блока 64.

Атаки Куртуа[править | править код]

Куртуа[13] использует несколько модифицированный вариант дифференциального метода. В работе приводятся дифференциальные характеристики для малого числа раундов. Однако такая атака оказывается не лучше полного перебора.

Атака на шифросистему с 12 связанными ключами[править | править код]

Пудовкина М.А. совместно с Г. И. Хоруженко провели атаку на шифросистему с 12 связанными ключами[10]. Она основана на комбинации методов бумеранга и связанных ключей и для произвольного -блока позволяет найти все 256 бит ключа шифрования. В ряде случаев ключ шифрования может быть найден на ЭВМ за приемлемое время. Число связанных ключей зависит от (вероятностных) свойств -блока. Недостатком атаки является её применимость только к некоторому множеству -блоков.

Далее была проведена модификация атаки, позволяющая восстановить весь ключ шифрования с 12 связанными ключами для произвольного -блока[14]. При наличии линейного транслятора для его нахождения используется модификация различителя. Для восстановления раундовых ключей 25- и 26-го раундов применяется разностная характеристика. Предложенный способ нахождения ключа шифрования состоит из двух этапов. На первом этапе методом бумеранга со связанными ключами определяются множества кандидатов в раундовые ключи 32- и 31-го раундов, используя четверку связанных ключей. На втором этапе находятся множества кандидатов в раундовые ключи 30, 29, …, 25-го раундов разностным методом со связанными ключами. Каждый из этапов предполагает наличие двух модификаций в зависимости от свойств подстановки (подключ).

Алгебраический анализ[править | править код]

В 2014 году вышла в свет работа[11], Бабенко Л. К. и Маро Е. А. провели алгебраический анализ ГОСТ 28147-89, получили системы уравнений для различных размеров таблиц нелинейных преобразований замены упрощенного алгоритма шифрования ГОСТ 28147-89, решили одну из систем методом XSL. Был проведен анализ полученных нелинейных систем и выполнена оценка трудоемкости метода XSL алгебраического криптоанализа для восьми блоков замены. Для алгоритма ГОСТ 28147-89 вычисление блоков замены потребовало выполнения не более операций зашифрования для однозначного определения блоков.

Поскольку сложность анализа во многом зависит от числа анализируемых раундов, то используется метод сокращения числа раундов. Если на входе 25 раунда левая и правая части входного значения будут равны, то в последних восьми раундах будет выполнено расшифрование предыдущих восьми раундов. Таким образом, атака с выбранным открытым текстом методом дифференциального или алгебраического анализа будет выполняться всего над 16 раундами вместо 32. Авторами работы предлагается алгоритм поиска таких текстов. Среди открытых текстов были найдены 69 текстов, удовлетворяющих условиям поиска.

Примечания[править | править код]

  1. 1 2 J. Kelsey, B. Schneier, D. Wagner Key Schedule Cryptanalysis of IDEA,G-DES, GOST, SAFER, and Triple-DES. — Advances in Cryptology — CRYPTO’96, volume 1109 of Lecture Notes of Computer Science, Springer-Verlag. — 1996. — pp. 237—251. 300, 303
  2. 1 2 Alex Biryukov and David Wagner Advanced Slide Attacks. — Applied Mathematics Department Technion — Israel Institute of Technology Haifa. — 2000
  3. 1 2 Ростовцев А. Г., Маховенко Е. Б., Филиппов А.С, Чечулин А.А О стойкости ГОСТ 28147-89. — СПбГПУ. — 2001
  4. 1 2 Ko Y., Hong S., Lee W., Lee S., Kang J S Related Key Differential Attacks on 27 Rounds of XTEA and Full-Round GOST. — Springer, Heidelberg. — 2004. — pp. 299—316
  5. 1 2 Biham E., Dunkelman O., Keller N. Improved slide attacks. — FSE-2007, Lect. Notes Comput. Sci. — 2007. — 153—166
  6. 1 2 Kara O. Reflection cryptanalysis of some ciphers. — INDOCRYPT-2008, Lect. Notes Comput. Sci., 5365. — 2008. — 294—307
  7. 1 2 Rudskoy V. On zero rractical significance of key recovery attack on full GOST block cipher with zero time and memory. — 2010
  8. 1 2 Isobe T. A single-key attack on the full GOST block cipher. — FSE-2011, Lect. Notes Comput. Sci., 6733, 2011. — 290—305
  9. 1 2 3 Dinur I., O. Dunkelman, A. Shamir Improved Attacks on Full GOST. — FSE 2012, LNCS 7549. — pp. 9-28
  10. 1 2 Pudovkina M., Khoruzhenko G. Related-key attacks on the full GOST block cipher with two or four related keys. — BulCrypt-2012, Sofia. — 2012 . — 107—127
  11. 1 2 Babenko L.K., Maro E.A. Algebraic Cryptanalysis of GOST Encryption Algorithm. — SECTION IV. METHODS AND MEANS OF CRYPTOGRAPHY AND STEGANOGRAPHY. — 2014
  12. 1 2 Fleischmann E., Gorski M., Huhne J.-H., Lucks S. Key recovery attack on full GOST block cipher with zero time and memory. — WEWoRC. — 2009
  13. Courtois N. Security Evaluation of GOST 28147-89 In View Of International Standardisation Архивная копия от 19 августа 2012 на Wayback Machine. — Cryptology ePrint Archive. — 2011
  14. Пудовкина М., Хоруженко Г. Атака на шифрсистему ГОСТ 28147-89 с 12 связанными ключами Архивная копия от 16 августа 2016 на Wayback Machine // Матем. вопр. криптогр. — 2013. — с. 127—152

Литература[править | править код]

  • Панасенко Сергей Петрович. 3.1. Алгоритм ГОСТ 28147-89 § Криптойкость алгоритма // Алгоритмы шифрования. Специальный справочник. — БХВ-Петербург, 2009. — С. 79-82. — 564 с. — ISBN 9785977503198.

Ссылки[править | править код]