ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2008 Вычислительные методы в дискретной математике № 2(2)
ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ДИСКРЕТНОЙ МАТЕМАТИКЕ
УДК 519.7
МИНИМИЗАЦИЯ ФУНКЦИОНАЛОВ, АССОЦИИРОВАННЫХ С ЗАДАЧАМИ КРИПТОГРАФИЧЕСКОГО АНАЛИЗА АСИММЕТРИЧНЫХ ШИФРОВ
В.И. Дулькейт, Р.Т. Файзуллин, И.Г. Хныкин
Омский государственный университет им. Ф.М. Достоевского E-mail: r.t.faizullin@mail.ru
В работе рассматриваются численные методы минимизации функционалов, ассоциированных с задачами криптографического анализа асимметричных шифров. Показано, что для задачи факторизации подход позволяет получить строго более чем 50 % бит, определяющих ключ.
Ключевые слова: криптографический анализ, алгоритм минимизации, ВЫПОЛНИМОСТЬ.
Концепция
Пусть L(x) - пропозициональная формула в конъюнктивной нормальной форме на множестве булевых переменных xeBN, где B = {0, 1}. Задача ВЫПОЛНИМОСТЬ (SAT) заключается в том, чтобы найти решающий набор x0eBN, такой, что L(x0) = ИСТИНА, или доказать, что решающего набора не существует.
Рассмотрим переход от задачи ВЫПОЛНИМОСТЬ к задаче поиска глобального минимума функционала вида (1).
Пусть дана КНФ:
м
L(х) = П С ,
i=1
где c - дизъюнкты вида с = U q .• (x .•). Здесь q , (x,) = x, или х,.
j < N
Сделаем переход к эквивалентной ДНФ:
L = L (х) = U C ,
І= 1
где Ct - конъюнкты вида Ci = п Qi, j (x j) • Здесь Qi, j (x j) = 4i, j (x j) •
j < N
Рассмотрим функционал вида
M N
min F(х) = 2 Ci (х), где Ct (х) = П j (xj) •
xeE i=i j=i
Здесь
j(xj) =
(1 - x j ) , если x j Є C (x),
если xj Є C (x),
1,
иначе.
(1)
Суммирование ведется по всем M конъюнктам ДНФ, эквивалентной исходной КНФ. Соответствие между булевыми и вещественными переменными следующее: ЛОЖЬ^-О, ИСТИНА^-1.
Переход от булевой формуле к вещественной основан на использовании соответствия:
' У v yj ^ x + Xj,
у л yj ^ xi2x2, где { e В, Xi e R}.
Уг- ^ (1 - xi )>
Легко заметить, что min F(x) = 0 соответствует достижению значения ИСТИНА на исходной КНФ.
xe E N
Без потери общности можно рассмотреть 3-ДНФ, эквивалентную исходной КНФ:
2 2 2 I1 - X ’ еСЛИ Xi е C (X),
J(x) = Z zizj zk , где zi =< — cl (x) - i триплет. (2)
% [ xi, если xi e ci (x),
Дифференцируя функционал по всем переменным x , получаем систему уравнений:
Zzj zl x = Z zj z* > i = 1,2,->P , (3)
^ен ^еЛ
E = {£, i : %i e Ci (x)},
ГДе Л = {i : xi e ci(x)}
или A (x1>-> xi-1> xi+1,-> xn ) • xi = Bi (x1>-> xi-1> xi+1,•••, xn X i = 1,-> P
Коэффициенты Aj и В, связаны соотношением Ai (xl,..., xi—, xi+l,..., xn ) > Bi(x1;...,
xi_1, xi+1,..., Xn ) .
Поясним выбор представления исходной КНФ именно в виде эквивалентной 3-ДНФ. Дифференцируя функционал F(x) (см. (1)) по всем переменным x,, получаем систему уравнений, аналогичную (3), но количество вкладов в Ai и В, определяется длиной скобок. Любая процедура решения этой системы при произвольной длине скобок будет естественным образом приводить к большим ошибкам округления. Ограничивая число переменных в скобках, мы исключаем эту техническую трудность.
Рассмотрим систему (3) как нелинейное операторное уравнение:
Ф(x) = 0 . (4)
Как показано в [5], применение метода Ньютона к решению данного уравнения неэффективно, так как решение принадлежит ядру производного оператора. Как альтернатива был предложен метод последовательных приближений с «инерцией»:
£ Z ap xi ({- P)2 xj ({- P)2 I xk ({+!) = Z x72 (t)xk(t) ~ A ■ xk ({+!) = B’
p=0 ) ^еЛ (5)
K
Z ap = 1, где ap e R[0,1].
p=i
Имеется в виду то, что итерации происходят для вещественных чисел, а итоговый или промежуточный вектор проектируется на BN, и уже на булевом векторе проверяется SAT. Ниже мы опишем различные модификации и гибридизации метода последовательных приближений с «инерцией» в применении к решению задачи K-SAT и покажем способы повышения эффективности алгоритма.
Гибридизация алгоритма
Основная процедура состоит из последовательных итераций, которые совмещают метод последовательных приближений и сдвиг по антиградиенту, так как правая часть (3) - это не что иное, как антиградиент исходного функционала.
Итерация состоит из двух блоков. Первый блок определяется формулой (5), используется схема Зейделя. Суть схемы Зейделя в том, что при нахождении очередного Х;(?+1) на (?+1)-й итерации это значение подставляется вместо Х;(г). Необходимо отметить, что реализация алгоритма допускает использование схемы Якоби, когда найденные хг(7+1) не используются в текущей итерации. Тесты показали, что схема Зейделя более устойчива в применении к решаемой задаче. Именно, после каждой итерации по схеме Зейделя значение функционала монотонно уменьшается, чего нельзя сказать о схеме Якоби. Кроме того, во всех случаях схема Зейделя быстрее приводила к решению. Отметим, что данное обстоятельство препятствует напрашивающейся простой схеме распараллеливания процесса решения с разделением данных.
Второй блок - реализация сдвига по градиенту. Рассмотрим (4). Пусть х () является решением, тогда Ф(X ()) = 0 . Уравнение (5) переписывается в виде А(х (г)) • х (г) - В(х (г)) = 0. Это необходимое условие, которому должен удовлетворять вектор решения. Если текущее г-е приближение х () не является решением, то А1 (X(г)) • хг (г) - В (х (г)) = р Ф 0 . Для итеративной формулы: А1 (х(г))' X ( +1) - В (х (г)) = р. Следовательно, чтобы удовлетворить необходимому условию, необходимо перейти к вектору:
Х ( +1) = х1 (0 + р14. ()
Очевидно, что после реализации (6) возможна ситуация, когда х1 ( +1) й Л[0,1]. В этом случае необходимо штрафным способом ограничивать х1 ( +1), иначе метод начинает экспоненциально расходиться. Осо-
бенно это проявляется на К^АТ формулах при К > 4. При приближении к решению скорость сходимости может сильно уменьшаться, т.е. алгоритм формирует цикл, лежащий на некотором плато (поверхность, определяемая функционалом), и траектория, образованная последовательными приближениями, более не выходит за пределы этого плато. Чтобы сойти с плато и продолжить сходимость к решению, применяется т.н. метод смены траектории.
Метод смены траектории заключается в поиске нового вектора приближения, который бы обладал свойствами, не худшими, чем текущий вектор приближения, но позволял бы продолжить поиск решения. Суть метода нахождения такого вектора в следующем.
Рассмотрим 3-КНФ, эквивалентную исходной 3-ДНФ (1):
Гх1, если хг е сг (х),
К (X) = П (г + ггк), где = V — , ч с(х) -* тPиплет, (7)
^ [1- х, если х е с(х),
К(х) = 1 О (+ гк ) ф О, .
Для данного приближения х рассмотрим множество переменных:
Е0 = { х | 3 триплет с; : хили—х; е сг- & сг- (X) = 0} .
С вероятностью т_р поменяем значения х, на противоположные. При этом вероятность того, что другие триплеты станут невыполнимыми, невысока. Экспериментально установлено, что полученный вектор хо обладает свойствами, не худшими, чем х (количество невыполнимых триплетов до и после операции примерно одинаково). Используя данный вектор х0 в качестве нового начального приближения, алгоритм очень быстро (в большинстве случаев за 5 - 10 итераций) находит следующее приближение, на котором функционал Е(х) достигает значения не хуже, чем на векторе х . При этом, очень часто, удается проскочить плато, но
при дальнейшем движении по новой траектории метод может зациклиться на другом плато. Тогда метод
смены траектории повторяется.
Дополнительно рассмотрим множество:
Е1 = {{| 3 триплет сг: хили—х е С & С (X) = 1}.
Введем вероятности т_р0, т_р1. С вероятностью т_р0 при смене траектории будем использовать множество Е0. С вероятностью т_р1 - множество Е1. Вероятность т_р0 влияет на величину изменения вектора и при этом количество невыполнимых триплетов не увеличивается. Вероятность т_р1 влияет на качественное изменение вектора, количество невыполнимых триплетов может увеличиться. В принципе, чем выше т_р 1, тем меньшую роль играют рестарты. Метод смены траектории применяется при достижении условия
\Р(Х2 ) - Р(Х1 )\ <е2 .
Преобразование исходной КНФ методом резолюции
Данное преобразование позволяет получить КНФ с меньшим количеством дизъюнктов и литералов, эквивалентную исходной. «Резольвента» - дизъюнкция конъюнктов, отличающихся знаком по единственной переменной. Все возможные резольвенты добавляются к КНФ и используются для вычисления других резольвент.
Дублирующие конъюнкты и тавтологии удаляются, и используется сокращенная процедура с глубиной рекурсии 1. Вычислительная сложность процедуры O(n■\og п). Метод резолюции в применении к КНФ, ассоциированных с задачами факторизации и дискретного логарифмирования (см. ниже), позволяет уменьшить исходное число конъюнктов до 50 % и иногда разрешить до 20 % переменных. Подробно о методе резолюций можно найти в [6]
Результаты численных экспериментов
После каждой модификации проводилось тестирование алгоритма для определения эффективности проделанных изменений. При тестировании использовалось несколько типов примеров: тесты с соревнований решателей SAT 2005 года www.lri.fr/~simon/, тесты библиотеки SATLib www.cs.ubc.ca/~hoos/, тесты, сформированные для задач факторизации и дискретного логарифмирования, тесты для КНФ больших размерностей, сформированные случайным образом. Подробные результаты представлены в [5].
Оказалось, что сдвиг по градиенту хорошо сокращает погрешности и ускоряет сходимость алгоритма. Вычислительные эксперименты со случайными формулами показали заметное уменьшение времени решения тестов. Число решенных примеров увеличилось примерно на 20 %. Применение данного приема позволило достаточно эффективно решать тесты и!20-91 (из 1000 тестов решены 703). Однако некоторые тесты решались только после задания определенного начального приближения, что говорит о необходимости рестартов. На примерах uf250-1065 алгоритм показал результат 6 % от стандартных трудных тестов (предыду-
щая версия алгоритма - 1 %). Тесты SAT-2005 (OKGenerator10000-42000 - 10000 переменных, 42000 скобок) использовались в сокращенной форме. Максимально удалось решить подформулы из 36000 скобок (предыдущая версия алгоритма - 35000 скобок). На подформулах из более чем 36000 скобок метод зацикливается на некотором плато, что говорит о необходимости смены траектории.
Метод смены траектории существенно увеличил число решаемых примеров. Результаты представлены в табл. 1.
Таблица 1
Результаты тестирования алгоритма + метод смены траектории
Наименование теста Количество литералов (N) Количество дизъюнктов (M) Число тестов % решенных тестов Максимальное число итераций
Backbone-minimal Sub-instances (формулы с минимальным хребтом), 3-SAT
RTI 100 429 500 98,6 19988
BMS 100 <429 500 79,8 29831
Controlled Backbone Size Instances (b - размер хребта), 3-SAT
CBS b10 100 403 1000 100 38972
CBS b10 100 449 1000 100 38880
CBS b90 100 449 1000 98 29738
Uniform Random 3-SAT (UF)
uf20-91 20 91 1000 100 448
uf250-1065 250 1065 100 98 9731
SAT-encoded "Flat" Graph Colouring Problems
flat30-60 90 300 100 100 4317
Увеличение разрядности вычислений
Была исследована сходимость алгоритма при увеличении разрядности вычислений. Испытания с типами DOUBLE и FLOAT показали преимущество вычислений с двойной точностью. При переходе на тип DOUBLE количество решенных примеров увеличивается на 10 %, скорость сходимости в среднем также увеличивается. Дальнейшее увеличение разрядности к значимому эффекту не приводит.
Возможные практические применения
В последнее время наблюдается повышенный интерес к проблеме кодирования криптографических алгоритмов в терминах задачи выполнимости (SAT). В работе [4] эскизно иллюстрируется подход, позволяющий в принципе свести задачу факторизации к SAT. Целью данного исследования является построение алгоритмов генерации эквивалентных, но различных КНФ и последующей минимизации ассоциированного функционала для задач факторизации, дискретного логарифмирования и дискретного логарифмирования на эллиптической кривой.
Результаты работы алгоритма для задачи факторизации
Результаты приведены в табл. 2. Для группы задач длины до 72 бит факторизуемого числа были получены точные решения. При этом эффективность предложенного метода превосходит известные нам алгоритмы.
Таблица 2
Результаты тестирования полного алгоритма для задачи факторизации
Число бит в факторизуемом числе Количество литералов Количество дизъюнктов Время решения методом последовательных приближений Время решения алгоритмом RANOV (победитель 2005 г.) Время решения алгоритмом SATz (один из лучших переборных алгоритмов)
20 254 4979 0,1 с 0,1 с 0,1 с
32 801 17867 2 мин >1 ч 1,8 мин
40 990 22333 7 мин >1 ч 12 мин
44 1199 27291 36 мин >1 ч >1 ч
48 1428 32741 3,5 ч >10 ч >10 ч
56 1946 45141 36 мин >10 ч >10 ч
60 2235 52079 10,2 ч >20 ч >20 ч
68 2873 67455 79 ч >100 ч >100 ч
72 3222 75881 168 ч >200 ч >200 ч
Другой интересный результат в том, что уже после первых нескольких сотен итераций метод находит более 59 % верных бит решения. Трудность заключается в распознавании, какие именно биты были опреде-
лены верно. При этом при росте числа бит исходного факторизуемого числа происходит рост процентного отношения числа верных бит для соотношения, определяющего факторизуемое число (рис. 1).
62,0-1---------------------------------------------------
59,5
59,0 -1-1---1--1---1---1--1---1---1---1---1--1---1---
52 144 328 512 696 880 1024
Число бит
Рис. 1. Рост процентного отношения числа верных бит к числу бит факторизуемого числа
Для тестирования использовалось 50 различных тестов для каждой размерности. В качестве сомножителей выбирались числа, удовлетворяющие всем тестам, гарантирующим криптостойкость RSA. На рис. 1 представлены усредненные данные. Обратим внимание на то, что вне зависимости от размерности задачи для каждого теста проводилось всего 1000 итераций. Исходя из рисунка, можно сделать предположение о том, что рост числа верных бит в зависимости от длины факторизуемого числа имеет логарифмический характер.
Єведение к КНФ задачи факторизации
Рассмотрим непосредственно алгоритм сведения к КНФ задачи факторизации. Требуется для заданного числа n получить КНФ, решающий набор которой существует тогда и только тогда, когда n - составное число. Кроме того, решающий набор должен содержать все биты двоичного представления нетривиальных делителей n. Без потери общности рассмотрим классический алгоритм умножения «столбиком». Будем отождествлять биты сомножителей и результата с литералами (свободными логическими переменными). Результат умножения первого сомножителя на г-й бит второго можно представить в виде вектора р . Именно суммирование всех этих векторов представляет основную сложность. Поэтому предлагается выполнять эту операцию последовательно с сохранением результата в промежуточных векторах Sk .
Весь процесс вычисления можно разбить на три этапа относительно операции сложения:
1. Сложение векторов, составленных из произведений двух литералов. Выполняется один раз. В результате этой операции будет заполнен вспомогательный вектор сумм Sj и вычислено два младших бита результата. Условно данный этап можно записать так: р + P2 = (S2, r2, r ).
2. Суммирование вектора Sk с вектором произведений. Выполняется N - 3 раз. В результате заполняется массив Sk+1 и вычисляется очередной бит результата Si-2 + P = (SM,r), i = 3...N-1.
3. Последнее суммирование вектора Sk с вектором произведений. Выполняется один раз. В результате вычисляются оставшиеся биты результата SN-2 + PN = (r2 N ...rN ).
Теперь перейдём к рассмотрению идеи генерации КНФ. Простейший случай - приравнивание одного литерала другому: x = y. Данное равенство будет справедливо тогда и только тогда, когда истинна формула (x v y)(x v y).
Другим часто встречающимся выражением является
x = A 0 B 0 C. (8)
Поступая аналогичным образом, получаем эквивалентную формулу:
( X v (A © B ® C )) ( x v (A ® B ® C ) ) = ( Ax ® Bx © Cx ® x )( Ax ® Bx ® Cx ). (9)
Для представления правой части в виде КНФ воспользуемся леммами 1 и 2. Лемма 1.
N
i=l
N
N
где в левой части сумма по модулю 2, Ын - множество двоичных векторов длины Ы, содержащих чётное число нулей. Операция «возведения в степень» имеет стандартный для булевой алгебры смысл:
X8 ={ X’ 8 = 0’
[ X, 8 = 1.
Лемма 2.
г,
N 8і П аj П I N Si ^ i аj 1
v xt ' vn yjj = П I y Xi ' v y ( yjj ) I.
1 j= {nk }є2і/{0,0,...,0} Vi-1 j-1' ' )
После применения леммы 1 будут получены конъюнкты следующего вида:
( d v abc v xyc ),
т.е. можно выделить 3 вида дизъюнктов внутри каждого конъюнкта:
1. Одиночные литералы (то, к чему следует стремиться: в правильной КНФ все дизъюнкты должны быть одиночными литералами).
2. Дизъюнкты вида П xf , которые по правилу де Моргана можно легко свести к одиночным литералам.
3. Дизъюнкты вида П , наиболее трудный случай, сведение скобок с такими дизъюнктами к КНФ иллюстрируется леммой 2.
Отдельного рассмотрения заслуживает операция вычисления переноса в следующий разряд при суммировании трёх слагаемых. Перенос может быть вычислен через соответствующую сумму:
c = carry(x,y,z,sum) = (sum® xyz ® xyz). Выполнение данного равенства эквивалентно истинности следующей формулы:
(c v (sum® xyz ® xyz)) • (c v (sum® xyz ® xyz)).
Приведённое выражение можно преобразовать, положив
x = c , A = sum, B = xyz, C = xyz .
И далее описанной выше процедурой можно построить соответствующую КНФ. Трудоемкость полученного алгоритма оценивается как O(n2) в зависимости от количества бит исходного числа. Для факторизации числа, представляемого двоичным вектором длиной 1024 бит, получились КНФ с 500 000 переменными, 12 000 000 скобок. Отметим, что результат о превышении числа верных бит после нескольких тысяч итераций алгоритма (5) относится именно к числу переменных. Например, из 500 000 переменных мы получаем в среднем более чем 300 000 верных, что в силу очевидных соотношений между битами переноса по строке, отвечающей нулевому биту, может существенно облегчить решение основной задачи.
Сведение к КНФ других задач криптоанализа
Были получены аналогичные алгоритмы сведения для задач дискретного логарифмирования и дискретного логарифмирования на эллиптической кривой. Предложен алгоритм генерации множества эквивалентных КНФ для задачи факторизации, учитывающий неделимость на малые простые числа. Последнее обстоятельство позволяет строить параллельные версии приведенных выше алгоритмов и методикой «голосования бит» определять верные биты с определенной вероятностью.
Заключение
Разработанный метод не уступает известным методам решения SAT на многих группах тестовых примеров и превосходит их на тестах задачи факторизации больших размерностей. Показан рост относительного числа верно найденных бит для задачи факторизации с ростом размерности задачи. Так, для рабочего числа бит 1024 среднее значение верных бит равно 61,75 %, что больше стартового значения в 59,5 % для 50 бит. Кроме того, показано наличие «слабых» размерностей, для которых метод является эффективным. Анало-
гичные результаты получены и для задачи дискретного логарифмирования, но основным препятствием здесь является высокая размерность получающихся задач. Так, для 1024 бит число переменных в функционале оценивается величиной 1000 000 000, а число дизъюнктов на порядок больше. Результаты точного решения КНФ, эквивалентных задаче дискретного логарифмирования, приведены в табл. 3.
Таблица 3
Результаты тестирования полного алгоритма для задачи дискретного логарифмирования
Размерность, бит Количество литералов Количество дизъюнктов Время решения методом последовательных приближений, с Время решения алгоритмом RANOV, с (победитель 2005 г.) Время решения алгоритмом 8АТ2, с (один из лучших переборных алгоритмов)
18 28224 448018 63,57 97,23 81,16
20 38840 623239 108,20 >1800 >1800
22 51832 839032 182,73 >1800 >1800
24 67440 1099630 277,46 >1800 >1800
26 85904 1409250 417,71 >1800 >1800
Примечание. Знак «>» означает, что за указанное время решение найдено не было.
ЛИТЕРАТУРА
1. Беспалов Д.В. Пропозициональные алгоритмы в задачах несимметричной криптографии // Вестник ТГУ. Приложение. 2004. № 9(1).
2. БеспаловД.В., Семёнов А.А. О логических выражениях для задачи 2-ФАКТОРИЗАЦИЯ // Вычислительные технологии. 2002. Т. 7. Ч. 2.
3. Найфе А. Методы возмущений. М.: Мир, 1976.
4. Файзуллин Р.Т. О решении нелинейных алгебраических систем гидравлики // Сибирский журнал индустриальной математики. 1999. № 2. С. 176 - 184.
5. Файзуллин Р.Т., Хныкин И.Г., Дулькейт В.И., Салаев Е.В. Алгоритм минимизации функционала, ассоциированного с задачей 3-SAT и его практические применения. Челябинск, 2007.
6. Хныкин И.Г. Модификация КНФ, эквивалентных задачам криптоанализа асимметричных шифров, методом резолюции // ИТМУ. 2007. № 8.
7. Cook S.A. The Complexity of Theorem Proving Procedures. Proceedings Third Annual ACM Symposium on Theory of Computing, May 1971.
8. Gu J., Purdom P.W., Franco J., Wah B. W. Algorithms for the Satisfiability Problem: A Survey // DIMACS Series in Discrete Mathematics and Theoretical Computer Science. 1996. Р. 19 - 151.