本文讲解密码学中少见的椭圆曲线以及他们之间的关系,讲解有所不同标准体系的命名规则,尝试叙述椭圆曲线之间的家族演义关系。文章企图讲清椭圆曲线涉及概念和功能,不牵涉到简单的数学证明和推理小说,青睐感兴趣的同学读者。笔者主要参照Wikipedia和涉及的组织网站的信息展开整理,不回避经常出现纰漏的有可能,青睐专家批评指正。
一个有可能你没有关心过的问题在《一个数字引起的探寻——ECDSA解析》中提及的椭圆曲线secp256k1,它有一些特性,可以较慢计算出来出有recoveryID。这个secp256k1为什么如此命名?不怕各位笑话,我在弄清楚它之前,常常拼法拢,写sec256pk1,seck256p1等。咬文嚼字secp256k1搞清楚secp256k1的命名含义只不过很非常简单,搜索引擎可以较慢为你定位到答案,它出自于一个密码协议标准,每一个字母和数字都代表着特定含义,我们来一一解析。
1、密码协议标准第一部分是「sec」,sec是Standards for Efficient Cryptography 的全称,是SECG公布的一种密码学协议标准。SECG公布的「SEC 1」和「SEC 2」两个关于椭圆曲线的协议标准,在「SEC 2」中有详尽解释secp256k1以及其他曲线的参数定义。除了「sec」,还有众多其他关于椭圆曲线的协议标准,从「SafeCurve」中可以看见有下列有所不同类型的标准。
「SafeCurve」此处较幸没改版,有些标准早已改版了多次,例如NIST关于数字签名的标准 FIPS 186目前在用的是第四版,第五版也在草拟中了,从「NIST」官网中可见。NIST是美国的国家标准技术研究所(National Institute of Standards and Technology),因此,NIST的标准也是美国标准。「NIST FIPS 186-4」标准中定义了若干椭圆曲线标准,例如NIST P-256、NIST P-384等,其中结尾NIST也代表密码协议标准的名字。先前叙述都是环绕这两个标准来解析。
2、受限域第二部分是「p」,p回应该椭圆曲线是基于素数受限域Fp。受限域是离散数学中的概念,此处不做到进行,非常简单来说,它是一个由受限数量元素构成的子集,元素之间可以展开乘法和乘法计算出来,不具备一些独有的属性。
密码学中用于椭圆曲线都是基于受限域的,除了素数受限域Fp之外,还有另一种特征为2的受限域F2m(因格式问题,2m有误2的m次方,网卓新闻网,折合) ,Fp的大小(元素个数)为p,F2m的大小为2m。基于Fp的椭圆曲线为:在「SEC 2」中还定义了sect163k1、sect163r1等曲线,其中,t回应的是该曲线基于F2m。在「NIST FIPS 186-4」中定了P-256、B-163等曲线,P-回应基于Fp,B-回应基于F2m。
3、受限域大小每个椭圆曲线E都有若干关键参数,还包括阶为n的基点G和系数h等,其中,n为一个大素数,n*h为椭圆曲线上点的数量。为了计算出来效率考虑到,h一般来说设置为1、2或4。通俗地谈,如果椭圆曲线上的点数量就越多,那么这条椭圆曲线的安全性度就越高,因此n的给定是影响曲线安全性的关键。椭圆曲线又都是基于受限域的,曲线上的点都是受限域中的元素,因此,受限域大小要求了曲线安全性度。
第三部分「256」就是受限域大小的表现形式,还有更加多其他如192、224、384等,在「NIST FIPS 186-4」中有个表格展现出了Fp 和F2m 两个域的各种有所不同大小配备。SEC标准在这块的设置和NIST标准类似于,我们不会看见p系列的曲线有p192、p224、p256(secp256k1就是其中一种)、p384和p521,t/B系列有t163/B-163、t233/B-233等。
4、Koblitz Curve第四部分「k」回应该曲线是Koblitz Curve,从「SEC 2」中可以看见还有此处标记为r的曲线(如secp256r1),r回应该曲线是伪随机曲线Pesudo-Random Curve。Koblitz Curve命名源于数学家「Neal Koblitz」,它是一种类似的曲线,它的一些参数是精心挑选出设置的。
Koblitz Curve具备自同态的性质,可以通过优化大幅度提高计算出来效率。相比之下,Pesudo-Random Curve的对应参数是通过随机种子计算出来的,有标准的检验算法可以检测所有参数是随机种子产生而来。
本文来源:JN江南·(中国)体育-www.soucili.top
扫一扫关注我们