53
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в криптоанализе Александр Семенов, ИДСТУ СО РАН PHDays 2015

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

Embed Size (px)

Citation preview

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

и их применение в криптоанализе

Александр Семенов, ИДСТУ СО РАНPHDays 2015

SAT

SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости»

SAT

SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости»

Исходная формулировка: «По заданной булевой формуле (обычно в CNF -формате) требуется определить, является ли данная формула выполнимой»

SAT

SAT - сокращение от «Boolean Satisfiability Problem» – в русском варианте «Проблема выполнимости булевых формул» или «Проблема булевой выполнимости»

Исходная формулировка: «По заданной булевой формуле (обычно в CNF -формате) требуется определить, является ли данная формула выполнимой»

Вопрос: причем здесь программирование или хотя бы прикладные аспекты Computer Science?

План доклада

1. Дискретные функции и задачи их обращения

2. Сведение задач обращения дискретных функций к проблеме булевой выполнимости SAT

3. Наиболее эффективные на практике алгоритмы решения SAT

4. Задачи криптоанализа как частные случаи SAT

5. Результаты некоторых вычислительных экспериментов

Дискретные функции и задачи их обращения

Дискретная функция – это функция, которая преобразует двоичные слова в двоичные слова.

𝑓𝑓 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3, 𝑥𝑥4 = 𝑥𝑥1 ⊕ 𝑥𝑥2 → 𝑥𝑥3 ∧ 𝑥𝑥4

𝑥𝑥1 𝑥𝑥2

¬ ¬

∧ ∧

𝑥𝑥1 ⊕ 𝑥𝑥2

1. T 1,22. 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

011011

0

1

Дискретные функции и задачи их обращения

Функции, задаваемые автоматом и МТ-программой, могут получать на вход двоичные слова какой угодно длины – описания функций при этом остаются теми же. В данных конкретных случаях имеем функции вида

𝑓𝑓: 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 𝑞𝑞20 0

0

1

1

1

Дискретные функции и задачи их обращения

Программы задают семейства дискретных функций вида𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚

Далее мы будем рассматривать только такие функции.

Дискретные функции и задачи их обращения

Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат.Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛.

Программы задают семейства дискретных функций вида𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚

Далее мы будем рассматривать только такие функции.

Дискретные функции и задачи их обращения

Любую такую функцию можно задать в виде схемы из функциональных элементов некоторого полного базиса, например, 𝐵𝐵0 = ∧,∨, ¬ . У такой схемы будет 𝑛𝑛 входов и 𝑚𝑚 выходов.

Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат.Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛.

Программы задают семейства дискретных функций вида𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚

Далее мы будем рассматривать только такие функции.

Дискретные функции и задачи их обращения

Данной схеме можно сопоставить по определенным правилам (которые называются преобразованиями Цейтина) булеву формулу в виде КНФ. Это сопоставление осуществляется эффективно (за линейное в общем время от размера схемы).

Любую такую функцию можно задать в виде схемы из функциональных элементов некоторого полного базиса, например, 𝐵𝐵0 = ∧,∨, ¬ . У такой схемы будет 𝑛𝑛 входов и 𝑚𝑚 выходов.

Дополнительно полагаем, что на каждом входе рассматриваемая программа останавливается и выдает некоторый результат.Соответствующие функции тогда определены на всех входах – всех возможных словах длины 𝑛𝑛.

Программы задают семейства дискретных функций вида𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚

Далее мы будем рассматривать только такие функции.

Дискретные функции и задачи их обращения

Пример КНФ:𝐶𝐶 = ¬𝑥𝑥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 ?

Если такой набор есть, то КНФ называется выполнимой, в противном случае –невыполнимой.

Дискретные функции и задачи их обращения

Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска.

Дискретные функции и задачи их обращения

Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска.

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

Дискретные функции и задачи их обращения

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

Если КНФ выполнима, то обычно требуется найти хотя бы один ее выполняющий набор (таких наборов может быть очень много). Эта задача часто называется поисковым вариантом SAT. Далее под SAT будем понимать как задачу распознавания, так и задачу поиска.

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

