鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 加密解密 > >

DH 密钥交换

来源:互联网 作者:佚名 时间:2015-10-09 06:16
迪菲-赫尔曼通过公共信道 交换 一个信息,就可以创建一个可以用于在公共信道上 安全 通信的共享秘密(shared secret)。 以下解释它的过程(包括算法的数学部分): Diffie–Hellman 密钥 交换 最简单,最早提出的这个协议使用一个素数 p 的整数模n乘法群以

迪菲-赫尔曼通过公共信道交换一个信息,就可以创建一个可以用于在公共信道上安全通信的共享秘密(shared secret)。

以下解释它的过程(包括算法的数学部分):

Diffie–Hellman 密钥交换

最简单,最早提出的这个协议使用一个素数p的整数模n乘法群以及其原根g。下面展示这个算法,绿色表示非秘密信息, and红色粗体表示秘密信息:

爱丽丝
秘密 非秘密 计算
  p, g  
a    
    ga mod p
   
  (gb mod p)amod p  
 
 
 
 
\rightarrow
\leftarrow
=
鲍伯
计算 非秘密 秘密
  p, g  
    b
   
gbmod p    
  (ga mod p)bmod p  
  1. 爱丽丝与鲍伯协定使用 p=23以及base g=5.
  2. 爱丽丝选择一个秘密整数a=6, 计算A = ga modp并发送给鲍伯。
    • A = 56 mod 23 = 8.
  3. 鲍伯选择一个秘密整数b=15, 计算B = gb mod p并发送给爱丽丝。
    • B = 515 mod 23 = 19.
  4. 爱丽丝计算s = B a mod p
    • 196 mod 23 = 2.
  5. 鲍伯计算s = A b mod p
    • 815 mod 23 = 2.

爱丽丝和鲍伯最终都得到了同样的值,因为在mod pgab 和 gba相等。 注意ab 和 gab = gba mod p 是秘密的。 其他所有的值 – pgga mod p, 以及 gb mod p – 都可以在公共信道上传递。 一旦爱丽丝和鲍伯得出了公共秘密,他们就可以把它用作对称密钥,以进行双方的加密通讯,因为这个密钥只有他们才能得到。 当然,为了使这个例子变得安全,必须使用非常大的ab 以及 p, 否则可以实验所有gab mod 23 的可能取值(总共有最多22个这样的值, 就算ab很大也无济于事)。 如果 p 是一个至少 300 位的质数,并且ab至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从gpga mod p 中计算出 a。这个问题就是著名的离散对数问题。注意g则不需要很大, 并且在一般的实践中通常是2或者5。

以下是一个更为一般的描述:

  1. 爱丽丝和鲍伯写上一个有限循环群 G 和它的一个生成元生成元 g。 (这通常在协议开始很久以前就已经规定好;g是公开的,并可以被所有的攻击者看到。)
  2. 爱丽丝选择一个随机自然数 a 并且将 ga mod p 发送给鲍伯。
  3. 鲍伯选择一个随机自然数 b 并且将 gb mod p 发送给爱丽丝。
  4. 爱丽丝 计算 (gb)a.
  5. 鲍伯 计算 (ga)b.

爱丽丝和鲍伯就同时协商出群元素gab,他可以被用作共享秘密。(gb)a 和(ga)b因为群是乘法交换的。 (见幂.)


身份验证

在最初的描述中,迪菲-赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因此它很容易受到中间人攻击。 一个中间人在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和Alice另一次和Bob,就能够成功的向Alice假装自己是Bob,反之亦然。而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。

有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。当Alice和Bob共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名,也可以像MQV那样签名gagb;STS以及IPsec协议的IKE组件已经成为了Internet协议的一部分;当Alice和Bob共享一个口令时,他们还可以从迪菲-赫尔曼算法使用口令认证密钥协商,类似于ITU-T的建议X.1035。这已经被用作了G.hn的家庭网络标准。

网友评论
<