Перейти к содержанию

Алгоритм Шуфа

Материал из Мегавики — свободной энциклопедии

Алгоритм Шуфа — эффективный алгоритм[1] подсчёта числа точек на эллиптической кривой над конечным полем. Алгоритм имеет приложения в эллиптической криптографии, где важно знать число точек, чтобы судить о трудности решения задачи дискретного логарифмирования на группе точек на эллиптической кривой.

Алгоритм опубликовал в 1985 Рене Шуф[англ.] и это был теоретический прорыв, поскольку это был первый детерминированный алгоритм полиномиального времени для подсчёта точек на эллиптической кривой[англ.]. До алгоритма Шуфа подходы к подсчёту точек на эллиптических кривых, каким был бесхитростный алгоритм малых и больших шагов, были по большей части трудоёмкими и требовали экспоненционального времени работы.

Данная статья объясняет подход Шуфа, делая упор на математические идеи, лежащие в основе алгоритма.

Введение[править]

Пусть E — эллиптическая кривая, определённая над конечным полем 𝔽q, где q=pn для простого p и целого n1. Над полем с характеристикой 2,3 эллиптическая кривая может быть задана (коротко) уравнением Вейерштрасса

y2=x3+Ax+B

с A,B𝔽q. Множество точек, определённых над 𝔽q, состоит из решений (a,b)𝔽q2, удовлетворяющих уравнению кривой, и бесконечно удалённой точки O. Если использовать групповой закон на эллиптических кривых на этом множестве, можно видеть, что это множество E(𝔽q) образует абелеву группу, в которой O действует как нулевой элемент. Чтобы посчитать точки на эллиптической кривой, мы подсчитываем мощность множества E(𝔽q). В подходе Шуфа для подсчёта мощности E(𝔽q) используется теорема Хассе об эллиптических кривых вместе с китайской теоремой об остатках и многочленами деления[англ.].

Теорема Хассе[править]

Теорема Хассе утверждает, что если E/𝔽q является эллиптической кривой над конечным полем 𝔽q, то E(𝔽q) удовлетворяет неравенству

q+1E(𝔽q)2q.

Этот сильный результат, полученный Хассе в 1934, упрощает нашу задачу путём сужения E(𝔽q) к конечному (хотя и большому) множеству возможностей. Если определить t как q+1E(𝔽q) и использовать этот результат, мы получим, что вычисление мощности t по модулю N, где N>4q, достаточно для вычисления t, а потому и для получения E(𝔽q). Хотя нет эффективного пути вычисления t(modN) прямо для чисел N общего вида, можно вычислить t(modl) для малого простого числа l довольно эффективно. Мы выбираем S={l1,l2,...,lr} в качестве множества различных простых чисел, таких, что li=N>4q. Если задано t(modli) для всех liS, китайская теорема об остатках позволяет вычислить t(modN).

Чтобы вычислить t(modl) для простого lp, мы используем теорию эндоморфизма Фробениуса ϕ и многочлены деления[англ.]. Заметим, что рассмотрение простых чисел lp не приводит к проблемам, поскольку мы всегда можем выбрать большее простое число, чтобы обеспечить, чтобы произведение было достаточно велико. В любом случае алгоритм Шуфа наиболее часто используется для случая q=p, поскольку имеются более эффективные, так называемые p-адичные алгоритмы, для полей с малой характеристикой.

Эндоморфизм Фробениуса[править]

Если задана эллиптическая кривая E, определённая над 𝔽q, мы рассматриваем точки на E над 𝔽¯q, алгебраическим замыканием[англ.] поля 𝔽q. То есть мы разрешаем точкам иметь координаты в 𝔽¯q. Эндоморфизм Фробениуса 𝔽¯q над 𝔽q расширяет эллиптическую кривую отображением ϕ:(x,y)(xq,yq).

Это отображение тождественно на E(𝔽q) и можно расширить его точкой на бесконечности O, что делает его морфизмом группы изE(𝔽q¯) на себя.

Эндоморфизм Фробениуса удовлетворяет квадратному уравнению, связанному с мощностью E(𝔽q) по следующей теореме:

Теорема: Эндоморфизм Фробениуса, заданный отображением ϕ, удовлетворяет характеристическому уравнению

ϕ2tϕ+q=0, где t=q+1E(𝔽q)

Тогда для всех P=(x,y)E имеем (xq2,yq2)+q(x,y)=t(xq,yq), где + означает сложение эллиптической кривой, а q(x,y) и t(xq,yq) означают скалярное произведение точки (x,y) на q и точки (xq,yq) на t[2].

Можно попытаться в символьном виде вычислить эти точки (xq2,yq2), (xq,yq) и q(x,y) как функции на координатном кольце[англ.] 𝔽q[x,y]/(y2x3AxB) на кривой E, а затем искать значение t, которое удовлетворяет уравнению. Однако степени получаются очень большими и такой подход практического значения не имеет.