Пример: верификация комбинационных схем

Даны две схемы, каждая из которых реализует булеву функцию вида0,1 2 → 0,1 ,

которую можно задать формулой 𝑥𝑥1 ⊕ 𝑥𝑥2

¬ ¬

∧ ∧

𝑥𝑥1 𝑥𝑥2

𝑥𝑥1 ⊕ 𝑥𝑥2

𝑆𝑆 𝑔𝑔 𝑆𝑆 ℎ

∧ ∨

¬

𝑥𝑥1 𝑥𝑥2

𝑥𝑥1 ⊕ 𝑥𝑥2

Пример: верификация комбинационных схем

Мы сведем задачу доказательства эквивалентности этих двух схем к SAT. На начальном шаге строим следующую схему:

Грубо говоря, мы «склеиваем» выходы изначальных двух схем функциональным элементом XOR.

Очевидно, схемы 𝑆𝑆(𝑔𝑔) и 𝑆𝑆(ℎ)реализуют эквивалентные функции тогда и только тогда, когда схема 𝑆𝑆(𝑔𝑔⊕ ℎ) представляет тождественный ноль на 0,1 2.

𝑆𝑆 𝑔𝑔 ⊕ ℎ

¬ ¬

∧ ∧

𝑥𝑥1 𝑥𝑥2

∧ ∨

¬

⊕10

1

3

2

4 8

6 7

95

Пример: верификация комбинационных схем

На следующем шаге по схеме 𝑆𝑆(𝑔𝑔⊕ ℎ) строится КНФ 𝐶𝐶(𝑔𝑔⊕ ℎ). Строится она за линейное от размера 𝑆𝑆(𝑔𝑔⊕ ℎ) время при помощи преобразований Цейтина. Идея преобразований Цейтина крайне проста: мы ставим в соответствие каждому узлу схемы, за исключением входных полюсов, новую булеву переменную и булеву формулу, связывающую входы этого узла с выходом посредством логической эквивалентности.

1. 𝑦𝑦1 ≡ ¬𝑥𝑥12. 𝑦𝑦2 ≡ ¬𝑥𝑥23. 𝑦𝑦3 ≡ 𝑦𝑦1 ∧ 𝑥𝑥24. 𝑦𝑦4 ≡ 𝑦𝑦1 ∨ 𝑦𝑦25. 𝑦𝑦5 ≡ 𝑥𝑥1 ∧ 𝑥𝑥26. 𝑦𝑦6 ≡ 𝑥𝑥1 ∧ 𝑥𝑥27. 𝑦𝑦7 ≡ 𝑥𝑥1 ∨ 𝑥𝑥28. 𝑦𝑦8 ≡ ¬𝑦𝑦69. 𝑦𝑦9 ≡ 𝑦𝑦7 ∧ 𝑦𝑦810. 𝑦𝑦10 ≡ 𝑦𝑦5 ⊕ 𝑦𝑦9

¬ ¬

∧ ∧

𝑥𝑥1 𝑥𝑥2

∧ ∨

¬

⊕10

1

3

2

4 8

6 7

95

Пример: верификация комбинационных схем

Затем каждую формулу из данного множества мы представляем в виде КНФ над соответствующим множеством булевых переменных (например, формула 𝑦𝑦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).

Методы сведения к SAT

Из теоремы Кука-Левина следует, что любой тотальной дискретной функции𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,

заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 .

Методы сведения к SAT

Из теоремы Кука-Левина следует, что любой тотальной дискретной функции𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,

заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 .

Это можно сделать, например, представив 𝑓𝑓𝑛𝑛 в виде схемы 𝑆𝑆(𝑓𝑓𝑛𝑛) над любым полным базисом, а затем построить по данной схеме КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), используя преобразования Цейтина. Данная простая идея лежит в основе большинства сводимостей комбинаторных задач к SAT.

Методы сведения к SAT

Из теоремы Кука-Левина следует, что любой тотальной дискретной функции𝑓𝑓𝑛𝑛: 0,1 𝑛𝑛 → 0,1 𝑚𝑚,

