Количество точек на эллиптической кривой

Если у вас есть эллиптическая кривая в виде:

y^2 = x^3 + a*x + b (mod p)

есть ли хорошая программа для вычисления количества точек на этой кривой?

Я читал об алгоритме Schoof и Schoof-Elkies-Atkin (SEA), но я ищу реализации с открытым исходным кодом. Кто-нибудь знает хорошую программу, которая может это сделать?

также, если a равно 1, А b равно 0, алгоритм SEA не может быть использован, потому что J-инвариант равен 0. Заключаться в следующем правильно?

Edit: это в контексте криптографии эллиптической кривой

4 ответов


здесь есть несколько ссылок: реализации частей проекта P1363.


вы слышали о шалфей?

Sage включает Pari, который является пакетом с открытым исходным кодом для теории чисел. Пари имеет реализацию СЭО.

от http://wstein.org/papers/2008-bordeaux/sphinx/elliptic_curves.html#schoof-elkies-atkin-point-counting:

sage: k = GF(next_prime(10^20))
sage: E = EllipticCurve(k.random_element())
sage: E.cardinality()                   # less than a second
100000000005466254167

Я пробовал Sage. Мне потребовалось около 3-4 часов для компиляции в x64 ubuntu. Кажется, это хорошая программа. Но когда J-инвариант равен 0, алгоритм SEA не может быть использован, и тогда, похоже, возникают некоторые проблемы, если вы используете большие значения для p/k.

после поиска еще несколько я также нашел miracl:http://www.shamus.ie/index.php?page=elliptic-curves Они имеют реализации как для нормального алгоритма Schoof, так и для алгоритма SEA. Но эта программа также имеет некоторые проблемы, когда использование больших входных значений. После 3-4 часов работы он разбился :/. Я попытался исправить это, и в настоящее время он работает снова, так что, надеюсь, он будет работать.

Edit: теперь он работает. Программа в приведенной выше ссылке идентична той, которую дал Расмус Фабер.


Я также использую программу Mike Scotts (miracl) для этой цели. Просто любопытно, могу ли я спросить: насколько велики были домены с prime group order, которые вы могли бы произвести с помощью программного обеспечения? Я поднялся до 1024 бит и теперь ушел, потому что мне нужен мой офисный компьютер для чего-то другого, чем программное обеспечение для подсчета точек в течение нескольких недель. Вы производили более крупные Домены? Если да, я был бы рад получить параметры домена, и если у вас нет возражений, включите их в мой ECC-Software Academic Подпись.

мои домены можно найти здесь страница домена ECC. Программное обеспечение для их использования доступно отсюда руководство со ссылкой на страницу загрузки

с уважением Майкл Андерс!--1-->