您当前的位置: 首页 > 

mutourend

暂无认证

  • 1浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

secp256k1&secp224k1椭圆曲线

mutourend 发布时间:2019-10-03 18:11:28 ,浏览量:1

1. 有限域内的椭圆曲线 1.1 椭圆曲线直观图形

实数域内的椭圆曲线 y 2 = x 3 + 7 y^2=x^3+7 y2=x3+7的展示如下: 在这里插入图片描述 有限域内的椭圆曲线 y 2 = x 3 + 7 y^2=x^3+7 y2=x3+7的展示如下(为有限域内离散的点): 在这里插入图片描述

1.2 椭圆曲线上的点运算规则

根据《Elliptic Curves Number Theory And Cryptography 2n.pdf》书中2.2节The Group Law有,对于Weierstrass Equation形式表示的椭圆曲线 y 2 = x 3 + A x + B y^2=x^3+Ax+B y2=x3+Ax+B,求曲线上两个点 P 1 = ( x 1 , y 1 ) , P 2 = ( x 2 , y 2 ) , 且 x 1 ! = x 2 P_1=(x_1,y_1),P_2=(x_2,y_2),且x_1!=x_2 P1​=(x1​,y1​),P2​=(x2​,y2​),且x1​!=x2​,则有 P 3 = P 1 + P 2 = ( x 3 , y 3 ) P_3=P_1+P_2=(x_3,y_3) P3​=P1​+P2​=(x3​,y3​): m = y 2 − y 1 x 2 − x 1 m=\frac{y_2-y_1}{x_2-x_1} m=x2​−x1​y2​−y1​​ x 3 = m 2 − x 1 − x 2 x_3=m^2-x_1-x_2 x3​=m2−x1​−x2​ y 3 = m ( x 1 − x 3 ) − y 1 y_3=m(x_1-x_3)-y_1 y3​=m(x1​−x3​)−y1​

2. secp256k1椭圆曲线定义

Bitcoin比特币使用的是 secp256k1椭圆曲线(其中的SEC代表Standards for Efficient Cryptography,256代表有限域的位数为256位),其具体参数如下:

  • 曲线方程式为: y 2 = x 3 + 7 y^2=x^3+7 y2=x3+7(相当于Weierstrass Equation表示中的 a = 0 , b = 7 a=0,b=7 a=0,b=7)
  • 有限域为: p = 2 256 − 2 32 − 977 p=2^{256}-2^{32}-977 p=2256−232−977
  • Base point为: G = ( 79 B E 667 E F 9 D C B B A C 55 A 06295 C E 870 B 07029 B F C D B 2 D C E 28 D 959 F 2815 B 16 F 81798 , 483 A D A 7726 A 3 C 4655 D A 4 F B F C 0 E 1108 A 8 F D 17 B 448 A 68554199 C 47 D 08 F F B 10 D 4 B 8 ) G= (79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8) G=(79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798,483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)
  • Order为: n = F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F E B A A E D C E 6 A F 48 A 03 B B F D 25 E 8 C D 0364141 n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 n=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

2 256 2^{256} 2256是个非常大的数,约等于 1 0 77 10^{77} 1077,而整个银河系的原子数大约有 1 0 57 10^{57} 1057个。一万亿台计算机每皮秒( 1 0 − 12 10^{-12} 10−12秒)执行一万亿次操作,持续运行一万亿年,总操作数仍将小于 1 0 56 10^{56} 1056次。 A trillion computers doing a trillion operations every picosecond ( 1 0 − 12 10^{-12} 10−12 seconds) for a trillion years is still less than 1 0 56 10^{56} 1056 operations.