заданной программой, можно сопоставить КНФ 𝐶𝐶 𝑓𝑓𝑛𝑛 .

Это можно сделать, например, представив 𝑓𝑓𝑛𝑛 в виде схемы 𝑆𝑆(𝑓𝑓𝑛𝑛) над любым полным базисом, а затем построить по данной схеме КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), используя преобразования Цейтина. Данная простая идея лежит в основе большинства сводимостей комбинаторных задач к SAT.

Если у нас есть КНФ 𝐶𝐶(𝑓𝑓𝑛𝑛), то мы можем рассмотреть задачу обращения функции 𝑓𝑓𝑛𝑛 в произвольной точке 𝑦𝑦 из 𝑅𝑅𝑅𝑅𝑛𝑛𝑔𝑔𝑅𝑅 𝑓𝑓𝑛𝑛 ⊆ 0,1 𝑚𝑚 как SAT-задачу: для этого достаточно подставить в 𝐶𝐶(𝑓𝑓𝑛𝑛) набор значений булевых переменных, соответствующий 𝑦𝑦.

Методы сведения к 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

Генератор ключевого потока – дискретная функция:

𝑓𝑓𝑛𝑛: 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

Пример. Кодирование A5/1 в SATdefine 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;

}//Сдвиг РСЛОС Bbit 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;

}

//Сдвиг РСЛОС Cbit 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 переменных.

Другие примеры сведения комбинаторных задач к SAT

Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Model Several Phenomena of Collective Behavior // PLoS ONE 9(12): e115156.

Имеется множество агентов, у каждого агента есть множество его «соседей», оказывающих на него влияние. Под влиянием соседей агент может принимать некоторые решения.

Простейший пример – два типа решений «действие» (1) и «бездействие» (0). Есть агенты, которые действуют всегда (агитаторы), есть агенты, которые всегда бездействуют (лоялисты), а есть агенты, которые могут, как действовать, так и бездействовать (простые агенты).

Простые агенты в некоторый момент времени начинают действовать, только если в предшествующий момент не менее определенного числа соседей действовали.

Другие примеры сведения комбинаторных задач к SAT

Kochemazov S, Semenov A (2014) Using Synchronous Boolean Networks to Model Several Phenomena of Collective Behavior // PLoS ONE 9(12): e115156.

Задача: так расставить в сети относительно небольшое число агитаторов, чтобы за небольшое число моментов времени привести сеть в состояние, когда действуют почти все агенты.

Обратная задача: все (или почти все) агенты в сети действуют, задача так расставить на местах нескольких простых агентов лоялистов, чтобы за относительно небольшое число шагов сеть перешла в состояние, где почти все простые агенты бездействуют.

Такого сорта задачи допускают эффективное сведение к SAT: комбинаторика здесь в поиске соответствующих расстановок относительно малого числа агитаторов/лоялистов.

Другие примеры сведения комбинаторных задач к SAT

Другие примеры сведения комбинаторных задач к SAT

Основные алгоритмы решения SAT

Для решения задач символьной верификации до начала 2000-х использовались двоичные диаграммы решений (BDD, ROBDD). Эти методы, начиная с 2003 г., активно вытесняются SAT-подходом. Далее мы кратко рассмотрим ряд алгоритмов и техник, используемых в основе современных SAT-решателей.

Основные алгоритмы решения SAT

Для решения задач символьной верификации до начала 2000-х использовались двоичные диаграммы решений (BDD, ROBDD). Эти методы, начиная с 2003 г., активно вытесняются SAT-подходом. Далее мы кратко рассмотрим ряд алгоритмов и техник, используемых в основе современных SAT-решателей.

Большая часть современных эффективных SAT-решателей базируется на алгоритме DPLL (Devis, Putnam, Logemann, Loveland)Базовая идея DPLL:

DPLL = обход дерева поиска в глубину + Boolean Constraint Propagation

Основные алгоритмы решения 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) и др.

Алгоритмы DPLL и GRASP

