type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 28, 2023 10:42 AM
Parent item
领域
DH 算法又称“Diffie–Hellman 算法”,它可以做到“通讯双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥”, 即通讯双方事先不需要有共享的秘密。而且,使用该算法协商密码,即使协商过程中被别人全程偷窥(比如“网络嗅探”),偷窥者也无法知道最终协商得出的密钥结果。
Diffie-Hellman密钥交换算法流程如图所示:
按照图中的流程,假如x要向y发送消息,如果采用上面的算法,那么需要如下几个步骤:
- 生成两个共享的质数和,并将这两个数在Alice和Bob中共享。
- 是一个非常大的质数
- 是的生成元(生成元的乘方结果和中的数字是一一对应的)。
- Alice生成一个随机数,这个随机数只能Alice知道。是一个中的一个整数。
- Bob生成一个随机数,这个随机数只能Bob知道。是一个中的一个整数。
- Alice将的结果发给Bob,这个结果不用保密。
- Bob将的结果发给Alice,这个结果不用保密。
- Alice使用步骤5的结果和随机数计算最终的共享密钥: 。
- Bob使用步骤4的结果和随机数计算最终的共享密钥: 。
其中第六步和第七步计算出来的最终的密钥是一样的。
在该算法中涉及到了离散对数问题,要根据暴露在外部的变量,,和 这4个变量来生成最终的是非常困难的。
因此,我们可以相信Diffie-Hellman算法是非常安全的。但是Diffie-Hellman算法有其自身的缺点:此算法不支持认证,虽然可以抵抗偷窥但是无法抵抗篡改,无法对抗中间人攻击,因此,一般此算法会配合其余的签名算法搭配使用,比如RSA、DSA算法。