
- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
§ 5.4. Дискретное логарифмирование в полях Галуа |
137 |
§ 5.4. Дискретное логарифмирование в полях Галуа
Фиксируем простое число p, натуральное число n > 1, и обозначим q = pn. Пусть a — образующий элемент циклической группы GF(q) . Мы хотим решить уравнение
ax = b |
(5.4) |
в GF(q). Для этого также используются алгоритмы с факторными базами. В случае, когда p невелико, такой алгоритм описан в [144, гл. 4]. Он
имеет эвристическую оценку сложности |
|
|
|
1 |
|
||
Lq |
|
2 ; const арифметических |
|||||
операций. |
|
|
|
||||
Алгоритм index-calculus. |
|
|
|
|
|
||
1 этап. |
(Предварительные вычисления.) Поле GF(q) изоморф- |
||||||
но GF(p) [y]/(f(y)), |
где f(y) GF(p) [y] — неприводимый унитарный |
||||||
многочлен |
степени |
n. Поэтому элементы |
|
поля GF(q) представимы |
в виде многочленов степени не более n − 1. Умножение таких многочленов производится по модулю f(y). В частности, a = a(y) — некоторый многочлен. Элемент a1 = a(q−1)/(p−1) имеет порядок p − 1 и образует GF(p) . С его помощью мы составляем таблицу логарифмов «констант» — т. е. элементов простого поля GF(p) GF(q). Для этого мы вычисляем a01 = 1, a1, a21, . . . , ap1−2; это делается быстро, так как мы предположили, что p невелико.
2 этап. (Выбор факторной базы.) Факторная база B GF(q) состоит из всех неприводимых многочленов g степени не выше t, где t — некоторый параметр, t < n (выбор параметра t связан с оценкой сложности алгоритма).
3этап. (Нахождение соотношений.) Случайно перебирая m, 1 m
q − 2, мы находим те значения, для которых выполнено соотношение
am ≡ c0 |
|
g g (m) (mod f(y)), |
|
|
g B |
где c0 GF(p). Для факторизации нам приходится использовать деление многочленов над конечным полем. Из найденного соотношения следует, что
m ≡ loga c0 + g (m) loga g (mod q − 1).
g B
Здесь loga c0 нам уже известны, а loga g — неизвестные величины.

138 Гл. 5. Алгоритмы дискретного логарифмирования
4 этап. (Нахождение алгоритмов элементов факторной базы.) Найдя на 3 этапе достаточно много соотношений (больше, чем |B|), мы решаем систему линейных уравнений в кольце Z/(q − 1)Z и находим
loga g для g B.
5 этап. (Нахождение индивидуального логарифма.) В простейшей версии алгоритма мы ищем одно значение m, для которого
b · am ≡ c1 |
g g (mod f(x)), |
g B |
|
|
|
где c1 GF(p). Отсюда находим искомое значение |
|
loga b ≡ −m + loga c1 + |
q loga g (mod q − 1). |
|
g B |
|
|
Конец алгоритма.
В случае, когда p велико, описанный выше алгоритм неэффективен. Для логарифмирования в поле GF(p2) Эль Гамаль в работе [108]
предложил алгоритм, имеющий оценку сложности Lp 21 ; const ариф- |
|
метических операций. В его методе используется вложение |
поля GF(p2) |
в кольцо целых алгебраических чисел ZK некоторого мнимого квадратичного одноклассного поля K
f : GF(p2) → ZK .
Одноклассность поля K означает, что в ZK есть однозначное разложение на простые множители, и каждый идеал является главным. Наше уравнение ax = b в GF(p2) тогда перейдет в уравнение x = в ZK , где = f(a), = f(b). Далее используется стандартная схема логарифмирования с факторной базой, неоднократно описанная нами выше. При этом в качестве элементов факторной базы используются простые (неразложимые) элементы кольца ZK с небольшой нормой.
Заметим, что алгоритм Эль Гамаля явился, по сути, предвестником алгоритма решета числового поля.
Еще один алгоритм был предложен Эль Гамалем в работе [109]. Это алгоритм дискретного логарифмирования в поле GF(pn), где p —
большое простое число, n > 2. Он также имеет эвристическую субэкс-
1
2 ; const . В нем используется
представление GF(pn) в виде ZK/P, где ZK — кольцо целых алгебраических чисел числового поля K, P — простой идеал ZK c нормой, равной pn.

