Skip to content

第4章:公钥加密与密钥交换

公钥与私钥

公钥密码允许加密者或验证者只持公开信息,秘密操作由私钥完成。它解决密钥分发中的部分问题,但公钥属于谁仍需认证。

安全假设应区分:离散对数要求从 gag^a 恢复 aa;CDH 要求从 ga,gbg^a,g^b 计算 gabg^{ab};DDH 要求判断第三个群元素是否是 gabg^{ab}。某个群上的这些问题不能不加条件地视为等价。

Diffie–Hellman

在合适的循环群中,双方交换 gag^agbg^b,分别计算 (gb)a(g^b)^a(ga)b(g^a)^b,得到相同群元素。再通过带上下文的密钥派生函数生成会话密钥。

若没有身份认证,中间人可分别与双方交换自己的公钥材料,建立两条独立会话。因此裸 DH 抵抗某些被动窃听,不自动抵抗主动冒充。

ElGamal 的结构

私钥为 xx,公钥 h=gxh=g^x。对群中消息 mm,随机取 rr,输出

(c1,c2)=(gr,mhr).(c_1,c_2)=(g^r,mh^r).

解密计算 c2/c1x=mc_2/c_1^x=m。在适当群和 DDH 假设下可以证明 CPA 安全,但攻击者把 c2c_2 乘上 uu,解密结果也乘上 uu,所以原始构造具有可塑性,不能据此声称 CCA 安全。

RSA 与混合加密

RSA 选取 N=pqN=pq,指数满足 ed1(modλ(N))ed\equiv1\pmod{\lambda(N)}。其代数关系支持陷门置换,但直接计算 c=memodNc=m^e\bmod N 是确定性的,还具有乘法结构,不能作为安全消息加密方案直接使用。

实践中用经过分析的编码与协议。混合加密先封装一个随机密钥,再用 AEAD 加密大消息。公钥层解决密钥建立,对称层高效处理数据;两层的关联、身份和上下文仍要纳入分析。

练习

  1. 写出中间人对裸 DH 的两次独立交换,说明双方各自算出了什么。
  2. 手算 ElGamal 正确性,并展示乘法篡改。
  3. 为什么 RSA 数学运算可逆不等于教科书 RSA 满足 CPA 安全?

上次更新: