Перейти до вмісту

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

Матеріал з Вікіпедії — вільної енциклопедії.

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

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

Вступ

[ред. | ред. код]

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

,

де . Множина точок, визначених над , складається з розв'язків , які задовольняють рівняння кривої, та точки на нескінченності . Застосовуючи груповий закон на еліптичних кривих до цієї множини отримаємо абелеву групу , у якій буде нейтральним елементом. Кількість точок на еліптичній кривій дорівнює потужності множини . Підхід Шуфа для обчислення потужності використовує теорему Гассе про еліптичні криві разом з китайською теоремою про остачі та поліномами ділення[en].

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

[ред. | ред. код]

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

Цей сильний результат, отриманий Гассе в 1934 році, спрощує нашу задачу, звужуючи до скінченного (хоча і великого) набору можливих значень . Позначимо , обчислення значення по модулю буде достатньо для знаходження самого значення , а з нього – значення . Хоча немає прямого ефективного шляху обчислення для довільного , проте можна обчислити для малого простого числа більш ефективно. Виберемо множину різних простих чисел , для яких . Після отримання значень для кожного обчислимо за допомогою китайської теореми про лишки.

Для того, щоб обчислити для простого , використаємо ендоморфізм Фробеніуса та поліноми ділення. Розгляд простих чисел не є проблемою, бо завжди можна вибрати більше просте число, яке займе місце , так щоб добуток вище задовольняв відповідну нерівність.

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

[ред. | ред. код]

Нехай  – еліптична крива, визначена над , розглянемо точки на над , де  – алгебраїчне замиканням . Тобто ми дозволяємо точки з координатами в . Ендоморфізм Фробеніуса над розширює еліптичну криву відображенням .

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

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

Теорема. Ендоморфізм Фробеніуса, заданий відображенням , задовольняє характеристичне рівняння

де

Тоді для всіх матимемо , де «» – операція додавання точок на еліптичній кривій за груповим законом, а та  – множення точок та на скаляри та , відповідно.

Можна спробувати обчислити , і як функції на координатному кільці[en] кривої , а потім шукати значення , яке задовольняє рівняння. Однак, на практиці, коли степені стають занадто великими, такий підхід буде недоцільним.

Ідея Шуфа полягає в тому, щоб провести ці обчислення, обмежуючись точками порядку для різних малих простих чисел . Фіксуючи непарне просте число , переходимо до задачі знаходження , визначеного як , для заданого . Якщо точка знаходиться в підгрупі -кручення , то , де  – єдине ціле, таке що та . Зауважимо, що і для будь-якого цілого виконується . Таким чином, матиме такий же порядок як і . Тоді для матимемо при . Таким чином, задача зводиться до розв'язання рівняння

, де .

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

[ред. | ред. код]

Позначимо (пам'ятаємо, що ми працюємо по модулю l).

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

,

де  – n-ий поліном ділення. Функція залежить тільки від x, позначимо її через .

Розглянемо два випадки: та (тут рівність по модулю ).

Випадок 1:

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

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

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

Покажемо, шо є функцією тільки від . Розглянемо . Замінимо на , тоді отримаємо

Оскільки парне, то така заміна означає, що ми працюємо у факторкільці .

Якщо для деякого , то виконується рівність

для всіх .

Як згадувалося раніше, використовуючи та , можна визначити, яке з двох значень ( або ) працює. Це дає значення . Далі алгоритм Шуфа зберігає значення в змінній для кожного розглянутого простого l.

Випадок 2:

Спочатку припустимо, що . Для точки , що задовольняє це, з характеристичного рівняння отримуємо . А отже, . З цього випливає, що є квадратом по модулю . Нехай . Обчислимо в та перевіримо чи . Якщо це так, то , де знак залежить від y-координати.

Якщо не є квадратом по модулю l або рівність не виконується для жодного , то припущення, що невірне, тому . Характеристичне рівняння дає .

Додатковий випадок:

Якщо згадати, наші початкові міркування опускають випадок . Припускалось, що q непарне та зокрема, тоді і тільки тоді, коли містить елемент порядку 2. За означенням додавання в цій групі будь-який елемент порядку 2 має вигляд . Таким чином тоді і тільки тоді, коли має корінь з тоді і тільки тоді, коли .

Алгоритм

[ред. | ред. код]
    Ввід:
        1. Еліптична крива ;
        2. Натуральне число , для скінченного поля .
    Вивід:
        Число точок E над .
    Вибираємо множину непарних простих чисел S, яка не містить p, така що 
    Покладемо  якщо , інакше .
    Обчислюємо поліном ділення .
    Всі обчислення в циклі нижче виконуються в кільці 
    Для  виконуємо:
        Нехай   – єдине ціле таке що,   and .
        Обчислюємо ,  та .
        Якщо , то
            Обчислюємо .
            для  виконуємо:
                якщо , то
                    якщо , то
                        ;
                    інакше
                        .
        інакше якщо q є квадратом по модулю l, то
            обчислюємо w, для якого 
            обчислюємо 
            якщо , то
                
            інакше якщо , то
                
            інакше
                
        інакше
            
    Використовуємо китайську теорему про остачі для обчислення t по модулю N
        з рівнянь , де .
    Виводимо .

Складність

[ред. | ред. код]

Більшість обчислень припадає на та для кожного простого , тобто на обчислення , , , для кожного простого . Ці обчислення включають піднесення до степені та потребують множень. Степінь дорівнює , тобто . За теоремою про розподіл простих чисел існує близько простих чисел розміру , це дає , маємо . Таким чином, множення в кільці потребує множень , що в свою чергу потребує бітових операцій. Загалом, кількість бітових операцій для кожного простого дорівнює . Оскільки обчислення необхідно провести для простих чисел, то повна складність алгоритму Шуфа дорівнює . Використання швидких операцій з поліномами та цілочисельної арифметики скорочує цей час до . Тут означає зі знехтуваними логарифмічним множниками.

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

[ред. | ред. код]

У 1990-х роках Ноам Елкіс[en], а за ним А. О. Л. Аткін[en], вдосконалили алгоритм Шуфа через обмеження множини простих чисел , розглянутої раніше, до простих чисел певного виду. Просте число називається простим числом Елкіса, якщо характеристичне рівняння розкладається над , а прості числа Аткіна – це прості числа, які не є простими Елкіса. Аткін показав як комбінувати інформацію, отриману з простих чисел Аткіна, з інформацією, отриманою з простих чисел Елкіса, щоб отримати більш ефективний алгоритм, який отримав назву алгоритм Шуфа — Елкіса — Аткіна. Перша задача, яку потрібно вирішити, – чи є задане просте число простим Аткіна, чи простим Елкіса. Для цього використовуються модулярні поліноми, які виникають при вивченні модулярних форм та інтерпретації еліптичних кривих над полем комплексних чисел як решіток. Після того, як визначимо, у якому випадку перебуваємо, замість того, щоб використовувати поліноми ділення, ми зможемо працювати з поліномами, які мають нижчий степінь, ніж відповідні поліноми ділення: замість . Для ефективної реалізації використовуються ймовірнісні алгоритми знаходження коренів, що робить алгоритм алгоритмом Лас-Вегаса, а не детермінованим алгоритмом.

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

Джерела

[ред. | ред. код]