Алгоритм DPLL – это итеративная процедура подстановки в КНФ значений переменных с последующим «распространением булевых ограничений» (Boolean Constraint Propagation, BCP), отслеживанием конфликтов и бэктрекингом. Собственно BCP основано на правиле единичного дизъюнкта.

Правило единичного дизъюнкта Пусть есть некоторый набор дизъюнктов (КНФ). Если в нем присутствует единичный дизъюнкт, состоящий из единственного литерала 𝑙𝑙, то:• Из КНФ удаляется каждый дизъюнкт, содержащий 𝑙𝑙, кроме самого 𝑙𝑙;• Во всех дизъюнктах, содержащих ¬𝑙𝑙, этот литерал удаляется.Получаемый в результате набор дизъюнктов эквивалентен исходному.

Правило единичного дизъюнкта: примерПусть есть следующий набор дизъюнктов: {𝑅𝑅 ∨ 𝑏𝑏, ¬𝑅𝑅 ∨ 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑅𝑅}. Тогда

{𝑅𝑅 ∨ 𝑏𝑏, ¬𝑅𝑅 ∨ 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑅𝑅}× × ¬𝑅𝑅 ↓ ↓{ 𝑐𝑐, ¬𝑐𝑐 ∨ 𝑑𝑑, 𝑅𝑅

Алгоритмы 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, … , 𝑥𝑥𝑛𝑛 ,присвоение ей произвольногозначения и подстановка его в КНФ 𝐶𝐶

Алгоритмы 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, … , 𝑥𝑥𝑛𝑛 ,присвоение ей произвольногозначения и подстановка его в КНФ 𝐶𝐶

Последовательность угадыванийорганизуется в виде нумерованногосписка уровней решения (decisionlevel). Переменная, значениекоторой угадывается на данномуровне решения, называетсяпеременной решения (decisionvariable) этого уровня.

Алгоритмы 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 (BooleanConstraint Propagation)

Последовательность угадыванийорганизуется в виде нумерованногосписка уровней решения (decisionlevel). Переменная, значениекоторой угадывается на данномуровне решения, называетсяпеременной решения (decisionvariable) этого уровня.

Алгоритмы 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 (BooleanConstraint Propagation)

КонфликтЕсли в результате BCP выводитсяконтрарная пара литералов, тоговорят, что происходит конфликт

Алгоритмы 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 выводитсяконтрарная пара литералов, тоговорят, что происходит конфликт

Алгоритмы 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).

Алгоритмы 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 ∧

∧ 𝒙𝒙𝟒𝟒 ∨ ¬𝒙𝒙𝟓𝟓 ∨ 𝒙𝒙𝟖𝟖 .

Современные 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.

Решение задач криптоанализа при помощи SAT

Задачи криптоанализа можно рассматривать как своего рода вызов для существующих и новых алгоритмов и технологий решения комбинаторных задач.

Далее мы рассмотрим примеры использования SAT решателей в криптоанализе. Конкретно, остановимся на двух задачах: задаче криптоанализа генератора А5/1 и задачах поиска коллизий хэш-функций семейства MD.

Криптоанализ А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% (проверено).

Криптоанализ А5/1 при помощи SAT

Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрстпотока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу.

Криптоанализ А5/1 при помощи SAT

Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрстпотока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу.

Затем использовалась довольно естественная стратегия распараллеливания (SAT-partitioning). Специальная техника на основе метода Монте-Карло позволяет определить для распараллеливаний такого типа время обработки всей полученной декомпозиции в параллельной вычислительной среде.

Криптоанализ А5/1 при помощи SAT

Из 1000 ключей примерно 125 пропускаются этими таблицами (для 8 бёрстпотока). Из таких ключей мы выбирали случайным образом 10 и рассматривали задачу восстановления данного ключа на основе первого бёрста (т.е. на основе 114 бит) как SAT-задачу.

Затем использовалась довольно естественная стратегия распараллеливания (SAT-partitioning). Специальная техника на основе метода Монте-Карло позволяет определить для распараллеливаний такого типа время обработки всей полученной декомпозиции в параллельной вычислительной среде.

