假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。
1) Alice生成随机整数a,计算A=a*G。 #生成Alice公钥
2) Bob生成随机整数b,计算B=b*G。 #生产Bob公钥
3) Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。
由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。
4) Bob将B传递给Alice。同理,B的传递可以公开。
5) Bob收到Alice传递的A,计算Q =b*A #Bob通过自己的私钥和Alice的公钥得到对称密钥Q
6) Alice收到Bob传递的B,计算Q`=a*B #Alice通过自己的私钥和Bob的公钥得到对称密钥Q'
Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q' (交换律和结合律),即双方得到一致的密钥Q。
目前Openssl里面的ECC算法的套件支持是ECDSA/ECDH。在国密的SSL套件中,可以使用ECDSA/ECC(密钥加密传输),ECDSA/ECDH(密钥磋商)两种套件
登陆部分,在协商秘钥过程中,比如0825 0836中,发给服务端自己的公钥,让服务端用自己的公钥教秘,然后收到消息后,用自己的私钥解密。
上一篇 正则整理文本内IP端口工具
下一篇 小学平面几何面积计算器