Алгоритм Шуфа — эффективный алгоритм для подсчета точек на эллиптических кривых над конечными полями . Алгоритм имеет приложения в криптографии эллиптических кривых , где важно знать количество точек, чтобы оценить сложность решения задачи дискретного логарифмирования в группе точек на эллиптической кривой.
Алгоритм был опубликован Рене Шуфом в 1985 году и стал теоретическим прорывом, поскольку это был первый детерминированный полиномиальный алгоритм для подсчета точек на эллиптических кривых . До алгоритма Шуфа подходы к подсчету точек на эллиптических кривых, такие как наивный и алгоритмы baby-step giant-step , по большей части были утомительными и имели экспоненциальное время выполнения.
В этой статье объясняется подход Шуфа, при этом особое внимание уделяется математическим идеям, лежащим в основе структуры алгоритма.
Введение
Пусть будет эллиптическим кривым, определенным над конечным полем , где для простого и целого числа . Над полем характеристики эллиптическую кривую можно задать (коротким) уравнением Вейерштрасса
с . Множество точек, определенное над , состоит из решений, удовлетворяющих уравнению кривой, и точки на бесконечности . Используя групповой закон на эллиптических кривых, ограниченный этим множеством, можно увидеть, что это множество образует абелеву группу , причем действует как нулевой элемент. Чтобы подсчитать точки на эллиптической кривой, мы вычисляем мощность . Подход Шуфа к вычислению мощности использует теорему Хассе об эллиптических кривых вместе с китайской теоремой об остатках и многочленами деления .
Теорема Хассе
Теорема Хассе утверждает, что если — эллиптическая кривая над конечным полем , то удовлетворяет условию
Этот мощный результат, полученный Хассе в 1934 году, упрощает нашу проблему, сужая ее до конечного (хотя и большого) набора возможностей. Определяя как , и используя этот результат, мы теперь имеем, что вычисление значения по модулю , где , достаточно для определения , и, таким образом , . Хотя не существует эффективного способа непосредственного вычисления для общего , можно вычислить для небольшого простого числа довольно эффективно. Мы выбираем быть набором различных простых чисел, таким образом, что . Учитывая для всех , китайская теорема об остатках позволяет нам вычислить .
Для вычисления простого числа мы используем теорию эндоморфизма Фробениуса и многочленов деления . Обратите внимание, что рассмотрение простых чисел не является потерей, поскольку мы всегда можем выбрать большее простое число, чтобы занять его место и гарантировать, что произведение будет достаточно большим. В любом случае алгоритм Шуфа чаще всего используется для решения этого случая, поскольку существуют более эффективные, так называемые адические алгоритмы для полей с малыми характеристиками.
Эндоморфизм Фробениуса
Учитывая эллиптическую кривую, определенную над , мы рассматриваем точки над , алгебраическое замыкание ; т.е. мы допускаем точки с координатами в . Эндоморфизм Фробениуса над продолжается до эллиптической кривой с помощью .
Это отображение является тождественным на и его можно расширить до точки на бесконечности , сделав его групповым морфизмом из в себя.
Эндоморфизм Фробениуса удовлетворяет квадратичному многочлену, который связан с мощностью следующей теоремой:
Теорема: Эндоморфизм Фробениуса, заданный формулой, удовлетворяет характеристическому уравнению
- где
Таким образом, при всем этом мы имеем , где + обозначает сложение на эллиптической кривой, а и
обозначают скалярное умножение на и на .
Можно попытаться символически вычислить эти точки , и как функции в кольце координат
и затем искать значение , которое удовлетворяет уравнению. Однако степени становятся очень большими, и этот подход непрактичен.
Идея Шуфа состояла в том, чтобы выполнить это вычисление, ограниченное точками порядка для различных малых простых чисел . Зафиксировав нечетное простое число , мы теперь переходим к решению задачи определения , определяемой как , для заданного простого числа . Если точка находится в подгруппе - кручения , то где есть единственное целое число такое, что и . Заметим, что и что для любого целого числа мы имеем . Таким образом, будет иметь тот же порядок, что и . Таким образом, для принадлежности к , мы также имеем , если . Следовательно, мы свели нашу задачу к решению уравнения
где и имеют целые значения в .
Вычисление по модулю простых чисел
Многочлен l -го деления таков, что его корни — это в точности x- координаты точек порядка l . Таким образом, ограничение вычисления l -точками кручения означает вычисление этих выражений как функций в кольце координат E и по модулю многочлена l -го деления. То есть мы работаем в . Это означает, в частности, что степень X и Y , определенная через , не превышает 1 по y и не превышает 1
по x .
Скалярное умножение можно выполнить либо с помощью методов удвоения и сложения , либо с помощью многочлена деления th. Последний подход дает:
где — полином n -го деления. Обратите внимание, что — это функция только от x , и обозначьте ее как .
Мы должны разбить задачу на два случая: случай, в котором , и случай, в котором . Обратите внимание, что эти равенства проверяются по модулю .
Случай 1: ( x q 2 , y q 2 ) ≠ ± q ¯ ( x , y ) {\displaystyle (x^{q^{2}},y^{q^{2}})\neq \pm {\bar {q}}(x,y)}
Используя формулу сложения для группы, получаем:
Обратите внимание, что это вычисление не выполняется, если предположение о неравенстве неверно.
Теперь мы можем использовать x -координату, чтобы сузить выбор до двух возможностей, а именно положительного и отрицательного случая. Используя y -координату, позже определяется, какой из двух случаев имеет место.
Сначала покажем, что X — это функция только от x . Рассмотрим . Поскольку четно, то, заменив на , перепишем выражение как
и иметь это
Здесь, кажется, не правильно, мы выбрасываем ?
Теперь, если для одного , то удовлетворяет
для всех l -точек кручения P .
Как упоминалось ранее, используя Y и мы теперь можем определить, какое из двух значений ( или ) работает. Это дает значение . Алгоритм Шуфа сохраняет значения в переменной для каждого рассматриваемого простого числа l .
Случай 2: ( x q 2 , y q 2 ) = ± q ¯ ( x , y ) {\displaystyle (x^{q^{2}},y^{q^{2}})=\pm {\bar {q}}(x,y)}
Начнем с предположения, что . Поскольку l — нечетное простое число, то оно не может быть таким, и, таким образом , . Характеристическое уравнение дает, что . И, следовательно, что . Это означает, что q — квадрат по модулю l . Пусть . Вычислим и проверим, является ли . Если да, то зависит от координаты y.
Если q не является квадратом по модулю l или если уравнение не выполняется ни для одного из w и , наше предположение ложно, таким образом . Характеристическое уравнение дает .
Дополнительный случай l = 2 {\displaystyle l=2}
Если вы помните, наши первоначальные соображения опускают случай . Поскольку мы предполагаем, что q нечетно, и, в частности, тогда и только тогда, когда имеет элемент порядка 2. По определению сложения в группе любой элемент порядка 2 должен иметь вид . Таким образом, тогда и только тогда, когда многочлен имеет корень в , тогда и только тогда, когда .
Алгоритм
Вход: 1. Эллиптическая кривая . 2. Целое число q для конечного поля с . Выход: Число точек E над . Выберем множество нечетных простых чисел S, не содержащее p, такое, что Положим if , else . Вычислим многочлен деления . Все вычисления в цикле ниже выполняются в кольце Для do : Пусть будет уникальным целым числом, таким что и . Вычислить , и . если то Вычислить . для do : если то если то ; иначе . иначе если q является квадратом по модулю l , то вычислить w с помощью compute если то иначе если то иначе иначе Используйте китайскую теорему об остатках , чтобы вычислить t по модулю N из уравнений , где . Выход .
Сложность
Большая часть вычислений выполняется путем оценки и для каждого простого числа , то есть вычисления , , , для каждого простого числа . Это включает возведение в степень в кольце и требует умножений. Поскольку степень равна , каждый элемент в кольце является многочленом степени . По теореме о простых числах существует около простых чисел размера , что дает , и мы получаем, что . Таким образом, каждое умножение в кольце требует умножений, в которых, в свою очередь, требуются битовые операции. В общей сложности количество битовых операций для каждого простого числа равно . Учитывая, что это вычисление необходимо выполнить для каждого из простых чисел, общая сложность алгоритма Шуфа оказывается равной . Использование быстрой полиномиальной и целочисленной арифметики сводит это к .
Улучшения алгоритма Шуфа
В 1990-х годах Ноам Элкис , а затем и А. О. Л. Аткин , разработали усовершенствования базового алгоритма Шуфа, ограничив набор рассмотренных ранее простых чисел простыми числами определенного вида. Они стали называться простыми числами Элкиса и простыми числами Аткина соответственно. Простое число называется простым числом Элкиса, если характеристическое уравнение: распадается на , в то время как простым числом Аткина является простое число, которое не является простым числом Элкиса. Аткин показал, как объединить информацию, полученную из простых чисел Аткина, с информацией, полученной из простых чисел Элкиса, чтобы создать эффективный алгоритм, который стал известен как алгоритм Шуфа–Элкиса–Аткина . Первая проблема, которую нужно решить, — это определить, является ли заданное простое число простым числом Элкиса или Аткина. Для этого мы используем модульные многочлены, которые получены из изучения модульных форм и интерпретации эллиптических кривых над комплексными числами как решетками. Как только мы определили, в каком случае мы находимся, вместо использования полиномов деления мы можем работать с полиномом, который имеет меньшую степень, чем соответствующий полином деления: вместо . Для эффективной реализации используются вероятностные алгоритмы поиска корней, что делает этот алгоритм Лас-Вегаса, а не детерминированным алгоритмом. При эвристическом предположении, что примерно половина простых чисел до границы являются простыми числами Элки, это дает алгоритм, который эффективнее алгоритма Шуфа, с ожидаемым временем выполнения с использованием наивной арифметики и использованием быстрой арифметики. Хотя известно, что это эвристическое предположение справедливо для большинства эллиптических кривых, известно, что оно справедливо не во всех случаях, даже при GRH .
Реализации
Несколько алгоритмов были реализованы на C++ Майком Скоттом и доступны с исходным кодом. Реализации бесплатны (без условий и положений) и используют библиотеку MIRACL, которая распространяется под лицензией AGPLv3 .
- Реализация алгоритма Шуфа для простых чисел .
- Реализация алгоритма Шуфа для .
Смотрите также
Ссылки
- Р. Шуф: Эллиптические кривые над конечными полями и вычисление квадратных корней mod p. Math. Comp., 44(170):483–494, 1985. Доступно на http://www.mat.uniroma2.it/~schoof/ctpts.pdf
- Р. Шоф: Подсчет точек на эллиптических кривых над конечными полями. J. Theor. Nombres Bordeaux 7:219–254, 1995. Доступно на http://www.mat.uniroma2.it/~schoof/ctg.pdf
- G. Musiker: Алгоритм Шуфа для подсчета очков на . Доступно по адресу http://www.math.umn.edu/~musiker/schoof.pdf
- В. Мюллер: Die Berechnung der Punktanzahl von elliptischen kurven über endlichen Primkörpern. Магистерская диссертация. Universität des Saarlandes, Саарбрюккен, 1991 г. Доступно по адресу http://lecturer.ukdw.ac.id/vmueller/publications.php.
- А. Энге: Эллиптические кривые и их применение в криптографии: Введение. Kluwer Academic Publishers, Дордрехт, 1999.
- LC Washington: Эллиптические кривые: теория чисел и криптография. Chapman & Hall/CRC, Нью-Йорк, 2003.
- Н. Коблиц: Курс теории чисел и криптографии, Graduate Texts in Math. № 114, Springer-Verlag, 1987. Второе издание, 1994