【问题标题】:Number of points on elliptic curve椭圆曲线上的点数
【发布时间】:2010-09-29 07:24:51
【问题描述】:

如果你有一条椭圆曲线:

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

有没有好的程序可以计算这条曲线上的点数?

我已阅读有关 Schoof 和 Schoof-Elkies-Atkin (SEA) 算法的信息,但我正在寻找开源实现。有谁知道可以做到这一点的好程序吗?

另外如果a为1,b为0,则SEA算法不能使用,因为j-invariant为0。这样正确吗?

【问题讨论】:

  • 我认为您需要更具体一些。可用的点空间是多少?整数?雷亚尔?除非您以其他方式限制问题,否则存在无限点。
  • OP 说“mod p”意味着整数。
  • 上下文可能是椭圆曲线密码学,但我不确定,数学有点过头了。
  • 这是一个有趣的主题,我在我的一本旧数学书中找到了一些关于椭圆曲线模 p 的理论。如果您有兴趣,我可以提供一些信息(但没有解决方案)。而且我不确定我是否仍然理解完整的数学,但这是有趣的东西。
  • 对于该领域的任何人来说,这个问题的措辞都是绝对正确的。椭圆曲线的点数 E mod p 是指在具有 p 个元素 A^2(F_p) 的场上的仿射平面中的点数(或投影平面中的点数 P^2(F_p ))。

标签: cryptography elliptic-curve


【解决方案1】:

你听说过Sage吗?

Sage 包含 Pari,它是一个用于数论的开源软件包。 Pari 有一个 SEA 的实现。

来自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

【讨论】:

    【解决方案2】:

    为此,我也一直在使用 Mike Scotts 程序(miracl)。 只是好奇,我可能会问:您可以使用该软件生成的具有主要组顺序的域有多大? 我升到了 1024 位,现在退出了,因为我需要我的办公室 PC 来连续数周运行点计数软件以外的东西。 您是否制作了更大的域?如果是这样,我很高兴获得域参数,如果您没有异议,请将它们包含在我的 ECC 软件学术签名中。

    我的域名可以在这里找到ECC Domain Page。 可以从这里访问使用它们的软件Manual with Link to download page

    问候。

    【讨论】:

      【解决方案3】:

      这里有一些链接: Implementations of portions of the P1363 draft(本页回溯backup link)。

      【讨论】:

      • “Schoof 算法在任意椭圆曲线上计数点的 C++ 实现,Mike Scott”完成了这项工作。我必须进行一些更改,以便它适用于大量数据。即:增加数组的大小和“大”数字的精度。
      • 该页面上的链接对我来说已失效,任何人都可以镜像吗?
      • @samoz 刚刚修改了答案以包含 Wayback backup link,我希望答案的原作者不介意,因为从 2014 年开始,他还没有回复您更新死亡的请求链接。
      【解决方案4】:

      我试过 Sage。我花了大约 3-4 个小时编译到 x64 ubuntu。这似乎是一个很好的程序。但是当 j-invariant 为 0 时,SEA 算法就不能使用了,然后如果 p/k 使用大的值,似乎会出现一些问题。

      在搜索了更多之后我也找到了miracl:http://www.shamus.ie/index.php?page=elliptic-curves 他们对普通的 Schoof 和 SEA 算法都有实现。但是这个程序在使用大输入值时也存在一些问题。运行 3-4 小时后,它崩溃了:/。我试图修复它,目前它正在再次运行,所以希望它会起作用。

      编辑:它现在可以工作了。上面链接中的程序与 Rasmus Faber 给出的程序相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多