- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
114 Гл. 4. Применение кривых для проверки простоты и факторизации
нам вообще не нужно будет проводить деление по модулю n. Однако Коен [89, гл. 10] все же рекомендует аффинные координаты в сочетании с усовершенствованием Монтгомери.
Замечание 4.8. Алгоритм Ленстры аналогичен (P − 1)-методу Полларда, описанному в гл. 2. В нем, так же, как и в (P − 1)-методе, возможна вторая стадия, см. [89; 192; 74].
§4.3. Вычисление порядка группы точек эллиптической кривой над конечным полем
Вычисление порядка группы точек на эллиптической кривой над конечным простым полем имеет важные приложения как в криптографии, так и в алгоритмах проверки простоты чисел, о которых будет рассказано в следующем параграфе.
Пусть p — простое число, p > 3, эллиптическая кривая E = Ea,b
над полем Z/pZ задана уравнением y2 = x3 + ax + b. Для нахождения |E(Z/pZ)| Р. Шуф в 1985 г. в работе [244] предложил алгоритм, имеющий полиномиальную сложность O(log8 p) битовых операций (см. также [245]). Дальнейшие усовершенствования алгоритма Шуфа были предложены Аткином, Элкисом, Мюллером и другими авторами, см. [65; 113; 202; 171; 245]. Это позволило на практике вычислять порядки групп точек для простых полей, число элементов которых записывается несколькими сотнями десятичных цифр; рекордное значение p равно 10499 + 153.
В данном параграфе мы опишем первоначальный алгоритм Шуфа из работы [244].
Обозначим через Z/pZ алгебраическое замыкание поля Z/pZ. Отображение Фробениуса : E(Z/pZ) → E(Z/pZ) определяется соот-
ношениями |
(O) = O. |
(x, y) = (xp, yp), |
|
Нетрудно доказать, что является |
гомоморфизмом и вложением |
E(Z/pZ) в себя; очевидно, что точки E(Z/pZ) остаются неподвижными при действии . Пусть
|E(Z/pZ)| = p + 1 − t,
по теореме Хассе |t| < 2√p. Целое число t называется следом отображения Фробениуса; отображение удовлетворяет уравнению
2 − t + p = 0.
§ 4.3. Вычисление порядка группы точек эллиптической кривой |
115 |
Для каждого натурального числа n обозначим через E[n] подгруппу E(Z/pZ), состоящую из точек, порядок которых делит n:
E[n] = {P E(Z/pZ) | nP = O}.
Теорема 4.9 (см. [256]). Если n > 1 и p не делит n, то группа E[n] изоморфна Z/pZ × Z/pZ.
Пример 4.10. Рассмотрим x1, x2, x3 — три различных корня уравнения x3 + ax + b = 0 в Z/pZ. Тогда
E[2] = {(xi, 0) : i = 1, 2, 3} {O}.
Определим многочлены n (x, y) Z/pZ [x, y], n = −1, 0, 1, 2, . . ., следующими соотношениями:
−1 (x, y) = −1, 0 (x, y) = 0, 1 (x, y) = 1, 2 (x, y) = 2y,3 (x, y) = 3x4 + 6ax2 + 12bx − a2,
4 (x, y) = 4y(x6 + 5ax4 + 20bx3 − 5a2x2 − 4abx − 8b2 − a3); далее при n 3
2n (x, y) = n (x, y) ( n+2 (x, y) n−1 (x, y)2 − n−2 (x, y) n+1 (x, y)2)/(2y), и при n 2
2n+1 (x, y) = n+2 (x, y) n (x, y)3 − n+1 (x, y)3 n−1 (x, y);
везде y2 следует заменять на x3 + ax + b.
Многочлены n (x, y) называются многочленами деления. Нетрудно доказать по индукции, что fn (x), определенные равенством
fn (x) = |
n (x, y)/y, |
если n четное, |
|
n (x, y), |
если n нечетное, |
являются многочленами от x, т. е. fn (x) Z/pZ [x]. Кроме того, если n— нечетно, p n, то deg fn (x) = (n2 − 1)/2.
Теорема 4.11. Пусть P = (x, y) E(Z/pZ) \E[2]. Пусть n 3. Равенство nP = O выполнено тогда и только тогда, когда fn (x) = 0.
Теорема 4.12. Пусть |
P = (x, y) E( |
Z/pZ |
) \E[2], |
n 2, причем |
||||
nP =/ O. Тогда |
|
|
|
|
|
|
|
|
nP= x− |
n 1 (x, y) n+1 (x, y) |
|
n+2 (x, y) n−1 (x, y)2− n−2 |
(x, y) n+1 |
(x, y)2 |
. |
||
− n (x, y)2 |
, |
|
4y n (x, y)3 |
|
|
Далее в алгоритме Шуфа мы будем находить значение t (mod l) для небольших простых чисел l. Если таких l будет достаточно много,
8*
116 Гл. 4. Применение кривых для проверки простоты и факторизации
точнее, если Πl > 4√p, то, найдя затем по китайской теореме об остатках значение t (mod Πl), мы получим, что искомое значение t равно абсолютно наименьшему вычету в классе t (mod Πl). Это следует из теоремы Хассе (см. § 4.1). Тогда мы найдем искомое значение
|E(Z/pZ)| = p + 1 − t. |
случай l = 2. Согласно приведенному вы- |
Рассмотрим сначала |
|
ше примеру, в E(Z/pZ) |
найдется ненулевая точка P = (x, 0) второго |
порядка, если и только если выполнено условие НОД(xp − x, x3 + ax + b) =/ 1.
Это условие равносильно четности числа |E(Z/pZ)| что, в свою очередь, равносильно четности t, поскольку p + 1 четно. Итак, t ≡ 0 (mod 2) тогда и только тогда, когда
НОД(xp − x, x3 + ax + b) =/ 1;
в противном случае t ≡ 1 (mod 2).
Везде далее мы обозначаем через l нечетное фиксированное (небольшое) простое число, l =/ p. Реально в алгоритме следует рассматривать простые числа l порядка O(log p).
Рассмотрим группу E[l]; очевидно, что (E[l]) E[l]. Легко показать, что является изоморфизмом E[l]. Обозначим l = |E[l] . Тогда l удовлетворяет уравнению
2l − t l + p = 0.
Покажем, что если l удовлетворяет уравнению
2l − t l + p = 0
при некотором t Z, то t ≡ t (mod l). Действительно, вычитая второе уравнение из первого, получим
(t − t ) l = 0 на E[l],
откуда t ≡ t (mod l), поскольку l — изоморфизм.
Теперь нам надо найти значение , 0 l − 1, для которого2l − l + p = 0 на E[l].
Тем самым мы определим значение t (mod l). Другими словами, нам нужно найти Z/lZ, для которого на E[l] выполняется равенство2l + p = l. Случай = 0 рассматривается отдельно. Если же =/ 0, то, для
k ≡ p (mod l), 1 k l − 1,
§ 4.3. Вычисление порядка группы точек эллиптической кривой |
117 |
мы, по теореме 4.12, примененной к точке P = (x, y) E[l] \O можем переписать наше равенство 2l (P) + pP = l (P) в виде
(xp2 , yp2) x − k−1 (x, y) k+1 (x, y) ,k (x, y)2
k+2 (x, y) k−1 (x, y)2 − k−2 (x, y) k+1 (x, y)2 =
4y k (x, y)3
= xp − −1 (x, y) +1 (x, y) p,(x, y)2
+2 (x, y) −1 (x, y)2 − −2 (x, y) +1 (x, y)2 p . 4y (x, y)3
Знак обозначает операцию сложения точек на кривой. Последнее равенство приводится к виду
H1 (x) ≡ 0 (mod fl (x)),
H2 (x) ≡ 0 (mod fl (x)),
где H1 (x), H2 (x) Z/pZ [x]. В результате перебора = 0, 1, . . . , l − 1 мы найдем истинное значение t ≡ (mod l). Так выглядит основная идея алгоритма, которую мы далее конкретизируем.
Алгоритм Шуфа.
Алгоритм находит t (mod l) для таких простых чисел l, что l > 4√p. Затем с помощью китайской теоремы об остатках находится истинное значение t. Значение t (mod 2) находим так, как было сказано выше. Пусть далее l > 2, l — фиксированное простое
число, l =/ p.
1 этап алгоритма для фиксированного l. Мы проверяем, существует ли точка P = (x, y) E[l] \O такая, что
2l (P) = ±kP,
где k ≡ p (mod l), 1 k l − 1. Сначала проверяем по первой координате; это означает, что должно выполняться равенство
xp2 = x − k−1 (x, y) k+1 (x, y) .k (x, y)2
При четном k это равенство имеет вид
x |
p2 |
= x − |
fk−1 (x)fk+1 (x) |
, |
|
fk (x)2 (x3 + ax + b) |
118 Гл. 4. Применение кривых для проверки простоты и факторизации
а при нечетном k —
xp2 = x − fk−1 (x)fk+1 (x) (x3 + ax + b) . fk (x)2
Следовательно, по теореме 4.11 точка P = (x, y) E[l] \O, удовлетворяющая соотношению 2l (P) = ±kP, существует тогда и только тогда, когда
НОД((xp2 − x)fk (x)2 (x3 + ax + b) + fk−1 (x)fk+1 (x), fl (x)) =/ 1
при четном k, и
НОД((xp2 − x)fk (x)2 + fk−1 (x)fk+1 (x) (x3 + ax + b), fl (x)) =/ 1
при нечетном k. Если же соответствующий НОД (при k четном или нечетном) равен 1, то искомое не сравнимо с 0 по модулю l. Действительно, если ≡ 0 (mod l), то
|
( l2 + k) (P) = 0 для всех P E[l], |
|
. |
|||
а в нашем случае (при НОД = 1) |
таких точек нет, за исключением |
O |
||||
|
2 |
|
|
|||
В случае неразрешимости уравнения |
l (P) |
= ±kP на E[l] \O мы пере- |
||||
ходим на 2-й этап алгоритма. |
|
|
P E[l] \O, для которой |
|||
2 |
Предположим, что существует |
точка |
||||
l |
(P) = ±kP = ±pP. |
|
|
|
|
|
1случай. Если 2l (P) = −pP, то ( 2l + p)P = O. Так как ( 2 − t +
+p) (P) = O для любой точки P на кривой, то отсюда (t l) (P) = O.
Поскольку l — изоморфизм E[l], получаем, что t ≡ 0 (mod l). Таким образом, в данном случае мы нашли искомое t (mod l).
2 случай. Если l2 (P) = pP, то, пользуясь снова уравнением 2 − |
||||||||||
− t + p = 0, |
получаем соотношение (2p − t l) (P) = O. Поскольку |
|||||||||
2pP =/ O для |
P E[l] \O, то t ≡ 0 (mod l). Поэтому l (P) = |
2p |
· P |
|||||||
t |
||||||||||
(здесь |
1 |
обозначает t−1 (mod l)). Применяя снова l, получим |
||||||||
|
||||||||||
|
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
2p |
|
2 |
|
|
|
|
|
|
|
pP = l2 (P) = |
|
l (P) = |
4p |
· P. |
|||
|
|
|
t |
t2 |
||||||
Отсюда |
p ≡ 4p2/t2 |
(mod l), |
||||||||
|
|
|
или t2 ≡ 4p (mod l). В частности, в этом случае p является квадратичным вычетом по модулю l.
Теперь решим уравнение w2 ≡ p (mod l) (алгоритм решения таких уравнений см. далее в главе 6; для малых l возможен перебор). Для его
§ 4.3. Вычисление порядка группы точек эллиптической кривой |
119 |
решения w будет выполнено сравнение t ≡ ±2w (mod l), и нам останется лишь определить истинный знак + или −.
Подставляя t ≡ ±2w (mod l) в уравнение для l, получим
2l 2w l + w2 = 0,
или ( l w)2 = 0 тождественно на E[l]. Поэтому собственное значение линейного отображения l на E[l] может быть только ±w (mod l) (если r — собственное значение, то (r w)2 ≡ 0 (mod l)). Проверку существования решения Q E[l] уравнения ( w)Q = O осуществляем так же, как выше мы осуществляли проверку существования решения уравнения 2l (P) = ±kP. Точнее, пусть Q = (x, y). Тогда для выполнения равенства l (Q) = ±wQ по первой координате должно выполняться равенство
xp = x − w−1 (x, y) w+1 (x, y) .w (x, y)2
Отсюда при w четном
|
|
x |
p |
= x − |
fw−1 (x)fw+1 (x) |
, |
|
|
|
|
|
fw (x)2 (x3 + ax + b) |
|
||||
а при w нечетном |
|
|
|
|
|
|
|
|
x |
p |
= x − |
fw−1 (x)fw+1 (x) (x3 + ax + b) |
. |
||||
|
|
fw (x)2 |
|
Существование такой точки Q E[l] равносильно тому, что
НОД((xp − x)fw (x)2 (x3 + ax + b) + fw−1 (x)fw+1 (x), fl (x)) =/ 1
при w четном, а при w нечетном
НОД((xp − x)fw (x)2 + fw−1 (x)fw+1 (x) (x3 + ax + b), fl (x)) =/ 1.
Если теперь такая точка Q существует (т. е. соответствующий НОД не равен 1), то надо определить знак ±w по второй координате. Если
(xp, yp) = l (w) = wQ = |
x − |
|
− |
|
w (x, y)2 |
2 |
, |
|
2 |
|
|
|
w |
|
1 |
(x, y) w+1 |
(x, y) |
|
|
|
|
|
w+2 (x, y) w−1 (x, y) − w−2 (x, y) w+1 |
(x, y) |
|
, |
||||||
|
|
|
|
|
4y w (x, y)3 |
|
|
то отсюда
fw+2 (x) · yf2 − − fw−2 (x) · yfw+1 (x)2 yp = w 1
4y4fw (x)3
120 Гл. 4. Применение кривых для проверки простоты и факторизации
при w четном и
fw+2 (x) · y2f2 − − fw−2 (x) · y2fw+1 (x)2 yp = w 1 .
4yfw (x)3
при w нечетном. Пользуясь соотношением y2 = x3 + ax + b, получаем, что при w четном будет выполняться соотношение l (Q) = wQ, если
НОД 4fw (x)3 (x3+ax+b)p |
2 |
−fw+2 (x)fw−1 |
|
+3 |
|
Соответственно, при w нечетном |
||
НОД 4fw (x)3 (x3+ax+b)p−2 |
1−fw+2 (x)fw−1 |
|
В случае, когда l (Q) = −wQ, вторая |
||
при w четном |
|
+fw+2 (x)fw−1 |
НОД 4fw (x)3 (x3+ax+b)p |
2 |
|
|
+3 |
(x)2+fw−2
(x)2+fw−2
(x)fw+1 (x)2, fl (x) =/ 1.
(x)fw+1 (x)2, fl (x) =/ 1.
координата меняет знак. Тогда
(x)2−fw−2 (x)fw+1 (x)2, fl (x) =/ 1,
и |
|
|
|
|
|
1+fw+2 (x)fw−1 (x)2−fw−2 (x)fw+1 (x)2, fl (x) =/ 1. |
||||||
НОД 4fw (x)3 (x3+ax+b)p−2 |
||||||||||||
при w нечетном. |
|
|
|
|
|
|
|
|
|
|
||
|
Теперь предположим, что не существует точки Q E[l] \O такой, |
|||||||||||
что |
|
l (Q) = ±wQ. Кроме |
|
того, мы |
находимся в условиях 2 случая, |
|||||||
|
|
|
2 |
2 |
||||||||
|
|
|
|
E[l] \ |
O |
|
|
|
|
2 |
||
т. е. существует P |
|
|
|
такая, что |
|
l (P) |
= kP. Покажем, что на- |
|||||
ше |
предположение невозможно. |
2У |
нас |
l (P) = (±w) P; кроме того, |
||||||||
выше мы показали, |
что |
( l w) |
P = O. Из |
этих двух соотношений |
следует, что
w2P 2w l (P) + w2P = O,
т. е. 2w2P = ±2w l (P). Так как 2w =/ 0 (mod l), то отсюда l (P) = ±wP. Мы же предположили, что для всех точек Q E[l] \O (включая и P), равенство l (Q) = ±wQ невозможно. Это означает, что наше предположение было неверным.
Итак, если существует точка P E[l] \O такая, что то существует и точка Q E[l] \O такая, что l (Q) = ±wQ.
В итоге 1 этап алгоритма реализуется следующим образом. Если не существует точки P E[l] \O, для которой 2l (P) = ±kP, то мы
§ 4.3. Вычисление порядка группы точек эллиптической кривой |
121 |
переходим на 2 этап алгоритма. Если же такая точка P существует (т. е. соответствующий НОД в начале описания первого этапа не
равен 1), то при |
|
p |
= −1 мы |
полагаем t ≡ 0 (mod l) |
(поскольку |
||
|
l |
||||||
2 |
|
|
|
l |
|
|
|
2 случай |
невозможен). Если же |
p |
= +1, то мы находим w Z такое, |
||||
|
|
|
|
|
что w ≡ p (mod l) и 0 < w < l. Затем проверяем, будет ли +w или −w собственным значением для l на E[l] (проверку осуществляем так, как это описано выше). Если ±w не является собственным значением l на E[l], то t ≡ 0 (mod l) — искомое значение, как это было объяснено выше.
Если l (Q) = wQ для некоторой точки Q E[l] \O, то 2l (Q) = pQ.
Тогда, пользуясь соотношением l (Q) = 2tpQ, найденным ранее, получим
w − 2tp ≡ 0 (mod l).
Так как p ≡ w2 ≡ 0 (mod l), то отсюда t ≡ 2w (mod l) есть искомое значение t по модулю l.
Если l (Q) = −wQ для некоторой точки Q E[l] \O, то аналогично получим
|
|
|
w + |
2p |
≡ 0 (mod l), |
|
|
|
|
t |
|
||
откуда t ≡ −2w (mod l). |
|
|
|
|
||
Таким образом, |
если на 1 этапе окажется, что существует |
P |
||||
|
2 |
|
|
|
||
E[l] \O, для которой |
l |
(P) = ±kP, то мы определим искомое значение |
t (mod l), и тогда 2-й этап для данного l будет не нужен.
2 этап алгоритма для фиксированного l. Пусть на 1 этапе оказалось, что не существует точки P E[l] \O, для которой
2l (P) = ±kP = ±pP.
Тогда искомое значение , ≡ t (mod l), для которого на E[l] выполняется равенство
2l + p = l,
будет не равно нулю, =/ 0, как это уже показано ранее.
Далее мы перебором , 1 l −2 1 , ищем то значение, для которого соотношение
( 2l + p) (P) = ± l (P)
122 Гл. 4. Применение кривых для проверки простоты и факторизации
выполняется на E[l] тождественно. Для P = (x, y) E[l] \O левая часть запишется при k ≡ p (mod l), 1 k < l в виде
(xp2 , yp2)
|
x− |
|
k (x, y)2 |
, |
− |
4y k (x, y)3 |
|
|
, |
|
|
k−1 |
(x, y) k+1 |
(x, y) |
k+2 (x, y) k |
1 (x, y)2 − k−2 |
(x, y) k+1 |
(x, y)2 |
|
причем сложение на кривой проводится по формуле секущей, поскольку сейчас 2l (P) =/ ±pP для всех P E[l] \O. Правая часть, т. е.
± l (P) = ± l ( P), имеет вид
xp − −1 (x, y) +1 (x, y) p,(x, y)2
± +2 (x, y) −1 (x, y)2 − −2 (x, y) +1 (x, y)2 p . 4y (x, y)3
Поскольку ( 2l + p) (P) = ± l (P) тождественно на E[l], нам уже не надо вычислять наибольший общий делитель с fl (x), а надо проверять делимость на fl (x). Для написания соответствующих формул надо рассмотреть четыре случая в зависимости от четности k и .
Пусть, например, k четно и четно. Тогда
(xp2 , yp2) |
|
x |
|
f |
|
fk−1 (x)fk+1 (x) |
) |
, |
fk+2 (x)fk−1 (x)2 − fk−2 (x)fk+1 (x)2 |
= |
|||||||||||||
|
|
|
|
|
(x)2 ( |
3 |
|
|
|
|
4( 3 |
+ b)f |
|
(x)3 |
· |
y |
|
2 |
|||||
|
|
|
− |
k |
x |
|
+ ax + b |
|
x |
+ ax 2 |
k |
|
|
|
|||||||||
|
p |
|
|
f −1 (x)f +1 (x) |
p |
|
|
|
f +2 (x)f −1 (x) − f −2 (x)f +1 |
(x) |
|
|
p |
||||||||||
= x |
− |
|
, |
± |
|
|
|
. |
|||||||||||||||
|
f (x)2 (x3 + ax + b) |
4(x3 + ax + b)f (x)3 · y |
|
|
|
Пользуясь соотношением y2 = x3 + ax + b, нетрудно показать, что левая часть этого равенства имеет вид
|
H2 |
(x) , |
H4 |
(x) |
· y± |
|
, |
||||||||
|
|
|
H1 |
(x) |
|
H3 |
(x) |
|
|
1 |
|
||||
а правая часть — |
H6 |
(x) , ±H8 |
(x) |
· y± |
, |
||||||||||
|
|
H5 |
(x) |
|
|
H7 |
(x) |
|
|
1 |
где H1 (x), . . . , H8 (x) Z/pZ [x]. Тогда для проверки тождества
( 2l + p) (P) = ± l (P)
по первой координате нам нужно проверить, что H1 (x)H6 (x)−H5 (x)H2 (x) делится на fl (x) в Z/pZ [x]. Если это не так, то мы переходим к следующему . Если это так, то мы выбираем знак ± числа , выполняя