有关Bitcoin的椭圆曲线-secp256k1

简介

椭圆曲线加密法是一种基于离散对数问题的非对称(或公钥) 加密法, 可以用对椭圆曲线上的点进行加法或乘法运算来表达。在Bitcoin中使用的是secp256k1这条椭圆曲线

椭圆曲线

  • y2mod p = x2 +ax+b mod p
  • a、b满足:4a3+27b2 mod p!=0 这保证了x3+ax+b不包含重复的因子,所以该曲线就可用于生成一个群组
  • 在一个有限域Fp,素数阶p的有限域内
  • p=2256-232-29-28-27-26-24-1

椭圆曲线上的加法

P3=P1+P2
计算方法:P1和P2之间画一条线,恰好与椭圆曲线上的一点相交,记此点为:P3’=(x,y),然后再x轴做映射的:P3=(x,-y)

特殊的情况

  • P1与P2为同一点,P1和P2之间的连线为P1的切线,曲线上有且只有一个新的点与该切线相交
  • P1和P2具有相同的x值,但不同的y值,则切线会垂直,这种情况下,P3=“无穷远点”
  • 若一点是无穷远点,则与其相加不变,无穷远点类比0处理

secp256k1

y2=x3+ax+b,其中a=0且b=7,就是曲线secp256k1
G是生成元,n是G的素数阶
则任取k,Q=k*G,则k为私钥,Q为公钥

优点

  • 占用很少的带宽和存储资源,秘钥的长度很短
  • 让所有的用户都可以使用同样的操作完成域运算

小结

今天看了一些关于BrainWellets的东西,感觉还蛮有意思的,明天要把它的来龙去脉都讲清楚了,技术尽量去看吧,然后再把整个PPT从头到尾慢慢品尝。

我的主页:Stride Max Zz欢迎大家访问!

你可能感兴趣的:(椭圆曲线,算法)