§ 5.4. Дискретное логарифмирование в полях Галуа |
139 |
|||||
Теперь рассмотрим случай p = 2, q = 2n. В 1984 г. в работе |
[95] |
|||||
Д. Копперсмит предложил |
алгоритм, который имеет эвристическую |
|||||
|
Lq |
3 |
; |
|
1 |
- |
оценку сложности |
|
1 |
|
const . Это был первый субэкспоненциаль |
||
|
|
|
ный алгоритм с показателем 3 ; для факторизации алгоритмы с такой оценкой сложности появились лишь в 1990 г. (решето числового поля; см. гл. 3).
Опишем идею алгоритма Копперсмита на примере. Этот алгоритм основан на нахождении хорошего представления поля GF(q) в виде GF(q) = GF(2) [x]/(P(x)), где неприводимый многочлен P(x) имеет вид P(x) = xn + Q(x), deg Q(x) < n2/3. Пусть n = 127; можно положить P(x) = x127 + x + 1 — неприводимый многочлен в GF(2) [x]. Мы будем рассматривать поле GF(2127) = GF(2) [x]/(P(x)). Пусть a = a(x) — образующий циклической группы GF(2127) . Предположим,
что мы выбрали |
A(x), B(x) GF(2) [x], |
deg A(x) 10, |
deg B(x) 10, |
|
НОД(A(x), B(x)) |
= 1. Мы рассматриваем A(x), B(x) |
как |
элементы |
|
GF(2127). Пусть |
C(x) = x32A(x) + B(x), |
тогда deg C(x) 42. |
Если мы |
|
рассмотрим многочлен D(x), |
|
|
|
|
D(x) ≡ C(x)4 (mod P(x)), |
deg D(x) < 127, |
|
|
то
D(x) ≡ x128A(x)4 + B(x)4 (mod P(x)),
и поскольку
x128 ≡ x2 + x (mod P(x)),
то
D(x) ≡ (x2 + x)A(x)4 + B(x)4 (mod P(x)).
Таким образом,
C(x)4 ≡ D(x) (mod P(x)), deg D(x) 42, deg C(x) 42.
Поскольку степени C(x) и D(x) невелики, то с достаточно высокой вероятностью они разложатся в произведение неприводимых многочленов малой степени, которые составляют факторную базу. То есть
C(x) ≡ gj (x)ej (mod P(x)),
j
D(x) ≡ gj (x)fj (mod P(x)).
j
140 |
Гл. 5. Алгоритмы дискретного логарифмирования |
Тогда сравнение
4 |
ej loga gj (x) ≡ |
fj loga gj (x) (mod q − 1) |
|
j |
j |
есть соотношение для неизвестных loga gj (x) — дискретных логарифмов элементов факторной базы нашего поля GF(2127). Это однородные уравнения. Однако можно считать, что наше основание a = a(x) в уравнении (5.4) само есть неприводимый многочлен малой степени, или что оно раскладывается в произведение таких многочленов:
a = a(x) ≡ gj (x)vj (mod P(x)).
j
Это дает нам неоднородное уравнение
1 = loga a ≡ vj loga gj (x) (mod q − 1),
j
и мы получаем неоднородную систему линейных уравнений относительно неизвестных величин loga gj (x). В остальном схема алгоритма Копперсмита аналогична схеме алгоритма Адлемана, описанного
в§ 5.3.
Вработах [269; 270] с помощью некоторого усовершенствования
алгоритма Копперсмита было проведено дискретное логарифмирование в поле GF(2607). Этап нахождения соотношений занял около 19 000 mips-years. Для решения систем линейных уравнений было использовано структурированное гауссово исключение, и затем для уплотненной системы был применен алгоритм Видемана (см. об этом алгоритме гл. 11). На решение системы линейных уравнений ушло более двух месяцев. Автор [269] также делает вывод о том, что ис-
пользованный им метод не позволяет осуществлять в настоящее время дискретное логарифмирование в GF(2n) для n 997.
О дискретном логарифмировании в поле GF(pn) см. также [173; 32].
§5.5. Дискретное логарифмирование и решето числового поля
В данном параграфе мы расскажем об алгоритмах решета числового поля для дискретного логарифмирования по простому модулю. Алгоритмы решета числового поля для факторизации появились несколько раньше (см. об этом § 3.6). Основываясь на идеях этих алгоритмов, Д. Гор-

