Diffie Hellman key为什么能生成相同的共享密钥
时间: 2024-01-26 20:05:01 浏览: 135
Diffie-Hellman密钥交换协议的核心思想是基于离散对数问题,该问题在数学上非常难以解决。因此,即使攻击者截获了通信信道上的数据,也无法轻易地计算出通信双方的私钥和共享密钥。
具体地说,Diffie-Hellman密钥交换协议的过程如下:
1. 通信方A和B分别生成自己的私钥a和b,并计算出对应的公钥A和B。
2. A将自己的公钥A发送给B,B将自己的公钥B发送给A。
3. A使用自己的私钥a和B的公钥B来生成共享密钥K,即K = B^a mod p。
4. B使用自己的私钥b和A的公钥A来生成相同的共享密钥K,即K = A^b mod p。
由于离散对数问题的存在,即使攻击者截获了通信信道上的数据,也无法轻易地计算出A、B、a、b和K的值。因此,通信双方可以通过安全地交换公钥来生成相同的共享密钥,从而保证了通信的安全性。
相关问题
6.2Diffie-Hellman Key Agreement Protocol
Diffie-Hellman密钥交换协议(Diffie-Hellman Key Exchange,简称DH协议)是一种非对称加密技术,由Whitfield Diffie和Martin Hellman于1976年首次提出。该协议允许两个通信双方(通常称为Alice和Bob)在没有预先共享秘密信息的情况下,协商出一个共同的秘密密钥,这个过程在公开的网络上进行而无需第三方参与。
以下是DH协议的基本步骤:
1. **公钥分发**:双方各自生成一对密钥对,其中一个是公钥(公开的),另一个是私钥(保密的)。Alice将她的公钥发送给Bob,反之亦然。
2. **计算共享密钥**:Alice使用Bob的公钥对其选择的一个随机数进行运算,并将结果发送给Bob;同样,Bob也使用Alice的公钥对其选择的随机数进行运算。由于他们的计算基于相同的数学原理(大数素数及其乘法),他们得到了相同的临时密钥。
3. **完成密钥交换**:现在两人有了对方的临时密钥,通过传统的加密算法(如RSA或AES)用各自的私钥对这个临时密钥进行加密,得到最终的安全密钥。只有拥有正确的私钥的一方才能解密。
python diffie Hellman
Diffie-Hellman密钥交换是一种公开密钥加密的协议,用于协商两个对等方之间的共享密钥。以下是使用Python实现Diffie-Hellman密钥交换的示例代码:
```python
from random import randint
# 公共参数
p = 23
g = 5
# Alice 生成私钥
a = randint(1, p-1)
# Bob 生成私钥
b = randint(1, p-1)
# Alice 发送 g^a mod p 给 Bob
A = pow(g, a, p)
# Bob 发送 g^b mod p 给 Alice
B = pow(g, b, p)
# Alice 计算共享密钥
alice_shared_key = pow(B, a, p)
# Bob 计算共享密钥
bob_shared_key = pow(A, b, p)
# 确认共享密钥相同
assert alice_shared_key == bob_shared_key
```
在此示例中,Alice 和 Bob 通过使用相同的公共参数(p和g)和随机生成的私钥(a和b)来生成公钥(A和B)。然后,他们可以使用对方的公钥和自己的私钥来计算共享密钥。最后,他们可以确认共享密钥是否相同。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)