曲线secp256r1和secp256k1都是在各种不对称密码术中使用的两条椭圆曲线的示例。我听说过这样的说法……


Satoshi选择了非标准加密货币,传统观点认为它将在5-10年内被破解。 >关于比特币对话的讨论在论证的双方都有不同的见解(另请参阅本文)。我想将其从比特币转移到一般的密码问题:secp256r1在某种意义上确实比secp256k1更安全吗?

评论

以下来自SECG主席的电子邮件回复说明了secp256k1中使用的常量:bitcointalk.org/index.php?topic=289795.msg3183975#msg3183975

另请参阅/ r / bitcoin-reddit.com/r/Bitcoin/comments/2ffy7k/…

看看这个:eprint.iacr.org/2014/368

#1 楼

主要区别在于secp256k1是Koblitz曲线,而secp256r1不是。已知Koblitz曲线比其他曲线要弱一些,但是由于我们谈论的是256位曲线,因此除非有突破,否则它们都不会在“ 5-10年内”断裂。

另一个区别在于如何选择参数。在secp256r1中,它们据说是随机数,但是,不可能证明确实如此。参见例如这些来自Bernstein和Lange的幻灯片可以轻松理解。

另一方面,Koblitz曲线的参数选择比较严格。评论中链接的帖子符有解释为什么选择它们的原因。
因此,与其说一个人更安全,不如说我的风险是不同的。如果两条曲线都没有后门或偶然的弱点,那么两者都是安全的。除非您碰巧拥有secp256r1,否则安全性secp256r1的一些额外内容将无关紧要。一台中等大小的量子计算机,它只能管理一个,但不能管理另一个。后门secp256r1曲线本来会比较容易,但是另一方面,Koblitz曲线作为一个类可能会以目前未知的某种方式完全弱化。

选择哪个比较主观。如果您不喜欢Koblitz曲线,但是担心secp256r1是后门程序,则始终可以选择使用根据自己喜欢的条件设计的其他曲线。 (尽管您当然不能更改BTC的用途。)

评论


$ \ begingroup $
感谢您的详细回答。仅供参考,尽管“您”或我无法更改比特币的算法,但“经济型”大多数人可以。如果有一天确定需要更改算法,则可以从将来的某个块号开始进行更改。参见en.bitcoin.it/wiki/Economic_majority
$ \ endgroup $
–ripper234
2014年9月5日下午0:14

$ \ begingroup $
Secp256k1也在素数场上,但具有与Koblitz曲线相似的内态。
$ \ endgroup $
– CodesInChaos
15/12/26在15:57

$ \ begingroup $
@CodesInChaos,已修复。我认为,即使他们已经超出主要领域,美国证券交易委员会(SEC)仍将其称为Koblitz。
$ \ endgroup $
–otus
15/12/27在8:47

#2 楼

曲线secp256r1和secp256k1具有相当的安全性。

如果仅考虑当今最著名的攻击,它们的安全性就非常接近。因此,适用的最佳攻击是Pollard的Rho。它的复杂度为:$ \ sqrt {\ frac {{\ pi} n} {2m}} $其中$ n $是曲线的阶数(如果是质数,例如在我们的例子中),而$ m $是阶数自同构的形式(请参阅本文以获取以下详细信息)。

现在,所有椭圆曲线都具有2阶自构,这由点求逆图提供,即对于$ P =(x,y); -P =(x,-y)$。

secp256k1具有附加的自同构性,因为它属于一类特殊的椭圆曲线,有时称为Koblitz(尽管这引起了一些混乱,并且有些人错误地将其称为二进制曲线),具有附加的自同构性。这允许将点$ P =(x,y)$映射到$ \ lambda P =(\ beta x,y)$或$ \ lambda ^ 2 P =(\ beta ^ 2 x,y)$,其中$ \ beta = \ sqrt [3] {1} \ pmod {p},\ lambda = \ sqrt [3] {1} \ pmod {n} $。可以将其与反演图结合并获得6阶。 \ frac {{\ pi} n_ {secp256r1}} {4}} = 127.83 $

安全性secp256k1 = $ \ log_2 \ sqrt {\ frac {{\ pi} n_ {secp256k1}}} {12 }} = 127.03 $

具有可比性。

然后,考虑到刚性,secp256k1比secp256r1更具刚性。因此,从理论上来说,secp256r1可能属于椭圆形曲线的秘密类别,而该秘密类别并不像我们认为的那样安全。

然后,考虑椭圆形曲线的特殊类别,secp256k1属于特殊类别,因为它的参数不是随机选择的,而secp256r1的参数看起来是随机的(但由于secp256r1的刚性问题,我们无法确定)。
因此,从理论上讲,有可能发现secp256k1的类不如我们目前认为的安全。但是此类是众所周知的,到目前为止,唯一的问题是附加的否定映射,这使得它比secp256r1更快地进行标量乘法计算。刚性和特殊类别的考虑会影响曲线的整体安全性。一方面,NSA使用了人们不完全信任的过程生成secp256r1,另一方面,secp256k1被选为椭圆曲线的特殊类别。事实相互抵消。
因此,在这种情况下,我选择坚持使用当前最著名的攻击作为安全措施,并得出结论,它们具有可比的安全性。

#3 楼

以下是各种曲线上的大量硬数据,经过了充分分析,并以可读的方式汇总了发现:
br />与该答案相关的文章并非完全符合相同的分析标准,并且我认为,这是具有欺骗性的,无论是恶意的(相对于不太可能的)还是仅仅是由于对基本研究方法的缺乏了解。

#4 楼

第一个secp256r1是随机的,而secp256k1是Koblitz曲线。因此,根据本文:


应该避免Koblitz曲线,因为它们对密码分析活动没有足够的保证,并且有效地是:


不属于NSA Suite-B密码选择
不属于ECC Brainpool选择
不属于ANSI X9.62选择
不属于OpenPGP ECC扩展选择
不是ECC曲线选择的Kerberos扩展的一部分



评论


$ \ begingroup $
该页面在很多方面都令人困惑。作者似乎认为NIST P-256与Brainpool的曲线相同。
$ \ endgroup $
–otus
2014年9月4日在18:17

$ \ begingroup $
@otus:只是引用而不是评估。但是我认为事实是,Koblitz曲线不是许多选择的一部分,这是正确的,至少非常有趣。
$ \ endgroup $
–尝试
2014年9月5日在8:30

$ \ begingroup $
Koblitz曲线包含在FIPS 186-4,NIST标准以及许多其他RFC中。樱桃挑选一堆不包含这些曲线的标准的方法(包括一些显然不包括这些曲线的标准,例如Br​​ainpool RFC),似乎应该避免使用Koblitz曲线,这是极其繁琐的。
$ \ endgroup $
– Rushyo
2015年8月12日15:58



$ \ begingroup $
我仍要说素数场曲线在协议和领域中都更为普遍。但是,如果那是不使用它们的主要原因,那么我们仍将生活在洞穴中。
$ \ endgroup $
–马腾·博德威斯♦
15年8月13日在17:33

$ \ begingroup $
我宁愿使用NSA tbf未指定的曲线。
$ \ endgroup $
–伍德斯托克
19年5月20日在10:59