§ 5.5. Дискретное логарифмирование и решето числового поля |
141 |
дон в 1993 г. в работе [127] предложил алгоритм решения уравнения
ax ≡ b (mod p), |
(5.5) |
где p — простое число; сложность алгоритма составляет эвристически
Lp |
1 |
; 32/3 |
арифметических операций. |
3 |
|||
Метод |
Гордона оказался непрактичным. Широкауер в работе [236] |
предложил свою версию алгоритма решета числового поля для решения (5.5) со сложностью Lp 13 ; (64/9)1/3 арифметических операций.
Его алгоритм был реализован Вебером, и в работе [274] описано лога |
- |
|||
|
|
|
||
рифмирование по модулю |
p |
1040 |
, а в работе [238] 1996 г. — по модулю |
|
65 |
|
|||
p 10 . Также Вебер в работе [275] провел некоторые предваритель- |
ные вычисления, связанные с дискретным логарифмированием по предложенному МакКарли модулю p 10129; позднее в [278] было найдено решение задачи (5.5) для данного p. Однако это число p имеет специальный вид, и поэтому используется специальное решето числового поля, работающее быстрее. Вебер в 1997 г. в своей диссертации [276] провел логарифмирование по модулю p 1085, не имеющему специального вида, как решетом числового поля (метод Широкауера), так и с помощью алгоритма Копперсмита—Одлыжко—Шреппеля (версия с гауссовыми целыми). При этом оказалось, что алгоритм решета числового поля работает медленнее для данного p (см. [277; 276]), чем алгоритм Копперсмита—Одлыжко—Шреппеля. Позднее Жу и Лерсье показали, что для p > 10100 алгоритмы решета числового поля работают быстрее, чем алгоритм Копперсмита—Одлыжко—Шреппеля, см. [134]. В январе 2001 г. Жу и Лерсье провели логарифмирование по модулю p 10110 (см. [135]), а в апреле 2001 г. — по модулю p 10120 (см. [136]). В настоящее время это — рекордное значение p для дискретного логарифмирования по простому модулю, не имеющему специального вида.
Прежде чем описать схему алгоритмов решета числового поля для решения (5.5), скажем еще несколько слов о других результатах в этой области.
Широкауер в работе [237] обобщил алгоритм работы [236] на случай поля GF(pn). При q = pn оценка сложности составляет Lq [1/3; (64/9)1/3] арифметических операций. Фактически это верно при фиксированном p и n → ∞. Согласно [237], указанная оценка справедлива и при log p > n2+ для некоторого > 0. Семаев в работе [247] также получил ряд результатов о дискретном логарифмировании в конечных непростых полях.

