ECDH密钥交换

版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/s_lisheng/article/details/90712333

前面一篇将过DH密钥交换算法,ECDH(Elliptic Curve Diffie-Hellman)顾名思义就是ECC+DH,安全性保证由椭圆曲线离散对数难题来保证。其思想与DH一致。

椭圆曲线密码学

椭圆曲线密码学是属于非对称密码学的。其公私钥计算公式如下:

  • 私钥是一个随机数 d d ,取值范围在 1 , . . . , n 1 {1,...,n-1} ,其中 n n 是子群的阶
  • 公钥是点 H = d G H=dG G G 是子群的基点

如果我们知道私钥 d d 和椭圆曲线参数 G G ,求公钥 H H 是很容易的,但是只知道公钥 H H 和椭圆曲线参数 G G ,求解私钥 d d 是非常困难的,需要解决离散对数难题,椭圆曲线的安全性保证有赖于此。

ECDH密钥交换

ECDH工作过程如下(以Alice和Bob为例):

  1. 首先Alice和Bob需要使用同一条椭圆曲线,参数 ( p , a , b , G , n , h ) (p,a,b,G,n,h) 相同。
  2. Alice和Bob生成各自的公私钥。Ailce生成私钥 d A d_A ,公钥 H A = d A G H_A=d_AG ,Bob生成私钥 d B d_B ,公钥 H B = d B G H_B=d_BG
  3. Alice和Bob交换各自的公钥 H A H_A H B H_B
  4. Alice计算 S = d A H B S=d_AH_B ,Bob计算 S = d B H A S=d_BH_A 。可以推导出它们计算的值相同。推导过程 S = d A H B = d A d B G = d B ( d A G ) = d B H A S=d_AH_B=d_Ad_BG=d_B(d_AG)=d_BH_A

至此,Alice和Bob得到了相同的 S S ,但是第三方在知道椭圆曲线和 H A H_A H B H_B 的情况下,是无法获知 S S 的,因为要推导出 S S ,就必须知道其中一个私钥,这必须破解椭圆曲线离散对数难题,是做不到的。

应用上,一般先利用ECDH协商共享密钥,再利用共享密钥计算出对称密钥等其他需要的密钥,通信双发对数据进行对称加密安全通信。


参考文档:
The Elliptic Curve Diffie-Hellman (ECDH)
Elliptic Curve Cryptography: ECDH and ECDSA

猜你喜欢

转载自blog.csdn.net/s_lisheng/article/details/90712333