Идея Шуфа заключалась в выполнении таких вычислений, ограничиваясь точками порядка l для различных малых простых чисел l. Фиксируя нечётное простое число l мы переходим к решению задачи определения tl, определённого как t(modl), для заданного простого l2,p. Если точка (x,y) находится в подгруппе l-кручения E[l]={PE(𝔽q¯)lP=O}, то qP=q¯P, где q¯ является единственным целым числом, таким, что qq¯(modl) и q¯<l/2. Заметим, что ϕ(O)=O и что для любого целого r мы имеем rϕ(P)=ϕ(rP). Таким образом, ϕ(P) имеет тот же порядок, что и P. Тогда для (x,y), принадлежащего E[l], мы имеем также t(xq,yq)=t¯(xq,yq), если tt¯(modl). Следовательно, мы свели нашу задачу к решению уравнения

(xq2,yq2)+q¯(x,y)t¯(xq,yq),

где t¯ и q¯ лежат в интервале [(l1)/2,(l1)/2].

Вычисления по простому модулю[править]

Многочлен деления[англ.] с номером l — это такой многочлен, что его корни являются в точности x координатами точек порядка l. Тогда ограничение вычисления (xq2,yq2)+q¯(x,y) на точки l-кручения означает вычисление этих выражений как функций координатного кольца E и модуля l-го многочлена деления. То есть мы работаем в 𝔽q[x,y]/(y2x3AxB,ψl). Это, в частности, означает, что степень X и Y, определяемых через (X(x,y),Y(x,y)):=(xq2,yq2)+q¯(x,y) не превышают 1 по переменной y и (l23)/2 по переменной x.

Скалярное произведение q¯(x,y) может быть осуществлено методом удвоить-и-сложить, либо с помощью q¯-го многочлена деления. Второй подход даёт:

q¯(x,y)=(xq¯,yq¯)=(xψq¯1ψq¯+1ψq¯2,ψ2q¯2ψq¯4),

где ψn — n-й многочлен деления. Заметим, что yq¯/y является функцией только от x, обозначим эту функцию через θ(x).

Мы должны разбить задачу на два случая: случай, в котором (xq2,yq2)±q¯(x,y), и случай, в котором (xq2,yq2)=±q¯(x,y).

Случай 1: (xq2,yq2)±q¯(x,y)[править]

Используя формулу сложения для группы E(𝔽q), мы получим:

X(x,y)=(yq2yq¯xq2xq¯)2xq2xq¯.

Заметим, что это вычисление невозможно, если предположение о неравенстве не выполняется.

Мы теперь можем сузить выбор координаты x для t¯ до двух возможностей, а именно — положительного и отрицательного случаев. Используя координату y, определяем, который из двух случаев имеет место.

Сначала мы покажем, что X является функцией только от x. Рассмотрим (yq2yq¯)2=y2(yq21yq¯/y)2. Поскольку q21 чётно, заменив y2 на x3+Ax+B, мы переписываем выражение как

(x3+Ax+B)((x3+Ax+B)q212θ(x))

и имеем

X(x)(x3+Ax+B)((x3+Ax+B)q212θ(x))modψl(x).

Теперь, если Xxt¯qmodψl(x) для t¯[0,(l1)/2], то для t¯ верно равенство

ϕ2(P)t¯ϕ(P)+q¯P=O

для всех точек P l-кручения.

Как было упомянуто ранее, используя Y и yt¯q, мы можем теперь определить, какое из двух значений t¯ (t¯ или t¯) работает. Это даёт значение tt¯(modl). Алгоритм Шуфа запоминает значения t¯(modl) в переменной tl для каждого рассматриваемого простого l.

Случай 2: (xq2,yq2)=±q¯(x,y)[править]

Предположим, что (xq2,yq2)=q¯(x,y). Поскольку l является нечётным простым числом, невозможно, чтобы q¯(x,y)=q¯(x,y), а следовательно, t¯0. Из характеристического уравнения следует, что t¯ϕ(P)=2q¯P, а следовательно, что t¯2q¯(2q)2(modl). Из этого следует, что q является квадратом по модулю l. Пусть qw2(modl). Вычислим wϕ(x,y) в 𝔽q[x,y]/(y2x3AxB,ψl) и проверим, выполняется ли q¯(x,y)=wϕ(x,y). Если так, то tl является ±2w(modl), в зависимости от координаты y.

Если q окажется не равным квадрату по модулю l или если равенство не выполняется для некоторого w и w, наше предположение, что (xq2,yq2)=+q¯(x,y) неверно, так что (xq2,yq2)=q¯(x,y). Характеристическое уравнение даёт tl=0.

Дополнительный случай l=2[править]

Если вспомнить, наши начальные соглашения не рассматривают случая l=2. Поскольку мы предположили, что q нечётно, q+1tt(mod2) и, в частности, t20(mod2) тогда и только тогда, когда E(𝔽q) имеет элемент порядка 2. По определению сложения в группе любой элемент порядка 2 должен иметь вид (x0,0). Таким образом t20(mod2) тогда и только тогда, когда многочлен x3+Ax+B имеет корень в 𝔽q, тогда и только тогда, когда НОД(xqx,x3+Ax+B)1.

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

    Ввод:
        1. Эллиптическая кривая E=y2x3AxB.
        2. Целое число q для конечного поля Fq с q=pb,b1.
    Вывод:
        Число точек E над Fq.
    Выбираем множество нечётных простых чисел S, не содержащее p, такое, что  N=lSl>4q.
    Примем t2=0, если НОД(xqx,x3+Ax+B)1, иначе принимаем t2=1.
    Вычисляем многочлен деления ψl. 
    Все вычисления в цикле ниже осуществляются в кольце 𝔽q[x,y]/(y2x3AxB,ψl).
    Для lS выполняем:
        Пусть q¯ — единственное целое  такое, что qq¯(modl) и q¯<l/2.
        Вычисляем (xq,yq), (xq2,yq2) и (xq¯,yq¯).   
        Если xq2xq¯  то
            Вычисляем (X,Y).
            для 1t¯(l1)/2 выполняем:
                если X=xt¯q то
                    если Y=yt¯q то
                        tl=t¯;
                    иначе
                        tl=t¯.
        иначе если q является квадратом по модулю l  то 
            вычисляем w с qw2(modl)
             вычисляем w(xq,yq)
            если w(xq,yq)=(xq2,yq2)  то
                tl=2w
            иначе если w(xq,yq)=(xq2,yq2) то
                tl=2w
            иначе
                tl=0
        иначе
            tl=0
    Используем китайскую теорему об остатках для вычисления t по модулю N из уравнения xtl(modl), где lS.
    Выводим q+1t.

Сложность[править]

Большинство вычислений заключаются в вычислении ϕ(P) и ϕ2(P), для каждого простого числа l, то есть вычислении xq, yq, xq2, yq2 для каждого простого числа l. Вычисления включают возведение в степень в кольце R=𝔽q[x,y]/(y2x3AxB,ψl) и требуют O(logq) умножений. Поскольку степень ψl равна l212, каждый элемент в кольце является многочленом степени O(l2). По теореме о распределении простых чисел имеется около O(logq) простых чисел размера O(logq), что даёт для l значение O(logq), и мы получаем O(l2)=O(log2q). Таким образом, каждое умножение в кольце R требует O(log4q) умножений в 𝔽q, что, в свою очередь, требует, O(log2q) битовых операций. В общей сложности число битовых операций для каждого простого числа l равно O(log7q). Если принять, что это вычисление требуется провести для каждого из O(logq) простых чисел, полная сложность алгоритма Шуфа становится O(log8q). Использование быстрых операций с многочленами и целочисленной арифметики сокращает это время до O~(log5q).

Улучшения алгоритма Шуфа[править]

В 1990-х годах Ноам Элкис, а затем А. О. Л. Аткин[англ.] придумали улучшения базового алгоритма Шуфа путём ограничения множества простых чисел S={l1,,ls} до чисел определённого вида. Эти числа стали называться простыми Элкиса и простыми Аткина соответственно. Простое число l называется простым Элкиса, если характеристическое равенство ϕ2tϕ+q=0 разложим над 𝔽l, а простые Аткина — это простые, не являющиеся простыми Элкиса. Аткин показал как комбинировать информацию, полученную из простых Аткина, с информацией, полученной из простых Элкиса, чтобы получить эффективный алгоритм, который получил название «Алгоритм Шуфа — Элкиса — Аткина[англ.]». Первая задача — определить, данное простое является простым Элкиса, или Аткина. Чтобы это получить, используем модулярные многочлены, которые возникают при изучении модулярных форм и интерпретации эллиптических кривых над полем комплексных чисел как решёток. Как только мы определим, какой случай мы имеем, вместо использования многочленов деления[англ.] мы можем работать с многочленами, имеющими меньшие степени по сравнению с многочленами деления: O(l) вместо O(l2). Для эффективной имплементации используются вероятностные алгоритмы поиска корней, что делает алгоритм алгоритмом Лас-Вегаса, а не детерминированным алгоритмом. При эвристическом предположении, что примерно половина простых чисел, не превосходящих O(logq), являются простыми Элкиса, это даёт алгоритм, который эффективнее алгоритма Шуфа, и ожидаемое время работы этого алгоритма равно O(log6q), если использовать обычную арифметику, и O~(log4q), если использовать быструю арифметику. Следует заметить, что это эвристическое предположение верно для большинства эллиптических кривых, но не известно для общего случая, даже при верности обобщённой гипотезы Римана.

Имплементации[править]

Некоторые алгоритмы были имплементированы на C++ Майком Скоттом и доступны в исходном коде. Имплементация абсолютно свободная (никаких условий, никаких ограничений), но использует библиотеку MIRACL, которая распространяется под лицензией AGPLv3.

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

Примечания[править]

  1. Хотя, в статье ECDSA написано следующее: Алгоритм Скоофа является достаточно неэффективным на практике для значений p, которые действительно представляют интерес, то есть p > 2160.
  2. Точку mP, равную m-кратному сложению точки P в аддитивной группе точек эллиптической кривой, называют скалярным произведением точки на число m, а сами точки mP — скалярными кратными точки (Рыболовлев 2004). В книге Тиборга (ван Тилборг 2006) то же понятие называется скалярным кратным.

Литература[править]