Как итог: в проекте добровольных вычислений SAT@home(http://sat.isa.ru/pdsat/) было решено несколько десятков задач криптоанализа A5/1 в описанной постановке. Время решения, конечно же, весьма существенно (на одну задачу в среднем уходило несколько дней). Однако эти результаты демонстрируют возможность использования SAT для обращения действительно трудных функций.

Поиск коллизий хэш функций при помощи SATАлгоритмически вычислимые и определенные всюду на 0,1 ∗ функции вида

𝜒𝜒: 0,1 ∗ → 0,1 𝐶𝐶 ,где 𝐶𝐶 – некоторая константа, называются хэш-функциями.Если длина входа 𝑛𝑛 превосходит 𝐶𝐶, то обязательно найдутся такие 𝑀𝑀,𝑀𝑀′ ∈0,1 𝑛𝑛, что 𝜒𝜒 𝑀𝑀 = 𝜒𝜒 𝑀𝑀′ . Такая ситуация называется коллизией.

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

𝑓𝑓 𝑓𝑓 𝑓𝑓𝐻𝐻2𝐻𝐻1 𝐻𝐻𝑁𝑁−1 𝐻𝐻𝑁𝑁𝐼𝐼𝐼𝐼

𝑀𝑀1 𝑀𝑀2 𝑀𝑀𝑁𝑁

Подразумевается, что хэшируемое сообщение разбивается на блоки 𝑀𝑀𝑖𝑖 , 𝑚𝑚 ∈{1, … ,𝑁𝑁} равной длины – для MD4 и MD5, например, длина блока равна 512 бит. Длина IV и хэша для этих функций равна 128 битам.Пара сообщений 𝑀𝑀 = 𝑀𝑀1| … |𝑀𝑀𝑘𝑘 и 𝑀𝑀′ = 𝑀𝑀1

′ | … |𝑀𝑀𝑘𝑘′ , такие, что 𝐻𝐻𝑘𝑘 = 𝐻𝐻𝑘𝑘′

образуют 𝑘𝑘-блоковую коллизию.

Поиск коллизий хэш функций при помощи SAT

Одной из первых попыток в этом направлении можно считать статью:

Эту попытку нельзя назвать удачной, поскольку в этой работе фактически были построены обычные SAT-кодировки функций семейства MD. Найти коллизии в такой постановке не удалось даже для функции MD4.

Jovanovic D., Janicic P. Logical Analysis of Hash Functions // FroCoS2005 Proceedings

Поиск коллизий хэш функций при помощи 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 // FroCoS2005 Proceedings

Поиск коллизий хэш функций при помощи SAT

В работе:

Были построены новые кодировки с использованием Transalg и применены довольно простые техники распараллеливания. Итог: задачи поиска одноблоковых коллизий для MD4 на новых кодировках оказываются очень простыми даже для не самых лучших решателей. Однако только для CDCL-решателей! Попытки использовать SLS-решатели не увенчались успехом.

Задачи поиска двухблоковых коллизий для MD5 сложнее, но вполне поддаются решению с использованием «тяжелой артиллерии» в виде Plingeling и Treengeling . Дополнительное использование техник распараллеливания позволяет строить коллизии с фиксированным числом нулевых бит в начальных частях сообщений.

Богачкова И.А., Заикин О.С., Кочемазов С.Е., Отпущенников И.В., Семенов А.А., Хамисов О.О. Задачи поиска коллизий для криптографических хеш-функций семейства MD как варианты задачи о булевой выполнимости // Вычислительные методы и программирование, 2015

Поиск коллизий хэш функций при помощи SAT

Заключение

Современные алгоритмы решения задачи о булевой выполнимости – весьма мощные комбинаторные алгоритмы с широким спектром использования.

Дополнительная аргументация их эффективности – возможность решать с их помощью задачи обращения ряда криптографических функций.

Соответствующие примеры позволяют рассматривать SAT-решатели как интеллектуальные средства утилизации объемных однотипных вычислений в криптографических атаках.

Спасибо за внимание!