2) правила обработки композиции функций;
3) правила работы с локальными переменными и параметрами функции.
ЛИТЕРАТУРА
1. Стефанцов Д. А., Сафонов В. О., Першин В. В. и др. Модульный транслятор с языка ЛЯ-ПАС // Прикладная дискретная математика. Приложение. 2016. №8. С. 122-126.
2. https://github.com/tsu-iscd/lyapas-lcc — LYaPAS Compiler Chain. 2018.
3. Агибалов Г. П., Липский В. Б., Панкратова И. А. О криптографическом расширении и его реализации для русского языка программирования // Прикладная дискретная математика. 2013. №3. С. 93-104.
4. https://github.com/tsu-iscd/lyapas-lcc/blob/73b21bcd5f674bc6762a379bc32f71f61ee51164/ doc/cyaz.md — LYaPAS Cyaz Documentation. 2018.
УДК 510.52 DOI 10.17223/2226308X/11/41
0 ГЕНЕРИЧЕСКОЙ СЛОЖНОСТИ ПРОБЛЕМЫ ДИСКРЕТНОГО ЛОГАРИФМА В ГРУППАХ ТОЧЕК ЭЛЛИПТИЧЕСКИХ КРИВЫХ
НАД КОНЕЧНЫМИ ПОЛЯМИ1
А. Н. Рыбалов
Изучается генерическая сложность проблемы дискретного логарифма в группах точек эллиптических кривых над GF(p), где p — простое. Доказывается, что её естественная подпроблема генерически трудноразрешима (то есть трудна для почти всех входов) при условии, что проблема дискретного логарифма для эллиптических кривых трудноразрешима в классическом смысле.
Ключевые слова: генерическая сложность, дискретный логарифм, эллиптическая кривая.
Введение
Эллиптическая криптография занимается разработкой криптосистем с открытым ключом, основанных на эллиптических кривых над конечными полями. В качестве базиса для этих криптосистем используется проблема дискретного логарифма в группах точек эллиптических кривых над конечными полями. Основное преимущество эллиптической криптографии заключается в том, что на сегодняшний день не известно даже субэкспоненциальных алгоритмов решения проблемы дискретного логарифма на эллиптических кривых, в отличие от проблемы дискретного логарифма в конечных полях. Рассмотрим проблему дискретного логарифма в группах точек эллиптических кривых над конечными полями GF(p), где p — простое. Эллиптические кривые над такими полями используются в протоколах электронной цифровой подписи ECDSA и ГОСТ Р 34.10-2012.
В [1] развита теория генерической сложности вычислений. В рамках этого подхода алгоритмическая проблема рассматривается не на всём множестве входов, а на некотором подмножестве «почти всех» входов. Такие входы образуют так называемое генерическое множество. Понятие «почти все» формализуется введением естественной меры на множестве входных данных. С точки зрения современной криптографии интересны такие алгоритмические проблемы, которые, являясь (гипотетически) трудными в классическом смысле, остаются трудными и в генерическом смысле, т. е. для почти
1 Работа поддержана грантом РФФИ, проект №18-41-550001.
всех входов. Это объясняется тем, что при случайной генерации ключей в криптографическом алгоритме происходит генерация входа некоторой трудной алгоритмической проблемы, лежащей в основе алгоритма. Если проблема является генерически легкоразрешимой, то для почти всех таких входов её можно быстро решить и ключи почти всегда будут нестойкими. Поэтому проблема должна быть генерически трудной.
В работе доказывается, что естественная подпроблема проблемы дискретного логарифма в группах точек эллиптических кривых над конечными полями GF(p) генериче-ски неразрешима за полиномиальное время при условии отсутствия полиномиального вероятностного алгоритма для её решения в худшем случае. Существует правдоподобная гипотеза о том, что любой полиномиальный вероятностный алгоритм можно эффективно дерандомизировать, т. е. построить полиномиальный детерминированный алгоритм, решающий ту же задачу. Хотя это пока не доказано, имеются серьезные результаты в пользу этого [2].
1. Генерические алгоритмы
Пусть I есть множество всех входов некоторой алгоритмической проблемы и In — множество всех входов размера п. Для подмножества S С I определим последовательность
fQ, Is n In| 1 _ _
pn(S) = |М , п =1, 2, 3,...
|In|
Заметим, что pn(S) —это вероятность попасть в S при случайной и равновероятной генерации входов из In. Асимптотической плотностью S назовём предел (если он существует)
p(S) = lim pn(S).
n—y^o
Множество S называется генерическим, если p(S) = 1, и пренебрежимым, если p(S) = 0. Очевидно, что S генерическое тогда и только тогда, когда его дополнение I \ S пренебрежимо.
Алгоритм A с множеством входов I и множеством выходов J U {?} (? G J) называется генерическим, если
1) A останавливается на всех входах из I;
2) множество {x G I : A(x) =?} пренебрежимо.
Генерический алгоритм A вычисляет функцию f : I ^ J, если для всех x G I A(x) = y G J ^ f (x) = y. Ситуация A(x) =? означает, что A не может вычислить функцию f на аргументе x. Условие 2 гарантирует, что A корректно вычисляет f на почти всех входах (входах из генерического множества).
2. Эллиптические кривые и проблема дискретного логарифма
Пусть p > 3 — простое число. Эллиптической кривой над конечным полем GF(p) называется множество точек
E = {(x, y) G GF(p)2 : y2 = x3 + ax + b},
где a,b G GF(p) такие, что А = 4a3 + 27b2 = 0. К этим точкам добавляется так называемая «точка на бесконечности». На точках эллиптической кривой E вводится операция сложения [3], относительно которой E становится абелевой группой G(E) с нулем — точкой на бесконечности. Для точки B G G(E) обозначим
(B) = {A G G(E) : A = nB, n G N}.
Проблема дискретного логарифма для эллиптических кривых над конечными полями состоит в вычислении функции С1е : I ^ N где I — это множество четвёрок (А,В,Е,р), таких, что р — простое число, Е — фиксированная эллиптическая кривая над 0¥(р), В — фиксированная точка из 0(Е), А — произвольная точка из (В). Сама функция С1е определяется следующим образом:
С1е(А, В, Е,р) = х ^ хВ = А е О(Е).
Под размером входа понимается число разрядов в двоичной записи числа р. В настоящее время неизвестно полиномиальных алгоритмов (даже вероятностных) для вычисления функции С1е. Это обстоятельство лежит в основе криптостойкости многочисленных криптографических алгоритмов [3].
Для изучения генерической сложности этой проблемы необходимо провести некоторую стратификацию на множестве входов. Рассмотрим любую бесконечную последовательность простых чисел
п = {Р1,Р2, ... ,Рп,...},
удовлетворяющую условию 2п ^ рп < 2п+1 для любого п. Будем называть такую последовательность экспоненциальной. Теперь определим функцию С1еП как ограничение функции С1е на множество четвёрок (А, В, Е,р), таких, что р е п. Заметим, что для этой функции множество всех входов размера п состоит из четвёрок (А, В, Е,р) с фиксированными В, Е,р и произвольной точкой А е (В). Очевидно, что проблема вычисления С1еП является подпроблемой вычисления С1е. Следующая лемма показывает, что некоторые такие подпроблемы так же трудны, как и оригинальная проблема.
Лемма 1. Если не существует полиномиального вероятностного алгоритма для вычисления С1е, то найдётся такая экспоненциальная последовательность простых чисел п, что и для вычисления С1еП нет полиномиального вероятностного алгоритма.
Доказательство. Пусть Р1,Р2,... — все полиномиальные вероятностные алгоритмы. Из предположения о том, что не существует полиномиального вероятностного алгоритма для вычисления С1е, следует, что для любого алгоритма Рп существует бесконечно много троек В, Е,р, для которых он не может вычислить С1е. Из этого следует, что можно выбрать последовательность п' = {р1,р2,...} так, чтобы алгоритм Рп не вычислял С1е для В, Е,р и для любого п выполнялось бы рп+1 > 2рп. Последовательность п' можно расширить до экспоненциальной последовательности п, добавив, где нужно, новые члены. Заметим теперь, что С1еП и будет той функцией, для вычисления которой не существует полиномиального алгоритма. ■
3. Основной результат
Следующий результат говорит о том, что проблема дискретного логарифма для эллиптических кривых над конечными полями остается вычислительно трудной и в ге-нерическом случае при условии её трудноразрешимости в худшем случае.
Теорема 1. Пусть п — любая экспоненциальная последовательность простых чисел. Если существует полиномиальный генерический алгоритм, вычисляющий функцию С1еП, то существует полиномиальный вероятностный алгоритм, вычисляющий С1еП для всех входов.
Доказательство. Пусть существует полиномиальный генерический алгоритм А, вычисляющий функцию С1еП. Построим вероятностный полиномиальный алгоритм В,
вычисляющий dlen на всём множестве входов. Алгоритм B на входе (A,B,E,p) работает следующим образом:
1) Сгенерировать случайно и равномерно y Е {0,...,p — 1} и вычислить A' = A + yB.
2) Запустить алгоритм A на (A', B, E,p).
3) Если A(A', B, E,p) = z Е N, то A' = zB = A+yB, откуда x = z—y — дискретный логарифм для исходной задачи (A, B, E,p).
4) Если A(A', B, E,p) =?, то выдать 0.
Заметим, что алгоритм B может выдать неправильный ответ только на шаге 4. Докажем, что вероятность этого меньше 1/2. Действительно, A' = A+yB при y = 0,... , p— 1 пробегает все элементы (B), поэтому множество {(A', B, E,p) : y Е {0,... ,p — 1}} совпадает с множеством всех входов размера n. Но алгоритм A генерический, поэтому доля тех входов (A',B,E,p), на которых он выдаёт неопределённый ответ, стремится к 0 с ростом n и с некоторого момента становится меньше 1/2. ■
Непосредственным следствием теоремы 1 является следующая Теорема 2. Если для вычисления функции dle не существует полиномиального вероятностного алгоритма, то существует экспоненциальная последовательность п, такая, что для вычисления функции dlen не существует генерического полиномиального алгоритма.
ЛИТЕРАТУРА
1. KapovichI., Miasnikov A, Schupp P., and Shpilrain V. Generic-case complexity, decision problems in group theory and random walks // J. Algebra. 2003. V. 264. No. 2. P. 665-694.
2. Impagliazzo R. and Wigderson A. P=BPP unless E has subexponential circuits: Derandomizing the XOR lemma // Proc. 29th STOC. El Paso: ACM, 1997. P. 220-229.
3. Романьков В. А. Введение в криптографию. 2-е изд., испр. М.: ФОРУМ, 2012. 240с.
УДК 004.431.4 DOI 10.17223/2226308X/11/42
СОЗДАНИЕ СИСТЕМЫ ТИПОВ ДЛЯ СЕМЕЙСТВА ЯЗЫКОВ
АССЕМБЛЕРА
Н. В. Сороковиков
Строится система типов для семейства языков ассемблера, в том числе формально определяются команды, программы и термы языка. Показывается разрешимость задач населённости и проверки типа для ассемблеров с командами mov и jz.
Ключевые слова: система типов, ассемблер, статический анализ, бинарные приложения.
При анализе бинарных приложений исследователи полагаются на различные средства автоматизации. Одной из таких автоматизаций является извлечение типа данных участков памяти процесса. Под типом данных можно понимать стратегию использования участка памяти или, эквивалентно, взаимное расположение разных видов информации относительно друг друга в памяти. Уже существуют и используются средства для определения типов переменных [1], поэтому имеет смысл вопрос, каковы границы применимости статических способов нахождения типов в бинарной программе. Для ответа на этот вопрос можно воспользоваться аппаратом теории типов, а для этого необходимо построить систему типов для языков ассемблера.