Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Алгоритмы решения задачи о
булевой выполнимости (SAT)
и их применение в
криптоанализе
Александр Семенов, ИДСТУ СО РАН
PHDa...
SAT
SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте
«Проблема выполнимости булевых формул» или «...
SAT
SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте
«Проблема выполнимости булевых формул» или «...
SAT
SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте
«Проблема выполнимости булевых формул» или «...
План доклада
1. Дискретные функции и задачи их обращения
2. Сведение задач обращения дискретных функций к
проблеме булевой...
Дискретные функции и задачи их обращения
Дискретная функция – это функция, которая преобразует двоичные слова в
двоичные с...
Дискретные функции и задачи их обращения
Функции, задаваемые автоматом и МТ-программой, могут получать на вход
двоичные сл...
Дискретные функции и задачи их обращения
Программы задают семейства дискретных функций вида
𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚
Далее мы...
Дискретные функции и задачи их обращения
Дополнительно полагаем, что на каждом входе рассматриваемая программа
останавлива...
Дискретные функции и задачи их обращения
Любую такую функцию можно задать в виде схемы из функциональных
элементов некотор...
Дискретные функции и задачи их обращения
Данной схеме можно сопоставить по определенным правилам (которые
называются преоб...
Дискретные функции и задачи их обращения
Пример КНФ:
𝐶𝐶 = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ...
Дискретные функции и задачи их обращения
Если КНФ выполнима, то обычно требуется найти хотя бы один ее
выполняющий набор (...
Дискретные функции и задачи их обращения
Если КНФ выполнима, то обычно требуется найти хотя бы один ее
выполняющий набор (...
Дискретные функции и задачи их обращения
Наибольшую известность SAT-подход приобрел при решении задач
символьной верификац...
Пример: верификация комбинационных схем
Даны две схемы, каждая из которых реализует булеву функцию вида
0,1 2 → 0,1 ,
кото...
Пример: верификация комбинационных схем
Мы сведем задачу доказательства эквивалентности этих двух схем к SAT. На
начальном...
Пример: верификация комбинационных схем
На следующем шаге по схеме 𝑆𝑆(𝑔𝑔 ⊕ ℎ) строится КНФ 𝐶𝐶(𝑔𝑔 ⊕ ℎ). Строится она за
лин...
Пример: верификация комбинационных схем
Затем каждую формулу из данного множества мы представляем в виде КНФ над
соответст...
Методы сведения к SAT
Из теоремы Кука-Левина следует, что любой тотальной дискретной функции
𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,
заданн...
Методы сведения к SAT
Из теоремы Кука-Левина следует, что любой тотальной дискретной функции
𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,
заданн...
Методы сведения к SAT
Из теоремы Кука-Левина следует, что любой тотальной дискретной функции
𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,
заданн...
Методы сведения к SAT
На практике для сведения к SAT можно использовать различные системы
автоматической трансляции.
Для с...
Генератор ключевого потока – дискретная
функция:
𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛
→ 0,1 ∗
𝑥𝑥 = 𝑥𝑥1, … , 𝑥𝑥𝑛𝑛 — входная (инициализирующая)
посл...
Пример. Кодирование A5/1 в SAT
define len 128;
__in bit regA[19];
__in bit regB[19];
__in bit regC[19];
__in out stream[le...
Другие примеры сведения комбинаторных
задач к SAT
Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Mod...
Другие примеры сведения комбинаторных
задач к SAT
Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Mod...
Другие примеры сведения комбинаторных
задач к SAT
Другие примеры сведения комбинаторных
задач к SAT
Основные алгоритмы решения SAT
Для решения задач символьной верификации до начала 2000-х
использовались двоичные диаграммы...
Основные алгоритмы решения SAT
Для решения задач символьной верификации до начала 2000-х
использовались двоичные диаграммы...
Основные алгоритмы решения SAT
Для решения задач символьной верификации до начала 2000-х
использовались двоичные диаграммы...
Алгоритмы DPLL и GRASP
Алгоритм DPLL – это итеративная процедура подстановки в КНФ значений
переменных с последующим «расп...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
Требуется определить выполнимость КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ...
Алгоритмы DPLL и GRASP
В результате приписывания конфликтного дизъюнкта получается следующая
КНФ:
С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ ...
Современные SAT-решатели на основе DPLL
Помимо бэкджампинга в современных SAT-решателях на основе DPLL
используются многоч...
Решение задач криптоанализа при помощи SAT
Задачи криптоанализа можно рассматривать как своего рода
вызов для существующих...
Криптоанализ А5/1 при помощи SAT
Криптоанализ А5/1. Данный генератор широко известен его использованием в
стандарте GSM дл...
Криптоанализ А5/1 при помощи SAT
Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст
потока). Из таких к...
Криптоанализ А5/1 при помощи SAT
Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст
потока). Из таких к...
Криптоанализ А5/1 при помощи SAT
Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст
потока). Из таких к...
Поиск коллизий хэш функций при помощи SAT
Алгоритмически вычислимые и определенные всюду на 0,1 ∗
функции вида
𝜒𝜒: 0,1 ∗ →...
Поиск коллизий хэш функций при помощи SAT
Одной из первых попыток в этом направлении можно считать статью:
Эту попытку нел...
Поиск коллизий хэш функций при помощи SAT
Одной из первых попыток в этом направлении можно считать статью:
Эту попытку нел...
Поиск коллизий хэш функций при помощи SAT
В работе:
Были построены новые кодировки с использованием Transalg и применены
д...
Поиск коллизий хэш функций при помощи SAT
Заключение
Современные алгоритмы решения задачи о булевой
выполнимости – весьма мощные комбинаторные алгоритмы с
широким с...
Спасибо за
внимание!
Upcoming SlideShare
Loading in …5
×

Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в криптоанализе

2,197 views

Published on

Алгоритмы решения задачи о
булевой выполнимости (SAT)
и их применение в
криптоанализе

Published in: Technology
  • Be the first to comment

Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в криптоанализе

  1. 1. Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в криптоанализе Александр Семенов, ИДСТУ СО РАН PHDays 2015
  2. 2. SAT SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости»
  3. 3. SAT SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости» Исходная формулировка: «По заданной булевой формуле (обычно в CNF - формате) требуется определить, является ли данная формула выполнимой»
  4. 4. SAT SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости» Исходная формулировка: «По заданной булевой формуле (обычно в CNF - формате) требуется определить, является ли данная формула выполнимой» Вопрос: причем здесь программирование или хотя бы прикладные аспекты Computer Science?
  5. 5. План доклада 1. Дискретные функции и задачи их обращения 2. Сведение задач обращения дискретных функций к проблеме булевой выполнимости SAT 3. Наиболее эффективные на практике алгоритмы решения SAT 4. Задачи криптоанализа как частные случаи SAT 5. Результаты некоторых вычислительных экспериментов
  6. 6. Дискретные функции и задачи их обращения Дискретная функция – это функция, которая преобразует двоичные слова в двоичные слова. 𝑓𝑓 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑥𝑥4 = 𝑥𝑥1 ⊕ 𝑥𝑥2 → 𝑥𝑥3 ∧ 𝑥𝑥4 𝑥𝑥1 𝑥𝑥2 ¬ ¬ ∧ ∧ ∨ 𝑥𝑥1 ⊕ 𝑥𝑥2 1. T 1,2 2. S(1) 3. S(3) 4. J(2,3,100) 5. T(1,2) 𝑥𝑥1 𝑥𝑥2 𝑓𝑓(𝑥𝑥1, 𝑥𝑥2) 0 0 0 0 1 1 1 0 1 1 1 0 0,1 2 {0,1} 00 01 10 11 0 1
  7. 7. Дискретные функции и задачи их обращения Функции, задаваемые автоматом и МТ-программой, могут получать на вход двоичные слова какой угодно длины – описания функций при этом остаются теми же. В данных конкретных случаях имеем функции вида 𝑓𝑓: 0,1 ∗ → {0,1} 0 1 ∅ 𝑞𝑞0 (𝑞𝑞0, 0, +1) (𝑞𝑞0, 1, +1) 𝑞𝑞1, ∅, −1 𝑞𝑞1 (𝑞𝑞2, 0, −1) (𝑞𝑞𝑁𝑁, 1,0) − 𝑞𝑞2 (𝑞𝑞𝑌𝑌,0,0) (𝑞𝑞𝑁𝑁, 1,0) (𝑞𝑞𝑁𝑁, ∅, 0) 𝑞𝑞0 𝑞𝑞1 𝑞𝑞2 0 0 0 1 1 1
  8. 8. Дискретные функции и задачи их обращения Программы задают семейства дискретных функций вида 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚 Далее мы будем рассматривать только такие функции.
  9. 9. Дискретные функции и задачи их обращения Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат. Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛. Программы задают семейства дискретных функций вида 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚 Далее мы будем рассматривать только такие функции.
  10. 10. Дискретные функции и задачи их обращения Любую такую функцию можно задать в виде схемы из функциональных элементов некоторого полного базиса, например, 𝐵𝐵0 = ∧,∨, ¬ . У такой схемы будет 𝑛𝑛 входов и 𝑚𝑚 выходов. Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат. Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛. Программы задают семейства дискретных функций вида 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚 Далее мы будем рассматривать только такие функции.
  11. 11. Дискретные функции и задачи их обращения Данной схеме можно сопоставить по определенным правилам (которые называются преобразованиями Цейтина) булеву формулу в виде КНФ. Это сопоставление осуществляется эффективно (за линейное в общем время от размера схемы). Любую такую функцию можно задать в виде схемы из функциональных элементов некоторого полного базиса, например, 𝐵𝐵0 = ∧,∨, ¬ . У такой схемы будет 𝑛𝑛 входов и 𝑚𝑚 выходов. Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат. Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛. Программы задают семейства дискретных функций вида 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚 Далее мы будем рассматривать только такие функции.
  12. 12. Дискретные функции и задачи их обращения Пример КНФ: 𝐶𝐶 = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Выполняющий набор: 𝑥𝑥1 = 0, 𝑥𝑥2 = 0, 𝑥𝑥4 = 1, 𝑥𝑥5 = 0, 𝑥𝑥3, 𝑥𝑥6, 𝑥𝑥7, 𝑥𝑥8 𝑥𝑥9, 𝑥𝑥10 ∈ {0,1}. 𝑥𝑥– булева переменная, то есть переменная, принимающая значения в множестве {0,1} 𝑥𝑥, ¬𝑥𝑥 – литералы (𝑥𝑥1 ∨ ¬𝑥𝑥2 ∨ 𝑥𝑥6 ∨ ¬𝑥𝑥10) – дизъюнкт (clause) Задача о выполнимости КНФ (SAT): существует ли такой набор значений всех булевых переменных, встречающихся в 𝐶𝐶, подстановка которого в 𝐶𝐶 и выполнение всех операций (¬, ∧, ∨) даст в результате 1 ? Если такой набор есть, то КНФ называется выполнимой, в противном случае – невыполнимой.
  13. 13. Дискретные функции и задачи их обращения Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска.
  14. 14. Дискретные функции и задачи их обращения Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска. К SAT эффективно сводится колоссальное по своему разнообразию семейство комбинаторных задач: задачи поиска комбинаторных структур, задачи криптоанализа, задачи биоинформатики и многие другие.
  15. 15. Дискретные функции и задачи их обращения Наибольшую известность SAT-подход приобрел при решении задач символьной верификации. Далее мы приведем простейший пример сведения к SAT задачи доказательства эквивалентности двух схем из функциональных элементов. Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска. К SAT эффективно сводится колоссальное по своему разнообразию семейство комбинаторных задач: задачи поиска комбинаторных структур, задачи криптоанализа, задачи биоинформатики и многие другие.
  16. 16. Пример: верификация комбинационных схем Даны две схемы, каждая из которых реализует булеву функцию вида 0,1 2 → 0,1 , которую можно задать формулой 𝑥𝑥1 ⊕ 𝑥𝑥2 ¬ ¬ ∧ ∧ ∨ 𝑥𝑥1 𝑥𝑥2 𝑥𝑥1 ⊕ 𝑥𝑥2 𝑆𝑆 𝑔𝑔 𝑆𝑆 ℎ ∧ ∨ ¬ ∧ 𝑥𝑥1 𝑥𝑥2 𝑥𝑥1 ⊕ 𝑥𝑥2
  17. 17. Пример: верификация комбинационных схем Мы сведем задачу доказательства эквивалентности этих двух схем к SAT. На начальном шаге строим следующую схему: Грубо говоря, мы «склеиваем» выходы изначальных двух схем функциональным элементом XOR. Очевидно, схемы 𝑆𝑆(𝑔𝑔) и 𝑆𝑆(ℎ) реализуют эквивалентные функции тогда и только тогда, когда схема 𝑆𝑆(𝑔𝑔 ⊕ ℎ) представляет тождественный ноль на 0,1 2. 𝑆𝑆 𝑔𝑔 ⊕ ℎ ¬ ¬ ∧ ∧ ∨ 𝑥𝑥1 𝑥𝑥2 ∧ ∨ ¬ ∧ ⊕ 10 1 3 2 4 8 6 7 95
  18. 18. Пример: верификация комбинационных схем На следующем шаге по схеме 𝑆𝑆(𝑔𝑔 ⊕ ℎ) строится КНФ 𝐶𝐶(𝑔𝑔 ⊕ ℎ). Строится она за линейное от размера 𝑆𝑆(𝑔𝑔 ⊕ ℎ) время при помощи преобразований Цейтина. Идея преобразований Цейтина крайне проста: мы ставим в соответствие каждому узлу схемы, за исключением входных полюсов, новую булеву переменную и булеву формулу, связывающую входы этого узла с выходом посредством логической эквивалентности. 1. 𝑦𝑦1 ≡ ¬𝑥𝑥1 2. 𝑦𝑦2 ≡ ¬𝑥𝑥2 3. 𝑦𝑦3 ≡ 𝑦𝑦1 ∧ 𝑥𝑥2 4. 𝑦𝑦4 ≡ 𝑦𝑦1 ∨ 𝑦𝑦2 5. 𝑦𝑦5 ≡ 𝑥𝑥1 ∧ 𝑥𝑥2 6. 𝑦𝑦6 ≡ 𝑥𝑥1 ∧ 𝑥𝑥2 7. 𝑦𝑦7 ≡ 𝑥𝑥1 ∨ 𝑥𝑥2 8. 𝑦𝑦8 ≡ ¬𝑦𝑦6 9. 𝑦𝑦9 ≡ 𝑦𝑦7 ∧ 𝑦𝑦8 10. 𝑦𝑦10 ≡ 𝑦𝑦5 ⊕ 𝑦𝑦9 ¬ ¬ ∧ ∧ ∨ 𝑥𝑥1 𝑥𝑥2 ∧ ∨ ¬ ∧ ⊕ 10 1 3 2 4 8 6 7 95
  19. 19. Пример: верификация комбинационных схем Затем каждую формулу из данного множества мы представляем в виде КНФ над соответствующим множеством булевых переменных (например, формула 𝑦𝑦1 ≡ ¬𝑥𝑥1 представляется в виде 𝐶𝐶𝑦𝑦1 = 𝑦𝑦1 ∨ 𝑥𝑥1 ∧ (¬𝑦𝑦1 ∨ ¬𝑥𝑥1), формула 𝑦𝑦3 ≡ 𝑦𝑦1 ∧ 𝑥𝑥2 представляется КНФ 𝐶𝐶𝑦𝑦3 = 𝑦𝑦3 ∨ ¬𝑦𝑦1 ∨ ¬𝑥𝑥2 ∧ (¬𝑦𝑦3 ∨ 𝑦𝑦1) ∧ (¬𝑦𝑦3 ∨ 𝑥𝑥2) и так далее). Затем рассматривается КНФ 𝐶𝐶 𝑔𝑔 ⊕ ℎ = 𝐶𝐶𝑦𝑦1 ∧ ⋯ ∧ 𝐶𝐶𝑦𝑦10 ∧ 𝑦𝑦10 Из свойств преобразований Цейтина следует, что схема 𝑆𝑆(𝑔𝑔 ⊕ ℎ) представляет булеву функцию, являющуюся тождественным нулем на 0,1 𝑛𝑛 (в нашем случае 0,1 2 ), тогда и только тогда, когда КНФ 𝐶𝐶(𝑔𝑔 ⊕ ℎ) невыполнима. Если схемы неэквивалентны, то эта КНФ обязательно выполнима и для нее найдется выполняющий набор – «сертификат», доказывающий неэквивалентность схем (на соответствующем значении входных переменных одна схема выдаст 0, другая выдаст 1).
  20. 20. Методы сведения к SAT Из теоремы Кука-Левина следует, что любой тотальной дискретной функции 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚, заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 .
  21. 21. Методы сведения к SAT Из теоремы Кука-Левина следует, что любой тотальной дискретной функции 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚, заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 . Это можно сделать, например, представив 𝑓𝑓𝑛𝑛 в виде схемы 𝑆𝑆(𝑓𝑓𝑛𝑛) над любым полным базисом, а затем построить по данной схеме КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), используя преобразования Цейтина. Данная простая идея лежит в основе большинства сводимостей комбинаторных задач к SAT.
  22. 22. Методы сведения к SAT Из теоремы Кука-Левина следует, что любой тотальной дискретной функции 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚, заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 . Это можно сделать, например, представив 𝑓𝑓𝑛𝑛 в виде схемы 𝑆𝑆(𝑓𝑓𝑛𝑛) над любым полным базисом, а затем построить по данной схеме КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), используя преобразования Цейтина. Данная простая идея лежит в основе большинства сводимостей комбинаторных задач к SAT. Если у нас есть КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), то мы можем рассмотреть задачу обращения функции 𝑓𝑓𝑛𝑛 в произвольной точке 𝑦𝑦 из 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 𝑓𝑓𝑛𝑛 ⊆ 0,1 𝑚𝑚 как SAT-задачу: для этого достаточно подставить в 𝐶𝐶(𝑓𝑓𝑛𝑛) набор значений булевых переменных, соответствующий 𝑦𝑦.
  23. 23. Методы сведения к SAT На практике для сведения к SAT можно использовать различные системы автоматической трансляции. Для сведения к SAT задач криптоанализа нами была разработана система Transalg. Программа для транслятора • Алгоритм вычисления функции • Описание исследуемого свойства Транслятор алгоритмов • SAT-задача, кодирующая исследуемое свойство SAT- решатель Janicic P.: URSA: a System for Uniform Reduction to SAT. Logical Methods in Computer Science 8 (3), 1-39 (2012) И.В. Отпущенников, А.А. Семенов Технология трансляции комбинаторных проблем в булевы уравнения //Прикладная дискретная математика, №1, с. 96-115, 2011
  24. 24. Генератор ключевого потока – дискретная функция: 𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 ∗ 𝑥𝑥 = 𝑥𝑥1, … , 𝑥𝑥𝑛𝑛 — входная (инициализирующая) последовательность (секретный ключ). 𝑦𝑦 = (𝑦𝑦1, … , 𝑦𝑦𝑚𝑚) — фрагмент ключевого потока длины 𝑚𝑚. Требуется, зная 𝑦𝑦 и зная алгоритм вычисления 𝑓𝑓𝑛𝑛, найти 𝑥𝑥. Задача криптоанализа: по известному алгоритму вычисления 𝑓𝑓𝑛𝑛 и фрагменту ключевого потока требуется найти инициализирующую последовательность. Генератор ключевого потока A5/1 В основе А5/1 три РСЛОС с полиномами обратной связи: РСЛОС1:𝑋𝑋19 + 𝑋𝑋18 + 𝑋𝑋17 + 𝑋𝑋14 + 1 РСЛОС2:𝑋𝑋22 + 𝑋𝑋21 + 1 РСЛОС3:𝑋𝑋23 + 𝑋𝑋22 + 𝑋𝑋8 + 1 Длина секретного ключа – 64 бита. Пусть 𝑏𝑏1 𝜏𝜏 , 𝑏𝑏2 𝜏𝜏 , 𝑏𝑏3 𝜏𝜏 - значения ячеек с номерами 9, 30 и 52 в момент времени 𝜏𝜏.Регистр с номером 𝑗𝑗 ∈ 1,2,3 сдвигается в момент 𝜏𝜏 т.т.т., когда 𝑏𝑏𝑗𝑗 𝜏𝜏 = 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 𝑏𝑏1 𝜏𝜏 , 𝑏𝑏2 𝜏𝜏 . 𝑏𝑏3 𝜏𝜏 𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚𝑚 𝑥𝑥, 𝑦𝑦, 𝑧𝑧 = 𝑥𝑥 ∧ 𝑦𝑦 ∨ 𝑦𝑦 ∧ 𝑧𝑧 ∨ 𝑥𝑥 ∧ 𝑧𝑧 Генератор ключевого потока A5/1
  25. 25. Пример. Кодирование A5/1 в SAT define len 128; __in bit regA[19]; __in bit regB[19]; __in bit regC[19]; __in out stream[len]; int midA = 8; int midB = 8; int midC = 8; //Сдвиг РСЛОС А bit shift_rslosA() { bit x = regA[18]; bit y = regA[18]^regA[17]^regA[16]^regA[13]; for(int j = 18; j > 0; j=j-1) { regA[j] = regA[j-1]; } regA[0] = y; return x; } //Сдвиг РСЛОС B bit shift_rslosB() { bit x = regB[21]; bit y = regB[21]^regB[20]; for(int j = 21; j > 0; j=j-1) { regB[j] = regB[j-1]; } regB[0] = y; return x; } //Сдвиг РСЛОС C bit shift_rslosC() { bit x = regC[22]; bit y = regC[22]^regC[21]^regC[20]^regC[7]; for(int j = 22; j > 0; j=j-1) { regC[j] = regC[j-1]; } regC[0] = y; return x; } bit majority(bit x, bit y, bit z){ return x & y | x & z | y & z; } void main(){ for (int i=0; i < len; i = i+1){ bit maj = majority(regA[midA], regB[midB],regC[midC]); if (!(maj^regA[midA])) shift_regA(); if (!(maj^regB[midB])) shift_regB(); if (!(maj^regC[midC])) shift_regC(); stream[i] = regA[18]^regB[21]^regC[22]; } } Соответствующая КНФ содержит 39936 дизъюнктов над множеством из 8768 переменных.
  26. 26. Другие примеры сведения комбинаторных задач к SAT Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Model Several Phenomena of Collective Behavior // PLoS ONE 9(12): e115156. Имеется множество агентов, у каждого агента есть множество его «соседей», оказывающих на него влияние. Под влиянием соседей агент может принимать некоторые решения. Простейший пример – два типа решений «действие» (1) и «бездействие» (0). Есть агенты, которые действуют всегда (агитаторы), есть агенты, которые всегда бездействуют (лоялисты), а есть агенты, которые могут, как действовать, так и бездействовать (простые агенты). Простые агенты в некоторый момент времени начинают действовать, только если в предшествующий момент не менее определенного числа соседей действовали.
  27. 27. Другие примеры сведения комбинаторных задач к SAT Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Model Several Phenomena of Collective Behavior // PLoS ONE 9(12): e115156. Задача: так расставить в сети относительно небольшое число агитаторов, чтобы за небольшое число моментов времени привести сеть в состояние, когда действуют почти все агенты. Обратная задача: все (или почти все) агенты в сети действуют, задача так расставить на местах нескольких простых агентов лоялистов, чтобы за относительно небольшое число шагов сеть перешла в состояние, где почти все простые агенты бездействуют. Такого сорта задачи допускают эффективное сведение к SAT: комбинаторика здесь в поиске соответствующих расстановок относительно малого числа агитаторов/лоялистов.
  28. 28. Другие примеры сведения комбинаторных задач к SAT
  29. 29. Другие примеры сведения комбинаторных задач к SAT
  30. 30. Основные алгоритмы решения SAT Для решения задач символьной верификации до начала 2000-х использовались двоичные диаграммы решений (BDD, ROBDD). Эти методы, начиная с 2003 г., активно вытесняются SAT-подходом. Далее мы кратко рассмотрим ряд алгоритмов и техник, используемых в основе современных SAT-решателей.
  31. 31. Основные алгоритмы решения SAT Для решения задач символьной верификации до начала 2000-х использовались двоичные диаграммы решений (BDD, ROBDD). Эти методы, начиная с 2003 г., активно вытесняются SAT-подходом. Далее мы кратко рассмотрим ряд алгоритмов и техник, используемых в основе современных SAT-решателей. Большая часть современных эффективных SAT-решателей базируется на алгоритме DPLL (Devis, Putnam, Logemann, Loveland) Базовая идея DPLL: DPLL = обход дерева поиска в глубину + Boolean Constraint Propagation
  32. 32. Основные алгоритмы решения SAT Для решения задач символьной верификации до начала 2000-х использовались двоичные диаграммы решений (BDD, ROBDD). Эти методы, начиная с 2003 г., активно вытесняются SAT-подходом. Далее мы кратко рассмотрим ряд алгоритмов и техник, используемых в основе современных SAT-решателей. Большая часть современных эффективных SAT-решателей базируется на алгоритме DPLL (Devis, Putnam, Logemann, Loveland) Базовая идея DPLL: DPLL = обход дерева поиска в глубину + Boolean Constraint Propagation При использовании ряда дополнительных техник дает очень мощные алгоритмы, применимые к широкому классу SAT задач. Речь идет о концепции CDCL (Conflict Driven Clause Learning) и дополняющих ее техниках: схемах анализа конфликтов (FUIP), модификации статистики конфликтности (VSIDS), быстрых структурах данных (Watched literals) и др.
  33. 33. Алгоритмы DPLL и GRASP Алгоритм DPLL – это итеративная процедура подстановки в КНФ значений переменных с последующим «распространением булевых ограничений» (Boolean Constraint Propagation, BCP), отслеживанием конфликтов и бэктрекингом. Собственно BCP основано на правиле единичного дизъюнкта. Правило единичного дизъюнкта Пусть есть некоторый набор дизъюнктов (КНФ). Если в нем присутствует единичный дизъюнкт, состоящий из единственного литерала 𝑙𝑙, то: • Из КНФ удаляется каждый дизъюнкт, содержащий 𝑙𝑙, кроме самого 𝑙𝑙; • Во всех дизъюнктах, содержащих ¬𝑙𝑙, этот литерал удаляется. Получаемый в результате набор дизъюнктов эквивалентен исходному. Правило единичного дизъюнкта: пример Пусть есть следующий набор дизъюнктов: {𝑎𝑎 ∨ 𝑏𝑏, ¬𝑎𝑎 ∨ 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑎𝑎}. Тогда {𝑎𝑎 ∨ 𝑏𝑏, ¬𝑎𝑎 ∨ 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑎𝑎} × × ¬𝑎𝑎 ↓ ↓ { 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑎𝑎
  34. 34. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Угадывание (Decision assignment) Выбор переменной 𝑥𝑥𝑖𝑖 ∈ 𝑥𝑥1, … , 𝑥𝑥𝑛𝑛 , присвоение ей произвольного значения и подстановка его в КНФ 𝐶𝐶
  35. 35. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Угадывание (Decision assignment) Выбор переменной 𝑥𝑥𝑖𝑖 ∈ 𝑥𝑥1, … , 𝑥𝑥𝑛𝑛 , присвоение ей произвольного значения и подстановка его в КНФ 𝐶𝐶 Последовательность угадываний организуется в виде нумерованного списка уровней решения (decision level). Переменная, значение которой угадывается на данном уровне решения, называется переменной решения (decision variable) этого уровня.
  36. 36. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Boolean Constraint Propagation Процедура, состоящая в итеративном применении правила единичного дизъюнкта называется BCP (Boolean Constraint Propagation) Последовательность угадываний организуется в виде нумерованного списка уровней решения (decision level). Переменная, значение которой угадывается на данном уровне решения, называется переменной решения (decision variable) этого уровня.
  37. 37. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Boolean Constraint Propagation Процедура, состоящая в итеративном применении правила единичного дизъюнкта называется BCP (Boolean Constraint Propagation) Конфликт Если в результате BCP выводится контрарная пара литералов, то говорят, что происходит конфликт
  38. 38. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) GRASP (Ж. Маркеш-Сильва, К. Сакалла, 1999 г.) Модификация алгоритма DPLL с использованием нехронологического бэктрэкинга (бэкджампинга) и CL- процедуры (Clause Learning) Конфликт Если в результате BCP выводится контрарная пара литералов, то говорят, что происходит конфликт
  39. 39. Алгоритмы DPLL и GRASP Требуется определить выполнимость КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ (𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10) Одновременное означивание 𝑥𝑥4 = 0, 𝑥𝑥5 =1, 𝑥𝑥8 = 0 приводит к конфликту. Чтобы исключить повторение этой ситуации в графе вывода к КНФ приписывается конфликтный дизъюнкт (𝑥𝑥4 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥8).
  40. 40. Алгоритмы DPLL и GRASP В результате приписывания конфликтного дизъюнкта получается следующая КНФ: С = ¬𝑥𝑥1 ∨ 𝑥𝑥2 ∧ ¬𝑥𝑥1 ∨ 𝑥𝑥3 ∨ ¬𝑥𝑥4 ∧ ¬𝑥𝑥2 ∨ 𝑥𝑥3 ∨ 𝑥𝑥5 ∧ 𝑥𝑥4 ∨ 𝑥𝑥8 ∨ ¬𝑥𝑥9 ∧ ∧ ¬𝑥𝑥5 ∨ 𝑥𝑥8 ∨ 𝑥𝑥9 ∧ ¬𝑥𝑥6 ∨ ¬𝑥𝑥5 ∨ 𝑥𝑥7 ∧ ¬𝑥𝑥1 ∨ ¬𝑥𝑥8 ∨ 𝑥𝑥10 ∧ 𝑥𝑥4 ∨ ¬𝑥𝑥8 ∨ ¬𝑥𝑥10 ∧ ∧ 𝒙𝒙𝟒𝟒 ∨ ¬𝒙𝒙𝟓𝟓 ∨ 𝒙𝒙𝟖𝟖 .
  41. 41. Современные SAT-решатели на основе DPLL Помимо бэкджампинга в современных SAT-решателях на основе DPLL используются многочисленные техники, ускоряющие их работу: 1. Рестарты 2. Эвристики выбора и означивания переменных 3. Различные схемы анализа конфликтов 4. Структуры для организации «ленивых» вычислений Этапы развития второго поколения SAT-решателей на основе DPLL GRASP (1999 г.) Zchaff (2001 г.) MiniSat (2003 г.) Lingeling (2010 г.) Plingeling (2010 г.) Treengeling (2013 г.) В настоящее время регулярно проводятся соревнования SAT-решателей (http://www.SatLive.org), приуроченные к ежегодной конференции SAT.
  42. 42. Решение задач криптоанализа при помощи SAT Задачи криптоанализа можно рассматривать как своего рода вызов для существующих и новых алгоритмов и технологий решения комбинаторных задач. Далее мы рассмотрим примеры использования SAT решателей в криптоанализе. Конкретно, остановимся на двух задачах: задаче криптоанализа генератора А5/1 и задачах поиска коллизий хэш- функций семейства MD.
  43. 43. Криптоанализ А5/1 при помощи SAT Криптоанализ А5/1. Данный генератор широко известен его использованием в стандарте GSM для шифрования траффика. Изначально его алгоритм был засекречен. Полностью раскрыт в конце 90-х. За последующие годы были описаны различные атаки. Наиболее действенным является подход на основе Rainbow–метода, реализованного в конце 2009 г. группой A5/1 Cracking Project. Соответствующие Rainbow-таблицы были доступны по адресу http://opensource.srlabs.de/attachments/download/41/a51_table_torrents.tgz Размер – примерно 1.7 ТБ. На основе 8 бёрстов ключевого потока (1 бёрст=114 бит) данные Rainbow-таблицы накрывают искомый ключ с вероятностью примерно 87,5% (проверено).
  44. 44. Криптоанализ А5/1 при помощи SAT Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст потока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу.
  45. 45. Криптоанализ А5/1 при помощи SAT Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст потока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу. Затем использовалась довольно естественная стратегия распараллеливания (SAT-partitioning). Специальная техника на основе метода Монте-Карло позволяет определить для распараллеливаний такого типа время обработки всей полученной декомпозиции в параллельной вычислительной среде.
  46. 46. Криптоанализ А5/1 при помощи SAT Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрст потока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу. Затем использовалась довольно естественная стратегия распараллеливания (SAT-partitioning). Специальная техника на основе метода Монте-Карло позволяет определить для распараллеливаний такого типа время обработки всей полученной декомпозиции в параллельной вычислительной среде. Как итог: в проекте добровольных вычислений SAT@home (http://sat.isa.ru/pdsat/) было решено несколько десятков задач криптоанализа A5/1 в описанной постановке. Время решения, конечно же, весьма существенно (на одну задачу в среднем уходило несколько дней). Однако эти результаты демонстрируют возможность использования SAT для обращения действительно трудных функций.
  47. 47. Поиск коллизий хэш функций при помощи SAT Алгоритмически вычислимые и определенные всюду на 0,1 ∗ функции вида 𝜒𝜒: 0,1 ∗ → 0,1 𝐶𝐶, где 𝐶𝐶 – некоторая константа, называются хэш-функциями. Если длина входа 𝑛𝑛 превосходит 𝐶𝐶, то обязательно найдутся такие 𝑀𝑀, 𝑀𝑀′ ∈ 0,1 𝑛𝑛, что 𝜒𝜒 𝑀𝑀 = 𝜒𝜒 𝑀𝑀′ . Такая ситуация называется коллизией. Многие современные криптографические хэш-функции (например, из семейств MD или SHA) базируются на конструкции Меркля-Дамгарда: 𝑓𝑓 𝑓𝑓 𝑓𝑓 𝐻𝐻2𝐻𝐻1 𝐻𝐻𝑁𝑁−1 𝐻𝐻𝑁𝑁 𝐼𝐼 𝐼𝐼 𝑀𝑀1 𝑀𝑀2 𝑀𝑀𝑁𝑁 Подразумевается, что хэшируемое сообщение разбивается на блоки 𝑀𝑀𝑖𝑖, 𝑖𝑖 ∈ {1, … , 𝑁𝑁} равной длины – для MD4 и MD5, например, длина блока равна 512 бит. Длина IV и хэша для этих функций равна 128 битам. Пара сообщений 𝑀𝑀 = 𝑀𝑀1| … |𝑀𝑀𝑘𝑘 и 𝑀𝑀′ = 𝑀𝑀1 ′ | … |𝑀𝑀𝑘𝑘 ′ , такие, что 𝐻𝐻𝑘𝑘 = 𝐻𝐻𝑘𝑘 ′ образуют 𝑘𝑘-блоковую коллизию. ⋯
  48. 48. Поиск коллизий хэш функций при помощи SAT Одной из первых попыток в этом направлении можно считать статью: Эту попытку нельзя назвать удачной, поскольку в этой работе фактически были построены обычные SAT-кодировки функций семейства MD. Найти коллизии в такой постановке не удалось даже для функции MD4. Jovanovic D., Janicic P. Logical Analysis of Hash Functions // FroCoS 2005 Proceedings
  49. 49. Поиск коллизий хэш функций при помощи SAT Одной из первых попыток в этом направлении можно считать статью: Эту попытку нельзя назвать удачной, поскольку в этой работе фактически были построены обычные SAT-кодировки функций семейства MD. Найти коллизии в такой постановке не удалось даже для функции MD4. В работе были найдены одноблоковые коллизии для MD4, однако поиск двухблоковых коллизий для MD5 оказался весьма сложным. Ключевая идея статьи – добавление в SAT-кодировки функций условий удовлетворения искомой коллизии дифференциальному пути. Собственно дифференциальные пути были взяты из работ X.Wang (EUROCRYPT 2005). Mironov I., Zhang L. Applications of SAT Solvers to Cryptanalysis of Hash Functions // SAT 2006 Proceedings Jovanovic D., Janicic P. Logical Analysis of Hash Functions // FroCoS 2005 Proceedings
  50. 50. Поиск коллизий хэш функций при помощи SAT В работе: Были построены новые кодировки с использованием Transalg и применены довольно простые техники распараллеливания. Итог: задачи поиска одноблоковых коллизий для MD4 на новых кодировках оказываются очень простыми даже для не самых лучших решателей. Однако только для CDCL- решателей! Попытки использовать SLS-решатели не увенчались успехом. Задачи поиска двухблоковых коллизий для MD5 сложнее, но вполне поддаются решению с использованием «тяжелой артиллерии» в виде Plingeling и Treengeling . Дополнительное использование техник распараллеливания позволяет строить коллизии с фиксированным числом нулевых бит в начальных частях сообщений. Богачкова И.А., Заикин О.С., Кочемазов С.Е., Отпущенников И.В., Семенов А.А., Хамисов О.О. Задачи поиска коллизий для криптографических хеш- функций семейства MD как варианты задачи о булевой выполнимости // Вычислительные методы и программирование, 2015
  51. 51. Поиск коллизий хэш функций при помощи SAT
  52. 52. Заключение Современные алгоритмы решения задачи о булевой выполнимости – весьма мощные комбинаторные алгоритмы с широким спектром использования. Дополнительная аргументация их эффективности – возможность решать с их помощью задачи обращения ряда криптографических функций. Соответствующие примеры позволяют рассматривать SAT- решатели как интеллектуальные средства утилизации объемных однотипных вычислений в криптографических атаках.
  53. 53. Спасибо за внимание!

×