P = s G P=sG P=sG,其中 s ∈ [ 0 , n ) s\in[0,n) s∈[0,n)为scalar私钥, P = ( x , y ) P=(x,y) P=(x,y)为公钥。 以 P = ( x , y ) = ( 5 C B D F 0646 E 5 D B 4 E A A 398 F 365 F 2 E A 7 A 0 E 3 D 419 B 7 E 0330 E 39 C E 92 B D D E D C A C 4 F 9 B C , 6 A E B C A 40 B A 255960 A 3178 D 6 D 861 A 54 D B A 813 D 0 B 813 F D E 7 B 5 A 5082628087264 D A ) P=(x, y) = (5CBDF0646E5DB4EAA398F365F2EA7A0E3D419B7E0330E39CE92BDDEDCAC4F9BC, 6AEBCA40BA255960A3178D6D861A54DBA813D0B813FDE7B5A5082628087264DA) P=(x,y)=(5CBDF0646E5DB4EAA398F365F2EA7A0E3D419B7E0330E39CE92BDDEDCAC4F9BC,6AEBCA40BA255960A3178D6D861A54DBA813D0B813FDE7B5A5082628087264DA)为例,在实际传输存储时,需要将P的x和y坐标序列化,有两种表示方式:

  • 无压缩方式:以“04”(1字节)为首依次拼接x坐标(32字节)和y坐标值(32字节),共需要65字节。045CBDF0646E5DB4EAA398F365F2EA7A0E3D419B7E0330E39CE92BDDEDCAC4F9BC6AEBCA40BA255960A3178D6D861A54DBA813D0B813FDE7B5A5082628087264DA
  • 压缩方式:若已知x坐标,y坐标只有两种可能——正数or负数(有限域内即为奇数or偶数),可增加标志位,若y为偶数,则以“02”开始;若y为奇数,则以“03”开始。后面紧接x坐标值即可。总共仅需33字节。025CBDF0646E5DB4EAA398F365F2EA7A0E3D419B7E0330E39CE92BDDEDCAC4F9BC
3. secp224k1椭圆曲线定义

根据《SEC 2: Recommended Elliptic Curve Domain Parameters》,有secp224k1椭圆曲线参数如下:

  • 曲线方程式为: y 2 = x 3 + 5 y^2=x^3+5 y2=x3+5(相当于Weierstrass Equation表示中的 a = 0 , b = 5 a=0,b=5 a=0,b=5)
  • 有限域为: p = 2 224 − 2 32 − 2 12 − 2 11 − 2 9 − 2 7 − 2 4 − 2 − 1 p=2^{224} − 2^{32} − 2^{12} − 2^{11} − 2^9 − 2^7 − 2^4 − 2 − 1 p=2224−232−212−211−29−27−24−2−1
  • Base point为: G = ( A 1455 B 334 D F 099 D F 30 F C 28 A 169 A 467 E 9 E 47075 A 90 F 7 E 650 E B 6 B 7 A 45 C , 7 E 089 F E D 7 F B A 344282 C A F B D 6 F 7 E 319 F 7 C 0 B 0 B D 59 E 2 C A 4 B D B 556 D 61 A 5 ) G= ( A1455B33 4DF099DF 30FC28A1 69A467E9 E47075A9 0F7E650E B6B7A45C, 7E089FED 7FBA3442 82CAFBD6 F7E319F7 C0B0BD59 E2CA4BDB 556D61A5) G=(A1455B334DF099DF30FC28A169A467E9E47075A90F7E650EB6B7A45C,7E089FED7FBA344282CAFBD6F7E319F7C0B0BD59E2CA4BDB556D61A5)
  • Order为: n = 010000000000000000000000000001 D C E 8 D 2 E C 6184 C A F 0 A 971769 F B 1 F 7 n=01 00000000 00000000 00000000 0001DCE8 D2EC6184 CAF0A971 769FB1F7 n=010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7

以下为《SEC 2: Recommended Elliptic Curve Domain Parameters》中的secp系列曲线如下: 在这里插入图片描述 在这里插入图片描述

参考资料: [1] 《The Orders of Elliptic Curves y2 = x3 + b, b ∈ F∗q》 [2] https://eng.paxos.com/blockchain-101-elliptic-curve-cryptography [3] 《SEC 2: Recommended Elliptic Curve Domain Parameters》

关注
打赏
1664532908
查看更多评论
立即登录/注册

微信扫码登录

0.0465s