目录:https://blog.csdn.net/qq_40452317/article/details/89646633
椭圆曲线生成公钥:https://blog.csdn.net/qq_40452317/article/details/90082353
椭圆曲线加密法(Elliptic Curve Cryptography)简称ECC。一种建立公开公钥加密算法,基于椭圆曲线数学。
secp256k1曲线
比特币中使用的是secp256k1曲线。一般的椭圆曲线表示位:
y^2=x^3+a*x^2+b
其中a,b为系数。当参数a=0,b=7时,得到函数
y^2=x^3+7
这个方程产生的曲线就是secp256k1曲线。
图示如下:(可以到此测试:https://www.desmos.com/calculator/0mnue7w8lk)
椭圆曲线时连续的,不适合加密,所以需要把椭圆曲线变成离散的点。把椭圆曲线定义在有限域上。
什么是有限域?
在抽象代数中,域是一种可进行加、减、乘和除运算的代数结构。是一个可以在其上进行加法、减法、乘法和除法运算而结果不会超出域的集合。如有理数集合、实数集合都是域,但整数集合不是(使用除法得到的分数或小数已超出整数集合)。如果域F只包含有限个元素,则称其为有限域。有限域中元素的个数称为有限域的阶。
给出一个有限域Fp,其中有p个元素(p是质数)0,1,2,3····p-2,p-1。
Fp加法:a+b=c(mod p)
Fp乘法:a*b=c(mod p)
Fp除法:a/b=c(mod p)
椭圆曲线运算
加法(测试:https://www.desmos.com/calculator/0mnue7w8lk)
过曲线上的点A,B画一条直线,找到与椭圆曲线的交点,交点关于x轴的对称点定义位A+B。
A,B重合时
将曲线在A点的切线与椭圆曲线的交点管于x轴的对称点定义位A+A,即2A。
正负运算
A点的关于x轴的对称点就称为-A。
无穷远点
如果将A与-A相加,过A与-A的直线平行于y轴,可以认为直线与椭圆曲线相交与无穷远点。
综上,如果给定椭圆曲线一点G,可以求出2G(G+G),3G(2G+G)····。当给出G时,已知x,求出xG并不困难,但是反之,已知xG时,求x时非常困难的。
椭圆曲线生成公钥:https://blog.csdn.net/qq_40452317/article/details/90082353