ECCDH密钥协议原理

ECC算法和DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP很容易;给定一个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:
假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

  1. Alice生成随机整数a,计算A=a*G。

  2. Bob生成随机整数b,计算B=b*G。

  3. Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。

由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。

  1. Bob将B传递给Alice。同理,B的传递可以公开。

  2. Bob收到Alice传递的A,计算Q =b*A

  3. Alice收到Bob传递的B,计算Q`=a*B

Alice、Bob双方即得Q=bA=b(aG)=(ba)G=(ab)G=a(bG)=aB=Q’ (交换律和结合律),即双方得到一致的密钥Q。

目前Openssl里面的ECC算法的套件支持是ECDSA/ECDH。在国密的SSL套件中,可以使用ECDSA/ECC(密钥加密传输),ECDSA/ECDH(密钥磋商)两种套件

猜你喜欢

转载自blog.csdn.net/mlynb/article/details/118516643