142 Гл. 5. Алгоритмы дискретного логарифмирования
В работе [33] идеи Копперсмита и Широкауера применены для
получения алгоритма дискретного логарифмирования в простом по- |
||||||||
ле GF(p) с√ |
|
|
1/3 |
|
Lp |
|
3 |
; c , где c = |
наилучшей известной оценкой сложности |
|
|
1 |
|
||||
|
|
|
|
|||||
= (92 + 26 |
13) |
|
|
/3 ≈ 1,902. |
|
|
|
|
Для чисел специального вида в работе [127] была предложена
версия алгоритма решета числового поля со сложностью Lp |
2 |
; c , |
|||||
5 |
|||||||
где c |
≈ |
1,00475. За счет того, что c близка к 1, такой алгоритм в неко- |
|||||
|
|||||||
торых случаях работает быстрее алгоритмов со сложностью |
|
1 |
; |
, |
|||
Lp 3 |
|||||||
как показывает пример работы [278]. |
|
c |
См. также [208; 152].
Теперь мы опишем, следуя [276], общую схему алгоритмов решета числового поля для решения задачи (5.5). Мы опишем также, в виде некоторого частного случая этой схемы, версию алгоритма Копперсмита—Одлыжко—Шреппеля с гауссовыми целыми. Принято рассматривать алгоритм работы [97] как отдельный метод, отличный от решета числового поля, поскольку он был придуман раньше и имеет собственную оценку сложности.
Далее в этом параграфе мы снова, как и в § 3.6, предполагаем, что читатель знаком с алгебраической теорией чисел в объеме книги [263].
Схема алгоритма.
1 этап. На этом этапе мы сводим решение уравнения (5.5) к решению уравнений
ax ≡ s (mod p), s S,
где S — некоторое конечное множество достаточно малых натуральных чисел. Грубо говоря, мы ищем одно z N, такое, что
|
az · b ≡ sj |
(mod p), |
|
|
|
|
||
|
|
j |
|
|
|
|
|
|
где sj — не очень большие простые числа, скажем, sj Lp |
2 |
; const . |
||||||
3 |
||||||||
|
z |
|
|
методом эллип |
||||
Факторизацию a · b (mod |
p) мы можем проводить |
|||||||
|
|
- |
||||||
тических кривых Ленстры |
(см. гл. |
4). Тогда S = {sj}, |
loga b ≡ −z + |
|||||
+ j |
loga sj (mod p − 1). |
|
|
|
|
|
|
2 этап. С помощью некоторой техники мы выбираем два многочлена g1 (x), g2 (x) Z [x], deg gi (x) = ni, i = 1, 2, имеющих общий корень
§ 5.5. Дискретное логарифмирование и решето числового поля |
143 |
m(mod p). Мы обозначаем для j = 1, 2:
j C — фиксированный корень gj (x), hj N — старший коэффициент gj (x),
Kj ≡ Q( j),
Oj = ZKj — кольцо целых алгебраических чисел поля Kj. Замечание 5.7. Версия алгоритма Копперсмита—Одлыжко—
Шреппеля с гауссовыми целыми в рамках данной схемы выглядит следующим образом:
1)n1 = 2; g1 (x) — неприводимый многочлен второй степени; поле K1 есть мнимое квадратичное одноклассное поле;
2)n2 = 1, g2 (x) — линейный многочлен вида Ux + V, U, V Z.
3 этап. (Выбор факторной базы.) Для j = 1, 2 мы находим факторные базы
Fj = { | — простые идеалы Oj, Norm < Bj} {hj}.
Здесь Bj — некоторые постоянные, субэкспоненциально зависящие от p.
4 этап. С помощью некоторого просеивания мы находим множество пар C = {(c, d)} Z2 такое, что для i = 1, 2 идеалы (hi (c + d i)) в кольце Oj гладки по отношению к факторной базе Fj. При этом множество C должно быть достаточно велико, |C| > |F1| + |F2|.
5 этап. Для каждого s S мы находим специальные соотношения. Для каждого простого идеала s O1, лежащего над s, мы находим пару чисел c, d такую, что идеал (h1 (c + d))/ 1 гладок по отношению к F1 и идеал (h2 (c + d 2)) гладок по отношению к F2.
6 этап. Для каждого большого простого числа q, делящего p − 1 (мы считаем, что факторизация p − 1 нам известна), делаем следующее.
1.Вычисляем так называемые аддитивные характеры Широкауера (определение см. ниже) от элементов hj (c + d j), j = 1, 2, (c, d) C.
2.Находим матрицу A с элементами из поля Z/qZ. Ее столбцы состоят из векторов показателей в разложении hj (c + d j) на простые идеалы и из значений аддитивных характеров.
3.Путем решения системы линейных уравнений AX ≡ 0 (mod q) находим элементы i Oi, i = 1, 2, такие, что i = qi , i Oi, i = 1, 2.
4.С помощью кольцевых эндоморфизмов
j : Z [hj j] → Z/pZ, j (hj j) ≡ hjm (mod p), j = 1, 2,
мы переходим от q-х степеней в кольцах Oj к целым числам и находим k, l Z такие, что ak · bl ≡ dq (mod p). Из этого следует, что

