10. 公钥密码体制
- 定义Diffie-Hellman密钥交换:基于离散对数,保证安全交换密钥的算法。
- 流程:
- 产生私钥
- 通过离散对数计算公钥
- 交换公钥
- 计算共享密钥
- 理解中间人攻击:敌手拦截并获得数字共享的信息。
- 概述ElGamal密码系统:
- A生成密钥对 {}。
- B加密消息为 。
- A恢复明文: 。
- 理解椭圆曲线算术:三次方程,ECC基于计算
- 使用非对称密码生成伪随机数的两种技术:哈希函数、伪随机数生成器。
10.1 Diffie-Hellman 密钥交换
算法有效性依赖于计算离散对数的困难性。(基于 ( ))
算法目的:安全地交换密钥。(算法仅限于交换密钥)
算法流程:
- Alice 随机选择整数==作为私钥并计算公钥== 。(p 为素数, g 为 p 的本源根)
- Bob随机选择== 作为私钥并计算公钥==
- Alice和Bob互换公钥。
- 两人分别计算共享密钥
由于缺少数字签名或证书,该算法不能抵抗中间人攻击。
10.2 中间人攻击
敌手拦截并获得数字共享的信息。(窃听)
在Diffie-Hellman中,敌手可以通过自己生成两个密钥 和
10.3 ELGamal 密码体制
基于离散对数的公钥体制,用于数字签名。
算法流程:
- 用户A生成密钥对:(q 为素数, 为 q 的本原根)。
- 随机生成
- 计算 。
- 私钥为 ,公钥为 { }。
- B通过A的公钥加密消息M(长消息作为一系列分组发送):
- 选择任意整数 。
- 计算一次密钥。
- 将 M 加密为整数对 。
- A 恢复明文:
- 恢复密钥:。
- 计算M = 。
安全性基于离散对数计算困难问题。
敌手需要计算公钥和一次密钥,进行两次离散对数的计算。
10.4 椭圆曲线算术
椭圆曲线由三次方程描述。
椭圆曲线加密流程:考虑方程 。( 且 )(基于算 )
- A的密钥生成:
- 选择私钥:(n 为 椭圆曲线的阶)
- 计算公钥:
- B的密钥生成:
- 选择私钥:(n 为 椭圆曲线的阶)
- 计算公钥:
- 计算秘密钥 K:
- B :
- A:
- A 选择 k 加密消息发送给 B:
- 密文
{B} * P_{A}$
- A:
- A 选择 k 加密消息发送给 B:
- 密文