№1 ПРИЛОЖЕНИЕ Сентябрь 2009
Секция 6
ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ДИСКРЕТНОЙ МАТЕМАТИКЕ
УДК 519.61
ЭКСПЕРИМЕНТАЛЬНАЯ ПРОГРАММНАЯ ОЦЕНКА РАЗМЕРА СПИСКА ПРОСТЫХ ЧИСЕЛ, НЕОБХОДИМЫХ ДЛЯ ОТСЕВА ПОЛИНОМИАЛЬНЫХ УРАВНЕНИЙ БЕЗ ЦЕЛЫХ КОРНЕЙ
Ю. Л. Зачёсов, Н. П. Салихов
В [1] для решения сравнения
P(x) = 0 mod N, (1)
где P(x) — многочлен с целыми коэффициентами, N — произведение неизвестных достаточно больших простых чисел, строятся многочлены Qi(x) с целыми коэффициентами и целые числа jmin(i) ^ jmax(i),i = 1,... , т, т — параметр алгоритма, такие, что любое решение Хо сравнения (1) удовлетворяет равенству
Qi(xo)= j • Nh (2)
(где натуральное число h — параметр алгоритма) при некотором неизвестном
j е {jmin(i), . . . , jmax(i)}. В связи с Этим при больших числах Hi = jmin(i) - jmax(i) + 1
актуальна задача: найти те j е {jmin(i),... , jmax(i)}, при которых уравнение (2) не имеет целых корней, не решая уравнение (2).
Один из способов такого быстрого отсева j указан в [1] и основан на применении одной теоремы Гаусса. Рассмотрим некоторое обобщение задачи. Пусть f (x),g(x) — многочлены с целыми коэффициентами, и требуется выяснить, возможно ли равенство
f (x) = j • g(x) (3)
при некотором целом x и некотором целом j е {jmin(i), ... , jmax(i)} (jmin, jmax — целые числа), не решая уравнение (3).
Предложенный далее метод отсева j, при которых уравнение (3) не имеет целых корней, обобщает упомянутый метод из [1]. Для простого числа p определим множество Jp = {у е 0,1,... ,р — 1 : д(у) = 0 mod p}. Пусть для p выполняется условие: | Jp| < p и если | Jp| > 0, то f (у) = 0 mod p для любого у е Jp. В этом случае, если x = vp + у, где v — целое, у е Jp, равенство
f (vp + у) = j • g(vp + у) (4)
невозможно при любом целом j.
Пусть теперь x = vp + у, у е {0,1,... ,p — 1}\Jp, и выполняется равенство (4). Тогда ост^(у)^) = ост^'^) • ост^у)^) mod p, где оет^т^) е {0,1,... ,p — 1} — остаток от деления целого m на p. Так как у е Jp, то ост^у)^) е {1,... ,p — 1}, существует единственное число z е {1,... ,p — 1}, такое, что
z • ост^у)^) = 1 mod p (5)
(z — обратный элемент к элементу ост^у)^) в поле GF(p)).
Отсюда следует, что ост^'^) = ост(z • ост(f (y),p),p). Последнее равенство служит для отсева j, при которых уравнение (3) не имеет целых корней. Пусть сначала um = 0 для m = 0,1,... ,p — 1. Для каждого у е {0,1,... ,p — 1}\Jp найдём z из сравнения (5) и затем число m = ост(z • ост(f (y),p),p); положим um = 1. В результате будет построено множество U(p) тех m = 0,1,...,p — 1, при которых um = 0; |U(p)| = r(p), r(p) е
{|Jp |,...,p — 1}.
Если для заданного целого j выполняются равенства
ост( j, p) = m,um = 0, (6)
то уравнение (3) не имеет целых корней. Заметим, что вместо трудоёмкого алгоритма решения уравнения (3) здесь используются только две операции (6). Для многочленов f (x) степени большей 1 обычно выполняется предположение: величина ост^(у), p) принимает значения 0,1,... ,p—1 с равными вероятностями 1/p, когда у = 0,1,... , p— 1. Естественно предположить, что величина ост^'^) принимает значения 0,1,... ,p — 1 с равными вероятностями 1/p, когда j е {jmin,. . . , jmax}. При этом предположении вероятность не отсеять j с помощью операции (6) равна 1 — (r(p))/p, где r(p) — случайная величина, равная числу пустых ящиков при бросании в p ящиков d(p) = p — | Jp|
дробинок с вероятностью 1/p попадания дробинки в k-й ящик при k = 1,... ,p.
Рассмотрим теперь несколько простых чисел pi,... ,ps, удовлетворяющих условию, и будем отсеивать j с помощью s равенств вида (6), то есть отсеивать j, если (6) выполняется для одного из чисел pi,... ,ps (работаем до первого выполнения (6)).
Будем предполагать, что случайные величины ост^'^),... , ост^'^), а также случайные величины ri = r(pi), i = 1,... , s, независимы. Тогда вероятность не отсеять j с помощью s равенств (6) равна Ps = ПS=i(1 — ri/pi). Пусть H = jmax—jmin — случайное число случайных j. Положим di = d(pi), i = 1,... , s. Если многочлен g(x) фиксирован, а f (x) — случайный многочлен, то можно найти математическое ожидание и дисперсию для числа H0 не отсеянных значений j. Используя формулы (7), (9) из [2] для математического ожидания величин ri,ri(ri — 1), найдём
H П
і=і
1 - ( 1 - — p»
H П
і=1
1 - (1 - — p»
pi
»=і
1 + ( 1 - -p»
2
1 - - | -
p».
di
2 - — p»
1 - -p»
di
- (EHo)2. (7)
Формулы (7) дают возможность ещё до вычисления Гі,... , г8 найти 5, гарантирующее небольшое число не отсеянных і (неравенство в (7) даёт эту возможность даже не зная д(ж)). Был запрограммирован случай, когда д(ж) = ^, f (ж) = фг(ж), р1,... ,р8 — первые простые числа. При этом |/(р^)| = 0,^ = р^. Для ускорения перебора целых і Є {ітіп(ї),... ,ітах(ї)} использовалась китайская теорема об остатках, а именно, перебирались все
»=і
d
Здесь ]* — очередное число, имеющее при делении на р1,... ,рл остатки ^1,..., ^л соответственно, где ^ € {0, 1,. . . ,р4 — 1}\и(р4) для £ = 1,.. . , А, А € {1,. . . , в} — параметр
алгоритма, v — целое число, vQ(j*) = vQ
lin j
Пі=1 Pi
t-J
Vl = Vi(j *).
I Пг=1 рг _
Числа ] * генерируются в А вложенных циклах, в которых постепенно вычисляется сумма вида £Л=1 ^е», а е» находятся с помощью алгоритма Евклида. Каждое из VI — + 1 значений ] вида (8) далее отсеиваются с помощью рл+1,... , Р (при А < в).
Дальнейшее сокращение времени перебора ] достигалось за счёт сортировки опробу-
емых простых чисел pi,
,Ps:
Pi - ri ^ ... ^ рл - Гл ^ min (pi - r),
(Л+Ki^S)
— ^ ... ^ —. (9)
Рл+i Ps
Эти неравенства получены из анализа трудоёмкости алгоритма перебора всех ПЛ=1(Рг — ri) чисел j* по китайской теореме, средней трудоёмкости алгоритма отсева j вида (8) с помощью проверки равенств (6) для p = рл±1,... ,ps. Указанные трудоёмкости алгоритмов минимизируются с помощью теоремы S из [3], что приводит к сортировкам (9). Возможна также минимизация алгоритма по А. В табл. 1 и 2 приведены результаты экспериментов. Тестирование производилось на двух двуядерных процессорах Intel Core(TM) 2 Duo T7200, 2.00 ГГц с 16 Гб оперативной памяти и 64разрядной операционной системой. В качестве средства разработки применялся пакет символьных вычислений фирмы Wolfram Research mathematica 6.
Эксперименты проводились с модулем, размер которого составлял порядка 10229. Здесь ¿lll, ¿у-й, ¿all — времена решения этапа алгоритма LLL, полиномиальных уравнений и общее время решения задачи соответственно.
Таблица 1
Восемь разных примеров при s = 52, Л = 0, EH0 = 7, 7 ■ 10-5
№ ¿LLL ¿у-й ¿ALL HPs H +1 Hq
1 27 3,8 31,5 4,2 ■ 10-11 1,5 ■ 10-5 359401 0
2 20,6 6,8 28 5,4 ■ 10-11 5, 2 1 О 1 Сл 948060 0
3 29,99 30556,5 30584,5 6,8 ■ 10-11 0,31 4,6 ■ 109 0
4 27,3 1,8 ■ 10-11 681,7 w 3,8 ■ 1013
5 308,7 15,95 338,5 3,6 ■ 10-11 8, 9 1 О 1 Сл 2,4 ■ 106 0
6 311,3 3,1 ■ 10-11 28,5 w 9,1 ■ 1011
7 11933,4 2,2 12121,5 9 ■ 10-11 1,1 ■ 10-8 128 0
8 6106 3,5 ■ 10-11 24,5 6,9 ■ 1011
Таблица 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 5,4 ■ 10-11 5,2 ■ 10-5 948060 1
9 5 52 2,61 5,4 ■ 10-11 5,2 ■ 10-5 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 ^ x ^ q — 1, такое, что ax = b(modp).