Таблица 2
Один пример при разных Л, в = 52 и 9, для которого ЕН0 = 24662,7
№ A s Время решения уравнений (в с) Ps HPs Н + 1 Но
1 0 9 14,4 0,0146625 13901 948060 13916
2 1 9 11,5 0,0146625 13901 948060 13916
3 2 9 10,4 0,0146625 13901 948060 13916
4 3 9 10,3 0,0146625 13901 948060 13916
5 4 9 9,5 0,0146625 13901 948060 13916
6 5 9 9,7 0,0146625 13901 948060 13916
7 6 9 20,03 0,0146625 13901 948060 13916
8 4 52 2,47 СЛ 4 1 О 1 лл 2 1 О 1 Сл 948060 1
9 5 52 2,61 Сл 4 1 О 1 лл 2 1 о 1 Сл 948060 1
Из приведённых таблиц видно, что реальные Н0 и HPs близки. Отсюда можно сделать вывод, что предположения, при которых выведены формулы (7), верны. Для экспериментальной оценки необходимого размера списка простых была написана программа в пакете символьных вычислений mathematica 6, который предоставляет возможность, благодаря использованию функций трехмерной графики, за одно выполнение программы в приемлемое время получить картину поведения сложных математических функций.
ЛИТЕРАТУРА
1. Зачёсов Ю. Л., Салихов Н. П. О методе решения полиномиального сравнения
p(x) = 0 mod N // Обозрение прикладной и промышленной математики. 2008.
Т. 15. Вып. 5. С. 769-784.
2. Колчин В. Ф., Севастьянов Б. А., Чистяков В. П. Случайные размещения. М.: Наука, 1976.
3. Кнут Д. Искусство программирования для ЭВМ. Т. 3. Сортировка и поиск. М.: Мир, 1978. 844 с.
УДК 519.7
ДИСКРЕТНОЕ ЛОГАРИФМИРОВАНИЕ В ПОДГРУППАХ ПРОСТОГО ПОРЯДКА
И. А. Панкратова
Во многих криптосистемах, например в протоколах идентификации Окамото, Шнорра, в протоколе цифровой подписи Шаума — ван-Антверпена, в хэш-функции CvHP, в американском стандарте цифровой подписи DSS и других, вычисления выполняются в некоторой подгруппе (как правило, простого порядка) мультипликативной группы Z*. Соответственно стойкость таких криптосистем полагается на сложность задачи дискретного логарифмирования в подгруппах.
Пусть p — простое число, q — простой делитель p — 1, G — циклическая подгруппа порядка q группы Z*, а — порождающий элемент G. Тогда задача дискретного логарифмирования в G заключается в следующем: для данных p, q, а и элемента b £ G требуется найти единственное целое х, 0 ^ х ^ q — 1, такое, что ах = b(modp).
Обсудим возможности применения известных алгоритмов логарифмирования [1] для решения этой задачи.
Алгоритм Гельфонда (baby-step giant-step algorithm) и p-метод Полларда особенности группы никак не учитывают; их работоспособность зависит только от того, насколько велик её порядок, и время работы составляет 0(^/q). Таким образом, эти алгоритмы могут применяться для логарифмирования в группе G без каких-либо изменений и с тем же успехом, что и в других группах порядков, приблизительно равных q. Алгоритм Полига — Хеллмана совершенно неприменим для логарифмирования в группе простого порядка, так как в этом случае его работа сводится к полному перебору всех возможных значений логарифма. Алгоритм Адлемана (index calculus algorithm) имеет сложность 0(c(lnp)1/2); одним из его шагов является решение системы сравнений по модулю порядка группы. Поэтому алгоритм Адлемана кажется наиболее пригодным для логарифмирования в группе простого порядка, так как в этом случае приходится решать систему уравнений над полем, а не над кольцом, что много проще. Основная идея алгоритма состоит в том, что в группе G выбирается некоторое подмножество элементов S, называемое факторной базой, и сначала определяются логарифмы элементов этого подмножества. Затем с их помощью вычисляется искомый логарифм.
Алгоритм 1 (Адлемана)
Вход: G =< a >, |G| = n, b Є G.
Выход: x = loga b.
1. Выбираем факторную базу S = {pi,p2,... ,Pt}.
2. Ищем значения ak, разложимые в базе S; для этого:
2.1. Выбираем случайное k, 0 < k < n, и вычисляем y = ak.
t
2.2. Ищем разложение у = П pЄ; в случае успеха составляем линейное сравнение
i=1
t
J2ei ■ xi = k(mod n).
i=1
2.3. Шаги 2.1 и 2.2 повторяем до тех пор, пока не получим систему сравнений, имеющую единственное решение.
3. Решая полученную на шаге 2 систему сравнений, находим значения xi для всех i = 1, . . . , t.
4. Ищем x = loga b; для этого:
4.1. Выбираем случайное k, 0 ^ k < n, и вычисляем y = b ■ ak.
t
4.2. Ищем разложение y = p^; в случае успеха находим
i= 1
t
x = ei ■ xi — k(mod n), иначе возвращаемся к п. 4.1.
i=1
5. Ответ: x.
Нетрудно видеть, что если S С G, то получаемые в шаге 3 значения xi — это и есть логарифмы элементов факторной базы S: xi = loga pi; корректность вычисления x = loga b в этом случае очевидна. Если G = Zp, то в качестве S рекомендуется брать множество из t первых простых чисел. Если же G С Zp, то выбор факторной базы с условием S С G представляет собой определённую проблему, ведь не обязательно все первые простые числа принадлежат G. В работе [2] предлагается выбирать факторную базу S С Zp, не обязательно S С G. При условии p = q ■ s + 1, где (q, s) = 1, алгоритм 1 остаётся работоспособным, даже если S С G.
Утверждение 1. Пусть p = q ■ s + 1, где p простое и (q, s) = 1, G — подгруппа Zp порядка q. Алгоритм 1 корректно решает задачу дискретного логарифмирования в группе G при выборе любого непустого подмножества Zp\{1} в качестве факторной базы.
Доказательство. Заметим, что группа G есть множество всех вычетов степени s по модулю р, т. е. множество тех и только тех элементов группы Zp, логарифмы которых по основанию g кратны s.
t
Рассмотрим разложение akmodр = П p^. Пусть s' = s-1 mod q. Тогда a^S =
i=1
( t t 7 e = a(modp) и ak = aS^fc = I П PeM = П (pS^O * (modp). Поскольку p| G G, то
i=1 i i=1 i i
и pfs G G. Следовательно, существует x = loga p|^s ; именно это значение и будет
найдено в шаге 3 алгоритма Адлемана при решении системы сравнений. Для шага 4
/ ( t \SS/
проведём те же рассуждения: y G G, откуда y^S = y(modp), b ■ ak = I П p¿M =
t / t t = П (pS s" (mod p). Тогда loga b = ei ■ loga p|^s — k(mod q) = ei ■ x — k(mod q). ■
i=1 i=1 i=1
Присмотримся к элементу pfs , логарифм которого вычисляется в шаге 3 алгоритма. Составим и решим сравнение
yS = ps (mod p).
Получаем s ■ log y = s ■ log pi (mod p — 1),
log y = log p¿(mod q),
log y G {log pi, log pi + q,... , log pi + (s — 1) ■ q},
y G Y = {pi,pi ■ gq,...,pi ■ g(S-1>q} = {glogPi+q^t : t = 0,...,s — 1}.
Множество Y — это все корни s-й степени из pS. Здесь t пробегает полную систему вычетов по модулю s и (q, s) = 1, значит, и logpi + q ■ t также пробегает полную систему вычетов по модулю s. Поскольку единственный из показателей logpi + q ■ t кратен s, то один и только один элемент из Y, а именно p|^s , принадлежит G. Другими словами, при решении системы сравнений в шаге 3 алгоритма 1 в качестве значения переменной Xi будет вычислен логарифм того корня s-й степени из pS, который принадлежит G. В случае, если s = 2k (в частности, если p — надёжное простое число; тогда s = 2), можно расширить факторную базу S без увеличения количества переменных. А именно: для каждого pi G S вычисляем все корни s-й степени из pS по модулю p (это можно сделать, так как вычисление квадратных корней по простому модулю — лёгкая задача) и включаем их в факторную базу, сопоставляя всем им одну и ту же переменную.
Для сравнения заметим, что, например, «Handbook of Applied Cryptography» [1] предлагает решать задачу дискретного логарифмирования в подгруппе простого порядка следующим образом.
Пусть Zp =< g>, p = q ■ s + 1, q простое, G =< a > — подгруппа Zp порядка q и b G G. С помощью алгоритма Адлемана найдём y = logg a и z = logg b в Zp. В силу равенств aq = g^q = 1(mod p) и Op(g) = p — 1 = q ■ s выполняется условие (q ■ s)|(y ■ q), т. е. s|y. Аналогично, ввиду b G G, верно, что s|z. Пусть y = s ■ y1, z = s ■ z1. Запишем:
azi = g^zi = gyi^zi = gyrz = byi(modp), откуда получаем x = logab = z1 • y-1modq. Здесь y-1mod q всегда существует в силу условия 0 < y1 < q.
При таком подходе нужно дважды решать задачу логарифмирования в Zp, что предполагает решение двух систем линейных уравнений над кольцом, в то время как в методе [2] решается одна система линейных уравнений над полем. Что касается ограничения (q, s) = 1, то это условие автоматически выполнено, если простое p построено методом Маурера (так как в этом случае s < q), и выполнено с вероятностью (q — 1)/q, если p построено по алгоритму ГОСТ (поскольку s — случайное число в некотором диапазоне, в котором каждое q-е число кратно q). Таким образом, в большинстве случаев задачу логарифмирования в числовой группе G простого порядка можно решать методом Адлемана, не требуя выбора факторной базы как подмножества G.
ЛИТЕРАТУРА
1. Menezes A. J., Van Oorshot P. C., Vanstone S. A. Handbook of Applied Cryptography. N. Y.: CRC Press Series on Discrete Mathematics and Its Applications, 1997.
2. Белов А. Г. Исследование алгоритма дискретного логарифмирования Адлемана // Вестник Томского госуниверситета. Приложение. 2005. №14. С. 45-49.
УДК 519.7
ЗАДАЧИ ЛИНЕЙНОЙ АЛГЕБРЫ, СООТНЕСЕННЫЕ С ЗАДАЧЕЙ ВЫПОЛНИМОСТЬ
Р. Т. Файзуллин
Рассмотрим переход от задачи 3-ВЫПОЛНИМОСТЬ к задаче решения систем линейных алгебраических уравнений. Пусть дана КНФ:
M
L(x) = П Ci, (1)
i=1
где C — дизъюнкты вида Vqj. Здесь qj = x- или qj = Xj .
Заметим, что каждому дизъюнкту можно поставить в соответствие уравнение, связывающее уже вещественные переменные. В правой части стоят единицы, а переход от булевых переменных к вещественным осуществляется согласно формулам: Xj ^ у-, Xj ^ 1 — у- . В этом случае мы получаем систему линейных алгебраических уравнений с прямоугольной матрицей:
Ay = f. (2)
Обратим внимание на то очевидное обстоятельство, что правая часть fj равна количеству qij, принимающих значение ИСТИНА в исходной КНФ. Систему можно преобразовать согласно формуле
RAy = Bf = Rf = g. (3)
Попытаемся построить матрицу B таким образом, чтобы получить в итоге симметричную матрицу. Рассмотрим переменную с индексом j и соответствующие ей уравнения в (3). Будем складывать эти уравнения, аккумулируя неизвестные в j-й строке B, умножая их на —1 , если переменная входит в уравнение со знаком минус. Тогда верна следующая лемма.
Лемма. Итоговая матрица B симметрична.