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

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Алгори́тм Шу́фа — ефективний алгоритм підрахунку числа точок на еліптичній кривій над скінченним полем. Має застосування в еліптичній криптографії, де важливо знати кількість точок, щоб оцінити складність розв'язання задачі дискретного логарифма в групі точок на еліптичній кривій.

Алгоритм опублікував Шаблон:Не перекладено в 1985 році. Це був теоретичний прорив, бо це перший детермінований алгоритм, який виконується за поліноміальний час, для Шаблон:Не перекладено. До алгоритму Шуфа підходи до підрахунку точок на еліптичних кривих були здебільшого трудомісткими та виконувались за експоненціальний час.

Вступ

Нехай E – еліптична крива над скінченним полем 𝔽q, де q=pn, p – просте число та n. Над полем, характеристика якого не дорівнює 2 або 3, еліптична крива може бути задана рівнянням Вейєрштрасса

y2=x3+Ax+B,

де A,B𝔽q. Множина точок, визначених над 𝔽q, складається з розв'язків (x,y)𝔽q2, які задовольняють рівняння кривої, та точки на нескінченності O. Застосовуючи груповий закон на еліптичних кривих до цієї множини отримаємо абелеву групу E(𝔽q), у якій O буде нейтральним елементом. Кількість точок на еліптичній кривій дорівнює потужності множини E(𝔽q). Підхід Шуфа для обчислення потужності #E(𝔽q) використовує теорему Гассе про еліптичні криві разом з китайською теоремою про остачі та Шаблон:Не перекладено.

Теорема Гассе

Шаблон:Main

Теорема Гассе стверджує, що якщо E(𝔽q) є еліптичною кривою над скінченним полем 𝔽q, то #E(𝔽q) задовольняє нерівність

q+1#E(𝔽q)2q.

Цей сильний результат, отриманий Гассе в 1934 році, спрощує нашу задачу, звужуючи до скінченного (хоча і великого) набору можливих значень #E(𝔽q). Позначимо t=q+1#E(𝔽q), обчислення значення t по модулю 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 не є проблемою, бо завжди можна вибрати більше просте число, яке займе місце p, так щоб добуток вище задовольняв відповідну нерівність.

Ендоморфізм Фробеніуса

Нехай E – еліптична крива, визначена над 𝔽q, розглянемо точки на E над 𝔽¯q, де 𝔽¯q – алгебраїчне замиканням 𝔽q. Тобто ми дозволяємо точки з координатами в 𝔽¯q. Ендоморфізм Фробеніуса 𝔽¯q над 𝔽q розширює еліптичну криву відображенням ϕ:(x,y)(xq,yq).

Це відображення тотожне на E(𝔽q), можна розширити його точкою на нескінченності O, що зробить його морфізмом з E(𝔽¯q) на себе.

Ендоморфізм Фробеніуса задовольняє квадратне рівняння, пов'язане з потужністю E(𝔽q), за наступною теоремою:

Шаблон:Теорема

Тоді для всіх P=(x,y)E матимемо (xq2,yq2)+q(x,y)=t(xq,yq), де «+» – операція додавання точок на еліптичній кривій за груповим законом, а q(x,y) та t(xq,yq) – множення точок (x,y) та (xq,yq) на скаляри q та t, відповідно.

Можна спробувати обчислити (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), де q¯,t¯[(l1)/2,(l1)/2].

Обчислення по простому модулю

