D-H密钥协商协议与EIGamal算法
D-H密钥协商协议
在基于对称加密进行安全通信的过程中,通信双方需要持有一个共享的密钥。只有这样,由任何一方加密的信息才能由另一方使用相同的密钥解密。但是在能够安全的通信之前,通信双方应该如何约定一个共享的密钥呢?这就是安全中的经典问题:密钥配送问题
解决密钥配送问题通常有三种方式:线下约定共享密钥、通过公钥密码体系配送共享密钥、以及Diffie-Hellman密钥交换协议
D-H密钥协商协议是基于离散对数困难问题的密钥交换协议,首先
- 由协议双方A和B先协商好大素数以及的原根,并且公开这两个值
- A取一个私钥,发送给B计算结果
- 类似的,B取一个私钥发给A计算结果
- A计算出
- B也能计算出
- A与B得到共享密钥
python实现如下:
1 | |
ElGamal算法
1 | |
密钥生成
- A从中选取一个整数
- 计算A的公钥
可以得到私钥,公钥为{},公开公钥。
加密
B使用A公开的{}给A发送消息:
- 用户B要发送消息给A,先将映射到循环群中得到
- B从中随机选择一个,计算
- B计算
- 发送密文给A
解密
A拿到B发送过来的密文之后
- 计算B使用的密钥
- 由于是在循环群内选取的,所可以计算出逆元
- 计算
python实现如下:
1 | |
D-H密钥协商协议与EIGamal算法
http://yzsandw.com/2023/05/19/D-H密钥交换协议与EIGamal算法/