Lec 5Diffie–Hellman 密钥交换与公钥加密
Lec 5 Diffie–Hellman 密钥交换与公钥加密
MIT 6.5610 · Lecture 5 · 关键词:公钥革命、离散对数、DH 密钥交换、CDH/DDH 假设、ElGamal、IND-CPA、前向保密 说明:本课原版讲义未检索到,以与本课一致的标准处理撰写(Diffie–Hellman 1976、ElGamal 1985)。
TL;DR
- Diffie–Hellman 在离散对数群上让双方从公开值导出同一秘密;CDH/DDH 分别形式化“算不出”与“看不出”共享值的假设。
- 裸 DH 不认证身份,主动攻击者可分别与两端协商密钥;实际协议必须把临时公钥与证书、签名或预共享身份绑定。
- ElGamal 由 DH 思想得到随机化公钥加密并可达 IND-CPA,但密文具有可塑性;工程上通常用 KEM/DEM 混合加密并追求前向安全。
0. 一句话动机
对称加密要求双方预先共享密钥——但素未谋面的两方如何在公开信道上协商出共享秘密?1976 年 Diffie–Hellman 给出答案,开启**公钥密码(public-key cryptography)**时代。
🕯️ 历史:公钥思想其实更早由英国 GCHQ 的 Cocks/Williamson(1969–1974)秘密发明,数十年后才解密。
1. 群与离散对数(Group & Discrete Log)
工作在循环群 ,阶为素数 (典型实例: 的素数阶子群,或椭圆曲线群)。
定义
离散对数问题(Discrete Log, DL) 给定 ,求 。在合适的群中被认为计算上困难。
🔎 指数运算用快速幂(平方-乘)在 次群运算内完成,但反过来求指数(DL)没有已知高效经典算法。这种"正向易、反向难"的单向性是公钥密码的引擎。
2. Diffie–Hellman 密钥交换
公开 :
- Alice 选私钥 ,发 ;
- Bob 选私钥 ,发 ;
- 双方各算共享秘密 。
窃听者看到 ,要算 。
定义
计算性 DH(CDH):给定 ,计算 困难。 判定性 DH(DDH):区分 与 ( 随机)困难。
⚠️ 关系:(越往右假设越强/越易被破)。DDH 在某些群(如 全群)不成立(勒让德符号泄露),故需用素数阶子群。 ⚠️ 中间人攻击:裸 DH 无认证,主动攻击者可分别与双方协商,需配合签名/证书(认证 DH)。 🔎 前向保密(forward secrecy):每次会话用临时私钥并在协商后丢弃,长期密钥日后泄露也无法解密历史会话——TLS 的 DHE/ECDHE 模式即此。
3. ElGamal 公钥加密
把 DH 变成加密(Taher Elgamal 1985),消息 :
定理
ElGamal PKE
- KeyGen:私钥 ,公钥 。
- Enc:选临时 ,输出 。
- Dec:。 :::
直觉: 是一次性 DH 共享秘密,充当群上的一次性掩码乘到 上;每条消息用新鲜 (否则掩码复用,类似 OTP 复用泄露)。
🔎 ElGamal 的 IND-CPA 安全 等价于 DDH:密文 与 不可区分,正是 DDH。
4. 公钥加密的安全定义(IND-CPA)
PKE 语法:,, 公开, 私有。
IND-CPA 游戏:敌手得 ,选 (等长),挑战者回 ,敌手猜 。优势可忽略即安全。
🔎 公钥设定下加密必须随机化:因为人人持有 ,可自由加密任意明文比对——确定性 PKE 必然不 IND-CPA(这与 L2 对称设定下"必须随机化"同源,但这里更强制)。 ⚠️ 实战中混合加密(hybrid / KEM-DEM):用公钥封装一个对称会话密钥,再用对称 AEAD 加密大消息——兼顾公钥的便利与对称的效率。
5. Diffie–Hellman 与公钥加密小结
- 公钥密码解决"无预共享密钥的陌生双方协商"问题。
- DH 协商 ;安全建立在 CDH/DDH(蕴含于 DL 困难)。
- ElGamal = "DH 共享秘密作群上一次性掩码",IND-CPA ⟺ DDH。
- PKE 必须随机化;实战用混合加密 + 认证(防中间人)+ 临时密钥(前向保密)。
- ⚠️ DL/因子分解类假设会被 Shor 算法在量子计算机上攻破 → 引出后量子密码(L6–L7)。
我的理解
未经认证的 Diffie–Hellman 只能抵抗被动窃听,无法抵抗主动中间人;密钥交换必须绑定身份与会话上下文。