144 Гл. 5. Алгоритмы дискретного логарифмирования
k + lx ≡ 0 (mod q), где x (mod p − 1) — решение (5.5). Отсюда мы находим значение x (mod q).
Замечание 5.8. Для версии [97] с гауссовыми целыми нам не нужно вычислять аддитивные характеры Широкауера, поскольку мы работаем в кольцах Oi с однозначным разложением на множители и с конечной группой единиц.
7 этап. На 6 этапе мы нашли значение x (mod q) для больших простых делителей q числа p − 1. Предположим, что p − 1 не делится на квадрат большого простого числа. Тогда недостающие значения x (mod q q), где q — небольшие простые числа, q q p − 1, мы найдем с помощью алгоритма Полига—Хеллмана. Затем с помощью китайской теоремы об остатках мы найдем искомое значение x (mod p − 1).
Конец алгоритма.
Определим теперь аддитивные характеры Широкауера, возникающие на 6 этапе алгоритма. Пусть — алгебраическое число, deg = n, f(x) = anxn + . . . + a0 Z [x] — минимальный многочлен для , K = Q( ), O = ZK — кольцо целых алгебраических чисел поля K. Положим
Γ = { O | l NormK/Q ( )},
E = НОК |(O/b) | b — простые идеалы O, b|(l) .
Очевидно, что Γ является подгруппой относительно умножения. Рассмотрим отображение
: (Γ, ·) → lO/l2O, ( ) = E − 1 (mod l2O).
Нетрудно видеть, что является гомоморфизмом мультипликативной полугруппы в аддитивную группу lO/l2O. Пусть
O = Z 1 . . . Z n,
где |
|
, |
|
, |
n — целый |
базис |
кольца |
|
O. Тогда |
|
2 |
|
является |
|||
. . . |
|
lO/l |
O |
|||||||||||||
1 |
|
|
|
|
2 |
|
||||||||||
линейным |
пространством |
над |
Z/lZ |
с |
базисом |
l 1 (mod l nO), . . . |
||||||||||
. . . , l n (mod l2O). Пусть Ωi ≡ l i (mod l2O), и пусть i ( ) = i=1 biΩi, |
||||||||||||||||
где bi Z/lZ. Рассмотрим отображения |
|
i : Γ → Z/lZ, |
|
|
≡ bi |
(mod |
). |
|||||||||
|
|
i ( ) |
|
l |
Эти отображения называются аддитивными характерами Широкауера, причем однозначно определяется набором 1, . . . , n.
Вработе [236] показано, что при некоторых условиях из равенства
( ) = 0 следует, что = l, где O. Это обеспечивает нам нахождение элементов i = qi на 6 этапе алгоритма.
Теперь вкратце опишем просеивание, применяемое на 4 этапе алгоритма. Условие гладкости идеала (hi (c + d i)) в кольце Oi равносильно