DH介绍

Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。
这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。
但是注意,这个密钥交换协议 只能用于密钥的交换,而不能进行消息的加密和解密。 双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
这种秘钥交换技术的目的在于使两个用户安全的协商一个会话密钥。

DH密钥交换流程

  • 步骤1:Alice和Bob共同确定公开的大素数PPP和一个整数GGG,其中GGGPPP的原根
  • 步骤2:Alice选取一个秘密整数aaa作为私钥,然后对aaa进行幂模计算,得到公钥AAAA=Ga mod PA=G^a~\mathrm{mod}~PA=Ga mod P,然后将AAA发给Bob
  • 步骤3:和Alice一样,Bob选取一个秘密整数bbb作为私钥,然后对bbb进行幂模计算,得到公钥BBBB=Gb mod PB=G^b~\mathrm{mod}~PB=Gb mod P,然后将BBB发给Alice【A,BA, BA,B就是所谓的Diffie-Hellman公开值】
  • Alice计算密钥K1=Ba mod PK_1=B^a~\mathrm{mod}~PK1=Ba mod P
  • 和Alice一样,Bob计算密钥K2=Ab mod PK_2=A^b~\mathrm{mod}~PK2=Ab mod P
  • K1=Ba mod P=(Gb)a mod P=Gab mod P,K2=Ab mod P=(Ga)b mod P=Gab mod PK_1=B^a~\mathrm{mod}~P=(G^b)^a~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~P, K_2=A^b~\mathrm{mod}~P=(G^a)^b~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~PK1=Ba mod P=(Gb)a mod P=Gab mod P,K2=Ab mod P=(Ga)b mod P=Gab mod P,因此,K1=K2K_1=K_2K1=K2K1,K2K_1, K_2K1,K2就是所谓的共享密钥】

在这里插入图片描述

安全性分析

对于幂模运算c=be mod mc=b^e~\mathrm{mod}~mc=be mod m,只要给定b,e,mb, e, mb,e,m,求模幂的过程是非常高效的。另一方面,当mmm是大素数时,给定b,c,mb, c, mb,c,m,求指数eee的过程是很难的【称为离散对数的难题】。这种单向函数的特性使模幂运算被多次用于密码算法中。

DH通信过程可见,只有G,P,A,BG, P, A, BG,P,A,B会在传输,而a,ba, ba,b是不会传输的。同时,因为离散对数的难解,当G,PG, PG,P选的足够大时,通过A,BA, BA,B分别推算a,ba, ba,b是极其困难的。进而,破解出最终的对称密钥K也是极其困难的。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