Подсчёт точек на эллиптических кривых

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Подсчет точек на эллиптических кривых»)
Перейти к навигации Перейти к поиску

Подсчёт точек на эллиптических кривых — группа методов, которые позволяют эффективно вычислять точки на эллиптических кривых. Подсчёт точек на эллиптических кривых используется при изучении теории чисел, криптографии[1][2] и создании цифровых подписей (см. Эллиптическая криптография и ECDSA). Уровень безопасности криптосистемы, построенной на эллиптической кривой над конечным полем , где q = pk, а p — простое число, определяется сложностью задачи дискретного логарифмирования (DLP) для данной эллиптической кривой . Ниже будут рассмотрены алгоритмы подсчёта точек на эллиптических кривых над полями больших характеристик, в частности, p > 3. Для кривых над полями небольших характеристик существуют более эффективные алгоритмы, основанные на p-адических методах.

Подходы к подсчёту точек на эллиптических кривых[править | править код]

Основными подходами являются простейший метод подсчёта точек на эллиптических кривых, алгоритм больших и малых шагов, подход, предложенный Рене Шуфом[en], и улучшения алгоритма Шуфа, предложенные Н. Элкисом и А. О. Л. Аткином[en].

Некоторые алгоритмы используют тот факт, что к группам вида применима теорема Хассе, которая гласит, что если E является эллиптической кривой над конечным полем , то мощность удовлетворяет неравенству

Простейший подход[править | править код]

Простейший подход к подсчёту точек предполагает перебор всех элементов поля и проверку того, какие из них удовлетворяют уравнению Вейерштрасса эллиптической кривой

Пример[править | править код]

Пусть E будет кривой y2 = x3 + x + 1 над полем . Для подсчёта точек на E строится таблица из возможных значений x, квадратичных вычетов x mod 5 (только для поиска), x3 + x + 1 mod 5 и y (по x2 и x3 + x + 1 mod 5).

Points

Последняя строка вычисляется следующим образом: в уравнение подставляется , что приводит к (3-й столбец). Такой же результат получается при (Квадратичные вычеты находятся во втором столбце). Так, для последней строки находятся точки .

Таким образом, имеет порядок 9: 8 вычисленных точек и точка на бесконечности.

Вычислительная сложность алгоритма O(q), поскольку должны быть рассмотрены все значения .

Алгоритм больших и маленьких шагов[править | править код]

Снижение вычислительной сложности алгоритма было получено путём применения другого подхода: перебором случайных значений , пока не будет квадратом на , выбирается элемент такой, что является квадратным корнем из . Теорема Хассе гласит, что принадлежит интервалу . Тогда по теореме Лагранжа задача нахождения мощности множества сводится к поиску уникального , принадлежащего этому интервалу и удовлетворяющего равенству . Алгоритм перестаёт работать, если существуют два таких и , принадлежащих интервалу и удовлетворяющих равенству . В таком случае достаточно повторить ход алгоритма с другим случайно подобранным .

Перебор всех значений с целью найти единственное, удовлетворяющее равенству , занимает около шагов.

Однако, применяя алгоритм больших и маленьких шагов к , можно ускорить поиск до шагов.

Алгоритм[править | править код]

1. choose  integer, 
2. FOR{ to } DO 
3.    
4. ENDFOR
5. 
6. 
7. REPEAT compute the points 
8. UNTIL :   \\the -coordinates are compared
9.      \\note 
10. Factor . Let  be the distinct prime factors of .
11. WHILE  DO
12.    IF 
13.       THEN 
14.       ELSE  
15.    ENDIF
16. ENDWHILE
17.      \\note  is the order of the point 
18. WHILE  divides more than one integer  in 
19.    DO choose a new point  and go to 1.
20. ENDWHILE
21. RETURN      \\it is the cardinality of 

Пояснения к алгоритму[править | править код]

  • в пункте 8. допускается существование такого совпадения. Следующая лемма гарантирует, что такое совпадение существует:
Пусть  — целое, . Существуют и такие, что
  • Как только было подсчитано , для вычисления достаточно прибавить к вместо того, чтобы производить суммирование по всем элементам. Таким образом, полный цикл вычислений требует сложений. может быть получено удвоением . Вычисление требует удвоений и сложений, где число ненулевых элементов в бинарном представлении ; следует отметить, что знание и позволяет уменьшить число операций удвоения. Наконец, чтобы из получить , нужно просто прибавить вместо того, чтобы производить суммирование с начала.
  • Предполагается, что можно факторизовать [3]. Если нет, то по крайней мере можно найти все маленькие простые факторы и проверить, что для них . Так, является хорошим кандидатом в порядок .
  • Заключение шага 17 может быть доказано с использованием элементарной теории групп: поскольку , порядок делится на без остатка. Если нет подходящего делителя числа , для которого , то  — порядок .

