Простота эллиптической кривой - Elliptic curve primality
В математике , эллиптической кривой на простоту тестирования методов, или эллиптическая кривая доказательство простоты чисел (ЕКПП), являются одними из самых быстрых и наиболее широко используемых методов в прувинга простоты чисел. Эта идея была выдвинута Шафи Голдвассером и Джо Килианом в 1986 году и в том же году преобразована в алгоритм AOL Atkin . Алгоритм был изменен и улучшен несколько сотрудников впоследствии, и , в частности по Аткин и Франсуа мореню , в 1993 году Концепция использования эллиптических кривых в факторизации была разработана HW Ленстрами в 1985 году, и последствие для его использования в простоты тестирование (и доказательство) последовало быстро.
Тестирование на примитивность - это область, которая существует со времен Ферма , когда большинство алгоритмов основывались на факторинге, который становился громоздким с большими входными данными ; современные алгоритмы решают проблемы определения того, является ли число простым и каковы его множители по отдельности. Это приобрело практическое значение с появлением современной криптографии. Хотя многие текущие тесты приводят к вероятностному выходу ( N отображается либо составным, либо, вероятно, простым, как, например, с тестом на простоту Бейли – PSW или тестом Миллера – Рабина ), тест эллиптической кривой доказывает простоту (или составность) с помощью быстрого проверяемый сертификат.
Ранее известные методы доказательства простых чисел, такие как тест на простоту Поклингтона, требовали по крайней мере частичной факторизации числа , чтобы доказать, что это простое число. В результате эти методы требовали некоторой удачи и, как правило, на практике медленны.
Доказательство простоты эллиптической кривой
Это универсальный алгоритм , то есть он не зависит от числа, имеющего особую форму. ECPP в настоящее время на практике является самым быстрым из известных алгоритмов для проверки простоты общих чисел, но время выполнения наихудшего случая неизвестно. ECPP эвристически работает во времени:
для некоторых . Для некоторых версий этот показатель может быть уменьшен до эвристических соображений. ECPP работает так же, как и большинство других тестов на простоту , обнаруживая группу и показывая, что ее размер является простым. Для ECPP группа - это эллиптическая кривая над конечным набором квадратичных форм, факторизация которой по группе тривиальна.
ЕКПП генерирует Аткин - Гольдвасер -Kilian-морену сертификат из простоты по рекурсии , а затем пытается проверить сертификат. Шаг, который занимает больше всего процессорного времени, - это создание сертификата, потому что необходимо выполнить факторинг по полю класса . Сертификат можно быстро проверить, поэтому проверка работоспособности займет очень мало времени.
По состоянию на февраль 2020 года наибольшее простое число, подтвержденное методом ECPP, состояло из 40000 цифр. Сертификация Пола Андервуда с использованием программного обеспечения Primo Марселя Мартина заняла 21,5 месяца.
Предложение
Тесты простоты эллиптической кривой основаны на критериях, аналогичных критерию Поклингтона, на котором основан этот тест, где группа заменяется на, а E - правильно выбранная эллиптическая кривая. Теперь мы сформулируем предложение, на котором будет основан наш тест, который аналогичен критерию Поклингтона и дает начало форме Голдвассера – Килиана – Аткина для проверки простоты эллиптической кривой.
Пусть N быть положительным целым числом, и Е множество , которое определяется уравнением Рассмотрим Е над использовать обычный закон сложения на Е , и писать 0 для нейтрального элемента на E .
Пусть m - целое число. Если существует простое число q, которое делит m , больше и существует точка P на E такая, что
(1) mP = 0
(2) ( m / q ) P определено и не равно 0
Тогда N простое.
Доказательство
Если N составное, то существует простое число , которое делит N . Определить , как эллиптической кривой , определяемой тем же уравнением , как Е , но оцениваемой по модулю р , а не по модулю N . Определите как порядок группы . По теореме Хассе об эллиптических кривых мы знаем
и, следовательно, существует целое число u со свойством, что
Позвольте быть точкой P, вычисленной по модулю p . Таким образом, мы имеем
согласно (1), as вычисляется с использованием того же метода, что и mP , за исключением того, что по модулю p, а не по модулю N (и ).
Это противоречит (2), потому что если ( m / q ) P определено и не равно 0 (mod N ), то тот же метод, вычисленный по модулю p вместо модуля N , даст:
Алгоритм Гольдвассера – Килиана
Из этого предложения можно построить алгоритм, чтобы доказать, что целое число N является простым. Это делается следующим образом:
Выберите наугад три целых числа a, x, y и установите
Теперь P = ( x , y ) - точка на E , где E определяется как . Далее нам нужен алгоритм для подсчета количества точек на E . Применительно к E этот алгоритм (Коблиц и другие предлагают алгоритм Шуфа ) дает число m, которое представляет собой количество точек на кривой E над F N , при условии, что N является простым. Если алгоритм точка подсчета останавливается на неопределенное выражение это позволяет определить нетривиальный фактор N . Если это удается, мы применяем критерий для определения приемлемости нашей кривой E.
Если мы можем записать т в виде , где представляет собой небольшое целое число , а д большой вероятности того штрих (число , которое проходит вероятностный тест простоты , например), то мы не выбрасывайте E . В противном случае мы отбрасываем нашу кривую и случайным образом выбираем другую тройку (a, x, y), чтобы начать заново. Идея здесь состоит в том, чтобы найти m , которое делится на большое простое число q . Это простое в несколько цифр меньше , чем м (или N ) , поэтому д будет легче доказать , чем простое N .
Предположим , что мы находим кривую , которая проходит по критерию, к вычислению тР и кП . Если какие - либо из двух расчетов производит неопределенное выражение, мы можем получить нетривиальный фактор N . Если оба расчета успешны, мы исследуем результаты.
Если ясно, что N не является простым числом, потому что если бы N было простым, то E имел бы порядок m , и любой элемент E стал бы 0 при умножении на m . Если kP = 0, то алгоритм отбрасывает E и начинает заново с другой тройкой a, x, y .
Теперь, если, а затем наше предыдущее предложение говорит нам, что N простое число. Однако есть одна возможная проблема - простота q . Это проверяется с использованием того же алгоритма. Итак, мы описали рекурсивный алгоритм , в котором простота N зависит от простоты q и от меньших «вероятных простых чисел» до тех пор, пока не будет достигнут некоторый порог, при котором q считается достаточно малым для применения нерекурсивного детерминированного алгоритма.
Проблемы с алгоритмом
Аткин и Морейн заявляют, что «проблема с GK состоит в том, что алгоритм Шуфа кажется почти невозможным для реализации». Очень медленно и громоздко подсчитывать все точки на E с помощью алгоритма Шуфа, который является предпочтительным алгоритмом для алгоритма Голдвассера – Килиана. Однако исходный алгоритм Шуфа недостаточно эффективен, чтобы обеспечить количество баллов за короткое время. Эти комментарии следует рассматривать в историческом контексте, до того, как Элкис и Аткин усовершенствовали метод Шуфа.
Вторая проблема, которую отмечает Коблиц, - это трудность нахождения кривой E , количество точек которой имеет форму kq , как указано выше. Не существует известной теоремы, которая гарантирует, что мы сможем найти подходящее E за полиномиально много попыток. Распределение простых чисел на интервале Хассе , который содержит m , не то же самое, что распределение простых чисел в групповых порядках, считая кривые с кратностью. Однако на практике это не является серьезной проблемой.
Тест на простоту эллиптической кривой Аткина – Морана (ECPP)
В статье 1993 года Аткин и Морейн описали алгоритм ECPP, который позволяет избежать проблем, связанных с громоздким алгоритмом подсчета точек (Schoof's). Алгоритм по-прежнему основывается на утверждении, изложенном выше, но вместо того, чтобы произвольно генерировать эллиптические кривые и искать собственное m , их идея состояла в том, чтобы построить кривую E, количество точек которой легко вычислить. Комплексное умножение - ключ к построению кривой.
Теперь, дал N , для которых потребность простоты будет доказана , мы должны найти подходящие м и д , так же , как в тесте Гольдвасер-Килиан, который будет выполнять предложение и доказать простоты N . (Конечно, также должны быть найдены точка P и сама кривая E. )
ECPP использует комплексное умножение для построения кривой E , делая это таким образом, чтобы можно было легко вычислить m (количество точек на E ). Теперь опишем этот метод:
Использование комплексного умножения требует отрицательного дискриминанта , D , такие , что D может быть записан как произведение двух элементов , или полностью эквивалентным образом , мы можем записать уравнение:
Для некоторых а, б . Если мы можем описать N в терминах любой из этих форм, мы можем создать эллиптическую кривую E на комплексном умножении (подробно описанном ниже), а количество точек определяется следующим образом:
Чтобы N разделился на два элемента, нам это нужно (где обозначает символ Лежандра ). Это необходимое условие, и мы достигаем достаточности, если номер класса h ( D ) порядка in равен 1. Это происходит только для 13 значений D , которые являются элементами {−3, −4, −7, - 8, −11, −12, −16, −19, −27, −28, −43, −67, −163}
Тест
Выбираем дискриминанты D в порядке возрастания h ( D ). Для каждого D проверьте , можно ли записать 4 N как:
Эта часть может быть проверена с помощью алгоритма Корнаккья . После обнаружения приемлемых D и a произведите расчет . Теперь, если у m есть простой делитель q размера
используйте метод комплексного умножения, чтобы построить кривую E и точку P на ней. Тогда мы можем использовать наше предложение для проверки простоты N . Обратите внимание , что если м не имеет большой простой множитель или не могут быть разложены достаточно быстро, другой выбор D может быть сделан.
Комплексный метод умножения
Для полноты картины мы предоставим обзор комплексного умножения , способа, которым может быть создана эллиптическая кривая с учетом нашего D (которое может быть записано как произведение двух элементов).
Предположим сначала, что и (эти случаи намного легче сделать). Это необходимо , чтобы вычислить эллиптические J-инварианты на час ( D ) классов порядка дискриминантной D в качестве комплексных чисел. Для их расчета существует несколько формул.
Затем создайте монический многочлен , корни которого соответствуют значениям h ( D ). Обратите внимание, что это полином класса . Из теории комплексного умножения мы знаем, что у него есть целые коэффициенты, что позволяет нам достаточно точно оценить эти коэффициенты, чтобы определить их истинные значения.
Теперь, если N простое, CM сообщает нам, что разбивает по модулю N на произведение h ( D ) линейных множителей, основываясь на том факте, что D было выбрано так, что N разбивается как произведение двух элементов. Теперь, если j является одним из корней h ( D ) по модулю N, мы можем определить E как:
c - любой квадратичный невычет по модулю N , а r равно 0 или 1.
Для данного корня j существует только два возможных неизоморфных выбора E , по одному для каждого выбора r . Мощность этих кривых равна
- или
Обсуждение
Как и в случае с тестом Голдвассера – Киллиана, этот тест ведет к процедуре спуска. Опять же, виноват q . Как только мы находим q, который работает, мы должны проверить его на простоту, так что фактически мы проводим весь тест для q . С другой стороны, нам, возможно, придется выполнить тест на множители q . Это приводит к вложенному сертификату, где на каждом уровне у нас есть эллиптическая кривая E , m и сомнительное простое число q .
Пример ECPP Аткина – Морейна
Мы построим пример, чтобы доказать, что это простое число, используя тест ECPP Аткина – Морейна. Сначала пройдите через набор из 13 возможных дискриминантов, проверяя, можно ли записать символ Лежандра и 4 N как .
Для нашего примера выбран. Это потому, что, а также, используя алгоритм Корнаккьи , мы знаем это, и, следовательно, a = 25 и b = 1.
Следующим шагом будет вычисление m . Это легко сделать, что дает. Далее нам нужно найти вероятный простой делитель числа m , который был обозначен как q . Он должен удовлетворять условию, что
В данном случае m = 143 = 11 × 13. Так что, к сожалению, мы не можем выбрать 11 или 13 в качестве q , поскольку это не удовлетворяет необходимому неравенству. Однако нас спасает утверждение, аналогичное тому, которое мы сформулировали перед алгоритмом Голдвассера – Килиана, которое взято из статьи Морейна. В нем говорится, что учитывая м , мы ищем с которой делит м , , но не обязательно простое, и проверить, для каждого , который делит s
для некоторой точки P на нашей еще не построенной кривой.
Если s удовлетворяет неравенству, а его простые множители удовлетворяют указанным выше, то N простое число.
Итак, в нашем случае мы выбираем s = m = 143. Таким образом, наши возможные значения равны 11 и 13. Во-первых, это ясно , и поэтому нам нужно только проверить значения
Но прежде чем мы сможем сделать это, мы должны построить нашу кривую, и выберем точку P . Чтобы построить кривую, мы используем комплексное умножение. В нашем случае мы вычисляем J-инвариант
Далее мы вычисляем
и мы знаем, что наша эллиптическая кривая имеет вид:
- ,
где k , как описано ранее, а c - не квадрат в . Итак, мы можем начать с
который дает
Теперь, используя точку P = (6,6) на E, можно проверить, что
Несложно проверить, что 13 (6, 6) = (12, 65) и 11 P = (140, 147), а значит, по предложению Морана N простое число.
Сложность и время выполнения
Алгоритм доказательства простоты эллиптических кривых Голдвассера и Килиана завершается за ожидаемое полиномиальное время как минимум в течение
основных входов.
Гипотеза
Пусть будет количество простых чисел меньше x
при достаточно большом x .
Если принять эту гипотезу, то алгоритм Голдвассера – Килиана завершается за ожидаемое полиномиальное время для каждого входа. Кроме того, если наше N имеет длину k , тогда алгоритм создает сертификат размера, который можно проверить .
Теперь рассмотрим другую гипотезу, которая даст нам оценку общего времени работы алгоритма.
Гипотеза 2
Предположим, что существуют положительные константы и такие, что количество простых чисел в интервале
- больше чем
Затем алгоритм Гольдвассера-Килиана доказывает простоту N за ожидаемое время
Для алгоритма Аткина – Морейна заявленное время работы составляет
- для некоторых
Простые числа особой формы
Для некоторых форм чисел можно найти «короткие пути» к доказательству простоты. Так обстоит дело с числами Мерсенна . Фактически, из-за их особой структуры, которая позволяет упростить проверку простоты, шесть наибольших известных простых чисел являются числами Мерсенна. Некоторое время назад использовался метод проверки простоты чисел Мерсенна, известный как тест Лукаса-Лемера . В этом тесте не используются эллиптические кривые. Однако мы представляем результат, в котором числа вида где , n нечетное можно доказать простыми (или составными) с помощью эллиптических кривых. Конечно, это также предоставит метод доказательства простоты чисел Мерсенна, который соответствует случаю, когда n = 1. Существует метод проверки этой формы числа без эллиптических кривых (с ограничением на размер k). известный как тест Лукаса – Лемера – Ризеля . Следующий метод взят из статьи Ю. Цумуры « Тест на простоту для использования эллиптических кривых ».
Групповая структура
Мы возьмем E в качестве нашей эллиптической кривой, где E имеет вид для где простое и с нечетным.
- Теорема 1.
- Теорема 2. или в зависимости от того, является ли m квадратичным вычетом по модулю p .
- Теорема 3. Пусть Q = ( x , y ) на E таково, что x квадратичный невычет по модулю p . Тогда порядок Q делится на в циклической группе
Сначала мы представим случай, когда n относительно мало , и для этого потребуется еще одна теорема:
-
Теорема 4. Выберем a и предположим
- Тогда p является простым числом тогда и только тогда, когда существует Q = ( x , y ) на E , такое, что для i = 1, 2, ..., k - 1 и где - последовательность с начальным значением
Алгоритм
Мы предлагаем следующий алгоритм, который в основном опирается на теоремы 3 и 4. Чтобы проверить простоту данного числа , выполните следующие шаги:
(1) Выберите такое, что и найдите такое, что .
Возьми и .
Тогда идет .
Рассчитайте . Если then составное, в противном случае переходите к (2).
(2) Установите как последовательность с начальным значением . Рассчитать для .
Если для разряда , то где тогда является составным. В противном случае переходите к (3).
(3) Если то простое. В противном случае - составной. На этом тест завершен.
Обоснование алгоритма
В (1) выбрана эллиптическая кривая E вместе с точкой Q на E так , что координата x кривой Q является квадратичным невычетом. Мы можем сказать
Таким образом, если N простое число, Q ' имеет порядок, кратный по теореме 3, и, следовательно, порядок Q' равен d | п .
Это означает, что Q = nQ ' имеет порядок . Следовательно, если (1) заключает, что N составное, оно действительно составное. (2) и (3) проверяют, имеет ли Q порядок . Таким образом, если (2) или (3) заключают, что N составное, оно составное.
Теперь, если алгоритм приходит к выводу, что N является простым числом, это означает, что удовлетворяет условию теоремы 4, и поэтому N действительно простое число.
Также существует алгоритм для случаев, когда n велико, однако для этого мы ссылаемся на вышеупомянутую статью.
использованная литература
внешние ссылки
- Эллиптические кривые и простоты Доказывание по Аткин и морене.
- Вайсштейн, Эрик В. "Доказательство примитивности эллиптической кривой" . MathWorld .
- Крис Колдуэлл, «Доказательство первичности 4.2: эллиптические кривые и тест ECPP» на Prime Pages .
- Франсуа Морен, «Домашняя страница ECPP» (включает старое программное обеспечение ECPP для некоторых архитектур).
- Марсель Мартин, "Primo" (двоичный код для 64-разрядной версии Linux)
- PARI / GP , система компьютерной алгебры с функциями для создания сертификатов примитивности Аткина-Морейна и Primo
- GMP-ECPP , бесплатная реализация ECPP
- LiDIA , бесплатная библиотека C ++ для Linux с поддержкой ECPP