椭圆曲线加密算法 ECC(Ellipse Curve Cryptography)

ECC 是根据 ECDLP即椭圆曲线上的离散对数问题构造的一套加密规则,在椭圆曲线 加密算法 中采用160bits的 密钥 可与1024bits密钥的RSA算法的安全性相当。且随着模数的增大,它们之间安全性的差距猛烈增大,目前比特币的加密算法所使用的椭圆曲线遵循secp256k1标准,使用的模p=2^256-2^32-2^9-2^8-2^7-2^6-2^4-1

正题:
对于椭圆函数曲线
y^2=x^3+ax+b
椭圆曲线加密算法 ECC(Ellipse Curve Cryptography)_第1张图片
在这里定义一种加法
图中的P+Q=R
当没有第三个点与椭圆曲线相交时,P+Q=0 记作无穷远点


解代数方程
直线经过点P Q 斜率 s=(yP-yQ)(xP-xQ)
xR=s^2-(xP+xQ)
yR=s(xP-xR)-yP

特殊情况
椭圆曲线加密算法 ECC(Ellipse Curve Cryptography)_第2张图片
(1) P=Q P+P=R=2P
s=(3xP^2+a)/2yP
=> xR=s^2-2xP
yR=s(xP-xR)-yP
(2) P+Q=0 xP=xQ
(3) P+P=0 xP=0

存在n 使得nP=0


椭圆曲线加密算法的原理
已知点G 求 kG 很简单 ,反之 已知kG求G 却很难,所以私钥为k公钥为kG
由于椭圆曲线是连续的, 并不适合在计算机中用来加密,所以这里我们只取整数,把椭圆曲线变成离散的点,在这里定义一个有限域
GF(p) 指定某个质数p,由 0,1,2,…, p-2,p-1个元素组成的整数集合中定义的加减乘除运算。

离散的椭圆曲线
椭圆曲线加密算法 ECC(Ellipse Curve Cryptography)_第3张图片
举例
在椭圆曲线 y^2=x^3+2x+2在有限域GF(17)上
E:y^2=x^3+2x+2 (mod17)
G=(5,1)
椭圆曲线加密算法 ECC(Ellipse Curve Cryptography)_第4张图片

所以2G=(6,3)
依此类推,当n=19时 19G=0 19次一个循环
定义一个h

表示 椭圆曲线上所有点的个数m与n相除的商的整数部分
这里我们就将这条椭圆曲线描述为T=(p,a,b,G,n,h) p为质数(mod p运算), G为基点,n为点G的阶


ECC加密算法举例

1,A选定一条椭圆曲线E ,假定为E29(4,20),基点G(13,23),n=37
2,选择私钥k 1
3, A将E,K,G传给B
4,B将消息M加密成C,C为一个点对,产生一个随机数r ,设r=6(r
C={C1,C2}={rG,M+rK}
C1=rG=6G=(5,7)
C2=M+rK=(3,28)+(27,27)=(6,12)
5,B传给A 密文C,A解密 M=C2-kC1=(6,12)-(27,27)=(3,28)

ECC签名算法举例(ECDSA)
1,选择随机数r,计算点rG(x,y)
2 ,h为消息M的hash ,s=(h+kx)/r
3, B将消息M,签名{rG,s}发送给A
4,A计算 hG/s+xK/s 与 rG 比较,相等即验证成功

你可能感兴趣的:(椭圆曲线加密算法 ECC(Ellipse Curve Cryptography))