Одним из недостатков этого метода является то, что он требует много памяти, когда группа становится большой. В случае больших групп может быть эффективнее хранить только координаты точек (вместе с соответствующим ). Однако это приводит к дополнительным операциям умножения в случае выбора между и .

Существуют и другие алгоритмы вычисления порядка элемента группы, которые будут требовать меньше памяти, такие как ро-алгоритм Полларда и алгоритм «кенгуру» Полларда. Алгоритм «кенгуру» Полларда позволяет найти решение в предписанном интервале, снижая число шагов до и занимая места в памяти.

Алгоритм Шуфа[править | править код]

Теоретический прорыв в области вычисления порядка групп типа был достигнут Рене Шуфом[en], который в 1985 году опубликовал первый детерминированный полиномиальный алгоритм. В основе алгоритма лежат теорема Хассе об эллиптических кривых вместе с китайской теоремой об остатках и многочленами деления[en].

Шуф использует тот факт, что согласно теореме Хассе существует конечное число возможных значений . Таким образом, становится достаточным вычислить по модулю целого . Это можно сделать, вычисляя по модулю простых , произведение которых превосходит , и затем применить китайскую теорему об остатках. Важной составляющей алгоритма является использование многочленов деления для эффективного вычисления по модулю [4].

Временная сложность алгоритма Шуфа , тогда как асимптотическая сложность , где означает вычислительную сложность целочисленного умножения. Пространственная сложность алгоритма .

Алгоритм Шуфа — Элкиса — Аткина[править | править код]

В 1990-х годах Ноам Элкис, а затем Артур Аткин[en] придумали улучшения базового алгоритма Шуфа путём разделения множества рассматриваемых простых чисел . Простое число называется простым Элкиса, если характеристическое уравнение эндоморфизма Фробениуса разложимо над . Иначе, называется простым Аткина. С помощью простых Элкиса можно понизить асимптотическую сложность алгоритма Шуфа. Информация, полученная из простых Аткина, ведёт к дальнейшим улучшениям алгоритма, и несмотря на малость вносимого ими вклада в снижение асимптотической сложности алгоритма, простые Аткина важны на практике. Модификация алгоритма Шуфа, использующая простые Элкиса и Аткина, называется алгоритмом Шуфа — Элкиса — Аткина[en].

Вид простого зависит от эллиптической кривой и может быть определён с использованием модулярного полинома[en] . Если полином одной переменной имеет корень на , где означает j-invariant[en] на , тогда  — простое Элкиса, а иначе простое Аткина. В случае простого Элкиса дальнейшее вычисление корней модулярного полинома используется для получения правильного фактора многочлена деления . Степень получаемого фактора , тогда как имеет степень [5].

Для эффективной имплементации алгоритма Шуфа — Элкиса — Аткина используются вероятностные алгоритмы поиска корней, что делает алгоритм алгоритмом Лас-Вегаса, а не детерминированным алгоритмом. Вычислительная сложность алгоритма определяется стоимостью вычислений модулярных полиномов , но поскольку они не зависят от , то могут быть вычислены однажды и затем использованы снова. При эвристическом предположении о существовании достаточно большого количества малых простых Элкиса и без учёта стоимости вычисления модулярных полиномов асимптотическая сложность алгоритма Шуфа — Элкиса — Аткина , где . Пространственная сложность , но в случае использования вычисленных заранее модулярных полиномов сложность возрастает до .

См. также[править | править код]

Примечания[править | править код]

  1. Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman. An introduction to mathematical cryptography. — Springer, 2008. — 524 с. — (Undergraduate Texts in Mathematics). — ISBN 9780387779942.
  2. Чалкин Т. А. Жданов О. Н. Применение эллиптических кривых в криптографии.
  3. Ишмухаметов Ш. Т. Методы факторизации натуральных чисел.
  4. "Counting Points on Elliptic Curves over Finite Fields. J. Theor. Nombres Bordeaux 7:219-254, 1995" (PDF). p. 15. Архивировано (PDF) из оригинала 27 января 2021. Дата обращения: 11 декабря 2019.
  5. «Remarks on the Schoof-Elkies-Atkin algorithm». Дата обращения: 20 декабря 2019. Архивировано 1 декабря 2008 года.

Литература[править | править код]

  • I. Blake, G. Seroussi, and N. Smart: Elliptic Curves in Cryptography, Cambridge University Press, 1999.
  • A. Enge: Elliptic Curves and their Applications to Cryptography: An Introduction. Kluwer Academic Publishers, Dordrecht, 1999.
  • G. Musiker: Schoof’s Algorithm for Counting Points on . Available at http://www.math.umn.edu/~musiker/schoof.pdf
  • R. Schoof: Counting Points on Elliptic Curves over Finite Fields. J. Theor. Nombres Bordeaux 7:219-254, 1995. Available at http://www.mat.uniroma2.it/~schoof/ctg.pdf
  • L. C. Washington: Elliptic Curves: Number Theory and Cryptography. Chapman \& Hall/CRC, New York, 2003.