密码学应用基础 · kp-007

非对称加密与密钥交换:RSA 与 Diffie-Hellman

核心 约 20 分钟 状态:reviewed #密码学#RSA#DH#密钥交换#前向保密

一句话定义

非对称加密使用一对数学关联的密钥——公钥公开、私钥保密,解决"双方从未见过面如何建立共享秘密"的问题;其两大代表是 RSA(安全性基于大整数分解难度)与 Diffie-Hellman(基于离散对数难度),现代协议主要用后者做密钥交换。

为什么重要

对称加密有一个先天死结:双方必须先共享密钥,而分发密钥本身又需要加密。非对称密码学打破了这个死结,是 TLS、SSH、代码签名、端到端加密等一切"不安全信道上建立可信通信"的数学基座;理解它才能理解 TLS 握手(kp-018)与 PKI 信任链(kp-009)为什么如此设计。

前置知识

kp-006(对称加密):非对称体系为对称会话密钥做分发与协商。

核心概念

  • RSA 密钥对:选大素数 p、q,n=p·q,公钥为 (n, e),私钥 d 满足 e·d ≡ 1 (mod φ(n));加密 c = m^e mod n,解密 m = c^d mod n。由 n 反推 p、q(大数分解)在计算上不可行。
  • Diffie-Hellman(DH):双方交换 g^a mod p 与 g^b mod p,各自算出共享秘密 g^(ab) mod p;窃听者拿到两个公开值却难以反解 a、b(离散对数难题)。
  • 临时密钥与前向保密(PFS/FS):每次会话用临时(ephemeral)DH 密钥,长期私钥日后泄露也不会解密历史流量——记作 DHE/ECDHE。
  • 混合加密:非对称只用于认证与协商对称会话密钥,大流量仍由 AES 等对称算法处理(性能差三个数量级)。
  • 椭圆曲线版本(ECDH/ECDSA):以更短密钥达到同等安全强度(256 位 ECC ≈ 3072 位 RSA),是现代默认。

公式、模型或图示

text
RSA:  c = m^e mod n      m = c^d mod n      e·d ≡ 1 (mod φ(n))
DH:   双方公开 A=g^a mod p, B=g^b mod p
      各自计算 K = B^a = A^b = g^(ab) mod p
      窃听者只见 g, p, A, B —— 求 K 需解离散对数
混合: 非对称(认证+协商) ──▶ 对称会话密钥 ──▶ AES-GCM(流量)

原理与机制

两个数学难题支撑起整个公钥体系:大数分解(RSA)与离散对数(DH)。它们的共同性质是"正向易、反向难"的单向陷门结构。工程上的关键洞察是分工:RSA 加密慢且直接加密大数据有结构风险,因此现实协议中 RSA 主要退化为签名用途,密钥交换让位给(EC)DHE——原因正是前向保密:静态 RSA 密钥交换没有 FS,一旦服务器私钥泄露,历史抓包全部可解。这也是 TLS 1.3 直接删除静态 RSA 密钥交换的原因(见 kp-018)。量子计算对上述难题构成理论威胁,"先存后解"(harvest now, decrypt later)促使行业推进后量子密码迁移,当前共识是尽快把密钥交换升级到混合模式(经典 + 后量子)。

实例或案例

  • SSH 密钥登录:客户端持私钥、服务器存公钥,认证由签名完成,避免口令在网络传输。
  • TLS 1.3 握手:客户端在首条消息即带上 ECDHE 公钥参数,1-RTT 完成协商,全部会话具备前向保密。
  • 端到端加密消息应用:为每个设备维护身份密钥与临时密钥,服务器只转发密文,无法解密内容。

直观类比

非对称密钥像挂在门口的透明信箱:任何人都能从投递口(公钥)塞信进去,只有屋主钥匙(私钥)能开箱取信。DH 密钥交换则像两人隔空调一种只有彼此能调出的颜料:各自公布一半配方(A、B),混合后的颜色(K)旁观者调不出来。

常见误区

  • "非对称更安全所以全用非对称":算法没有绝对强弱之分,性能差三个数量级,正确分工是各司其职。
  • RSA 公钥可以直接加密任意数据:实际应只加密小数据或仅做签名;大数据走混合加密。
  • 忽视前向保密:静态密钥交换在私钥泄露后连历史通信一并沦陷;选协议配置时认准 (EC)DHE。

与其他知识点的关系

  • kp-009(数字签名与 PKI):RSA/ECDSA 的签名形态与公钥的真实性由证书体系背书。
  • kp-018(TLS 原理与配置加固):本课机制在 TLS 握手中的完整落地。

自测题

  1. 为什么现代 TLS 用 ECDHE 而不是静态 RSA 做密钥交换?要点:前向保密——临时密钥使长期私钥泄露不影响历史会话;TLS 1.3 已移除静态 RSA 交换。
  2. 写出 DH 中双方各自计算共享密钥的等式并说明窃听者为何不能直接得到它。要点:B^a = A^b = g^(ab) mod p;窃听者只有 g、p、A、B,求 a 或 b 需解离散对数。
  3. 混合加密中非对称与对称各自承担什么?为什么?要点:非对称负责认证与会话密钥协商(解决分发),对称负责大流量加密(性能高三个数量级)。

延伸阅读

《Applied Cryptography》(Bruce Schneier):公钥密码学思想与协议构造的经典综述。