Позначимо (X(x,y),Y(x,y)):=(xq2,yq2)+q¯(x,y) (пам'ятаємо, що ми працюємо по модулю Шаблон:Mvar).

Скалярний добуток q¯(x,y) можна обчислити методом подвоїти та додати або використовуючи q¯-ий поліном ділення. Останній підхід дає:

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

де ψn – Шаблон:Mvar-ий поліном ділення. Функція yq¯/y залежить тільки від Шаблон:Mvar, позначимо її через θ(x).

Розглянемо два випадки: (xq2,yq2)±q¯(x,y) та (xq2,yq2)=±q¯(x,y) (тут рівність по модулю ψl).

Випадок 1: (xq2,yq2)±q¯(x,y)

Використовуючи формулу додавання для групи E(𝔽q) отримаємо:

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

У випадку рівності таке обчислення буде неправильним.

Далі можна звузити вибір координати Шаблон:Mvar до двох можливих варіантів, різних за знаком та рівних по модулю. Потім використовуючи Шаблон:Mvar-координату знайдемо який з варіантів має місце.

Покажемо, шо X є функцією тільки від x. Розглянемо (yq2yq¯)2=y2(yq21yq¯/y)2. Замінимо y2 на x3+Ax+B, тоді отримаємо

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

Оскільки q21 парне, то така заміна означає, що ми працюємо у факторкільці 𝔽q[x,y]/(y2x3AxB).

Якщо Xxt¯qmodψl(x) для деякого t¯[0,(l1)/2], то виконується рівність

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

для всіх PE[l].

Як згадувалося раніше, використовуючи Y та yt¯q, можна визначити, яке з двох значень t¯ (t¯ або t¯) працює. Це дає значення tt¯(modl). Далі алгоритм Шуфа зберігає значення t¯(modl) в змінній tl для кожного розглянутого простого Шаблон:Mvar.

Випадок 2: (xq2,yq2)±q¯(x,y)

Спочатку припустимо, що (xq2,yq2)=+q¯(x,y). Для точки PE(𝔽q), що задовольняє це, з характеристичного рівняння отримуємо t¯ϕ(P)=2q¯P. А отже, t¯2q¯P(2q)2P(modl). З цього випливає, що q є квадратом по модулю l. Нехай qw2(modl). Обчислимо wϕ(x,y) в 𝔽q[x,y]/(y2x3AxB,ψl) та перевіримо чи q¯(x,y)=wϕ(x,y). Якщо це так, то tl=±2w(modl), де знак залежить від Шаблон:Mvar-координати.

Якщо q не є квадратом по модулю Шаблон:Mvar або рівність не виконується для жодного w, то припущення, що (xq2,yq2)=+q¯(x,y) невірне, тому (xq2,yq2)=q¯(x,y). Характеристичне рівняння дає tl=0.

Додатковий випадок: l=2

Якщо згадати, наші початкові міркування опускають випадок l=2. Припускалось, що Шаблон:Mvar непарне та зокрема, t20(mod2) тоді і тільки тоді, коли E(𝔽q) містить елемент порядку 2. За означенням додавання в цій групі будь-який елемент порядку 2 має вигляд (x0,0). Таким чином t20(mod2) тоді і тільки тоді, коли x3+Ax+B має корінь з 𝔽q тоді і тільки тоді, коли НСД(xqx,x3+Ax+B)1.

Алгоритм

    Ввід:
        1. Еліптична крива E=y2x3AxB;
        2. Натуральне число q=pb,b, для скінченного поля Fq.
    Вивід:
        Число точок Шаблон:Mvar над Fq.
    Вибираємо множину непарних простих чисел Шаблон:Mvar, яка не містить Шаблон:Mvar, Шаблон:Nowrap
    Шаблон:Nowrap
    Шаблон:Nowrap
    Всі обчислення в циклі нижче виконуються Шаблон:Nowrap
    Шаблон:Nowrap
        Шаблон:Nowrap Шаблон:Nowrap
        Шаблон:Nowrap
        Шаблон:Nowrap
            Шаблон:Nowrap
            Шаблон:Nowrap
                Шаблон:Nowrap
                    Шаблон:Nowrap
                        Шаблон:Nowrap
                    інакше
                        Шаблон:Nowrap
        інакше якщо Шаблон:Mvar є квадратом по модулю Шаблон:Mvar, то
            Шаблон:Nowrap
            Шаблон:Nowrap
            Шаблон:Nowrap
                Шаблон:Nowrap
            Шаблон:Nowrap
                Шаблон:Nowrap
            інакше
                Шаблон:Nowrap
        інакше
            Шаблон:Nowrap
    Використовуємо китайську теорему про остачі для обчислення Шаблон:Mvar по модулю Шаблон:Mvar
        з рівнянь ttl(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). Тут O~ означає O зі знехтуваними логарифмічним множниками.

Модифікація алгоритму Шуфа

Шаблон:Main У 1990-х роках Шаблон:Не перекладено, а за ним Шаблон:Не перекладено, вдосконалили алгоритм Шуфа через обмеження множини простих чисел S={l1,,ls}, розглянутої раніше, до простих чисел певного виду. Просте число l називається простим числом Елкіса, якщо характеристичне рівняння ϕ2tϕ+q=0 розкладається над 𝔽l, а прості числа Аткіна – це прості числа, які не є простими Елкіса. Аткін показав як комбінувати інформацію, отриману з простих чисел Аткіна, з інформацією, отриманою з простих чисел Елкіса, щоб отримати більш ефективний алгоритм, який отримав назву алгоритм Шуфа — Елкіса — Аткіна. Перша задача, яку потрібно вирішити, – чи є задане просте число простим Аткіна, чи простим Елкіса. Для цього використовуються модулярні поліноми, які виникають при вивченні модулярних форм та інтерпретації еліптичних кривих над полем комплексних чисел як решіток. Після того, як визначимо, у якому випадку перебуваємо, замість того, щоб використовувати поліноми ділення, ми зможемо працювати з поліномами, які мають нижчий степінь, ніж відповідні поліноми ділення: O(l) замість O(l2). Для ефективної реалізації використовуються ймовірнісні алгоритми знаходження коренів, що робить алгоритм алгоритмом Лас-Вегаса, а не детермінованим алгоритмом.

При евристичному припущенні, що приблизно половина простих чисел, які не перевищують O(logq), є простими числами Елкіса, це дає більш ефективний алгоритм ніж алгоритм Шуфа з очікуваним часом роботи O(log6q) при використанні звичайної арифметики та O~(log4q) при використанні швидкої арифметики. Хоч це евристичне припущення вірне для багатьох еліптичних кривих, але невідомо чи воно виконується в загальному випадку, навіть при істинності узагальненої гіпотези Рімана.

Джерела

Шаблон:Алгоритми теорії чисел