Week 28 复习 — 密码学数学速查
整合 Day 181-186 知识图谱:群论 → 有限域 → 椭圆曲线 → pairing → 困难问题
日期: 2026-11-04 方向: 密码学数学 阶段: Phase 4 - 密码学数学基础 (Day 181-194) 标签: #密码学 #数学速查 #群论 #有限域 #椭圆曲线 #pairing
今日目标
| 类型 | 内容 |
|---|---|
| 学习 | 整合 Day 181-186 知识图谱:群论 → 有限域 → 椭圆曲线 → pairing → 困难问题 |
| 实操 | 整理一页"密码学数学速查表";自测 30 道概念题 |
| 产出 | math_cheatsheet.md — 单页速查 + 知识图谱 |
一、知识图谱(数学到协议的链路)
群论 (Day 181)
├─ 循环群、生成元、阶
├─ Lagrange / Fermat / Euler 定理
└─ 子群 / 陪集
↓
有限域 (Day 182)
├─ F_p (素域)
├─ F_{p^n} (扩域, 不可约多项式)
└─ Frobenius 自同构 x↦x^p
↓
椭圆曲线 (Day 183)
├─ Weierstrass: y² = x³ + ax + b
├─ 点加法 / 标量乘法 / 无穷远点
└─ Hasse: |#E - (p+1)| ≤ 2√p
↓
主流曲线对比 (Day 184)
├─ secp256k1, Curve25519: 无 pairing, 128-bit
├─ BN254: pairing, ~100-bit (deprecated)
└─ BLS12-381: pairing, 128-bit (主流)
↓
双线性配对 (Day 185)
├─ e: G1 × G2 → GT, e(aP, bQ) = e(P,Q)^{ab}
├─ Tate / Weil / Optimal Ate
└─ Miller loop O(log r) + final exp
↓
困难问题 (Day 186)
├─ DLP / CDH / DDH / BDH / SXDH
├─ Pollard rho O(√n) / NFS L_p(1/3)
└─ Shor 量子破 → PQC
↓
应用层
├─ ECDSA, Schnorr, EdDSA → 签名
├─ ECDH → 密钥交换
├─ BLS → 聚合签名 (Eth2)
├─ KZG → 多项式承诺 (Plonk, EIP-4844)
└─ Groth16 → SNARK
二、定理速查表
| # | 定理 | 内容 | 用途 |
|---|---|---|---|
| 1 | Lagrange | $H \le G \Rightarrow |H| \mid |G|$ | $\text{ord}(a) \mid n$ |
| 2 | Fermat 小 | $a^{p-1} \equiv 1 \pmod p$ | 素性测试 |
| 3 | Euler | $a^{\varphi(n)} \equiv 1 \pmod n$, $\gcd(a,n)=1$ | RSA 解密 |
| 4 | CRT | $\mathbb{Z}/mn \cong \mathbb{Z}/m \times \mathbb{Z}/n$, $\gcd(m,n)=1$ | RSA 加速 |
| 5 | Galois | 有限域阶 = 素数幂,同构唯一 | $\mathbb{F}_q$ 存在性 |
| 6 | Cyclic group | $\mathbb{F}_q^*$ 是循环群 | 选生成元 |
| 7 | Hasse | $|#E(\mathbb{F}_p) - (p+1)| \le 2\sqrt p$ | EC 点数估计 |
| 8 | Schoof | $#E$ 多项式时间可计 | 选曲线必备 |
| 9 | MOV | $E$ 嵌入 $\mathbb{F}_{p^k}^*$ via pairing | 攻击小 $k$ 曲线 |
| 10 | Bezout | $\gcd(a,b) = ax+by$ | 模逆 |
三、群速查
| 群 | 运算 | 阶 | 用途 |
|---|---|---|---|
| $(\mathbb{Z}/n, +)$ | 加 | $n$ | 标量空间 |
| $(\mathbb{Z}/p)^*$ | 乘 | $p-1$ | DH (legacy) |
| $(\mathbb{Z}/N)^*, N=pq$ | 乘 | $\varphi(N)$ | RSA |
| $E(\mathbb{F}_p)$ | 点加 | $\sim p$ | ECC |
| $\mathbb{G}_1, \mathbb{G}_2 \subset E$ | 点加 | $r$ (素) | BLS, KZG |
| $\mathbb{G}T \subset \mathbb{F}{p^k}^*$ | 乘 | $r$ | pairing 输出 |
四、椭圆曲线公式速查
y² = x³ + a·x + b (Weierstrass)
加: P + Q = R, P=(x1,y1), Q=(x2,y2)
λ = (y2-y1)/(x2-x1) if P ≠ Q
λ = (3x1²+a)/(2y1) if P = Q (doubling)
x3 = λ² - x1 - x2
y3 = λ(x1 - x3) - y1
特殊:
P + (-P) = O (无穷远点)
-P = (x, -y)
P + O = P
标量乘 kP: double-and-add, O(log k)
R = O
for bit in bits(k) MSB→LSB:
R = 2R
if bit: R = R + P
五、Pairing 公式速查
双线性: e(aP, bQ) = e(P, Q)^{ab}
非退化: e(g1, g2) ≠ 1
可计算: Miller loop O(log r) + final exp
Tate: e_T(P, Q) = f_{r,P}(Q)^{(p^k-1)/r}
类型:
Type I (G1 = G2): DDH 容易
Type II (G2 → G1 hom): 中间
Type III (G1, G2 不同): SXDH (DDH 在两边都难) ← 主流
应用:
BLS sig: e(σ, G2) = e(H(m), pk)
KZG: e(π, [τ-z]_2) = e(C - [y]_1, G2)
Groth16: e(A,B) = e(α,β) e(L,γ) e(C,δ)
六、攻击速查
| 攻击 | 复杂度 | 适用 |
|---|---|---|
| BSGS | $\sqrt n$ 时空 | 任何 |
| Pollard rho | $\sqrt n$ 时, $O(1)$ 空 | 任何 |
| Pohlig-Hellman | $\sum \sqrt{p_i}$ | smooth $n$ |
| Index calculus | $L_p(1/2)$ | $\mathbb{F}_p^*$ |
| GNFS | $L_p(1/3)$ | $\mathbb{F}_p^*$, RSA |
| Tower NFS | $L_{p^k}(1/3)$ | pairing $\mathbb{F}_{p^k}^*$ |
| MOV | poly | EC 小 $k$ |
| Smart | poly | trace-1 EC |
| Shor (量子) | poly | DLP, IF |
L_q(α, c) := exp(c (log q)^α (log log q)^{1-α})
L_q(1/3) ≪ L_q(1/2) ≪ L_q(1)=q
↑ NFS ↑ index ↑ rho
七、安全等级速查(NIST)
| Sec bit | RSA mod | DH $p$ | ECC $n$ | Hash | AES |
|---|---|---|---|---|---|
| 80 | 1024 | 1024 | 160 | SHA-1 (broken) | - |
| 112 | 2048 | 2048 | 224 | SHA-224 | - |
| 128 | 3072 | 3072 | 256 | SHA-256 | AES-128 |
| 192 | 7680 | 7680 | 384 | SHA-384 | AES-192 |
| 256 | 15360 | 15360 | 512 | SHA-512 | AES-256 |
八、曲线对比速查
| 曲线 | $p$ bit | $n$ bit | $h$ | $k$ | sec | pairing | 用途 |
|---|---|---|---|---|---|---|---|
| secp256k1 | 256 | 256 | 1 | huge | 128 | ✗ | Bitcoin/EVM |
| Ed25519 | 255 | 253 | 8 | huge | 128 | ✗ | TLS, Signal |
| BN254 | 254 | 254 | 1 | 12 | ~100 | ✓ | Old Eth ZK |
| BLS12-381 | 381 | 255 | $\approx 2^{76}$ | 12 | 128 | ✓ | Eth2, Zcash |
| BLS12-377 | 377 | 253 | $\approx 2^{125}$ | 12 | 128 | ✓ | Aleo, Celo |
九、协议 → 数学映射
| 协议 | 群/域 | 假设 |
|---|---|---|
| Bitcoin ECDSA | secp256k1 | ECDLP |
| Eth2 BLS | BLS12-381, $\mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T$ | co-CDH (Type III) |
| TLS 1.3 X25519 | Curve25519 | CDH |
| TLS 1.3 ECDHE-ECDSA | secp256r1 | CDH+ECDLP |
| Zcash Sapling | BLS12-381 | q-strong-DH (KZG) |
| KZG (EIP-4844) | BLS12-381 | q-SDH |
| Plonk | BLS12-381 | KoE + q-SDH |
| RSA-OAEP | $\mathbb{Z}/N\mathbb{Z}$ | RSA |
| Kyber (PQ-KEM) | 格 | LWE / MLWE |
| Dilithium (PQ-sig) | 格 | SIS / MLWE |
十、概念自测(30 题,闭卷)
- 群的四条公理是?
- 写出 Lagrange 定理。
- $\varphi(12) = ?$
- 为什么 $(\mathbb{Z}/12)^*$ 不是循环群?
- Fermat 小定理 vs Euler 定理区别?
- 6 元有限域存在吗?为什么?
- 写 $\mathbb{F}_4$ 的 4 个元素。
- Frobenius 自同构是什么?
- secp256k1 的 $p, a, b$ 是?
- Hasse 定理给出什么界?
- EC 点加法 doubling 公式?
- 无穷远点 $\mathcal{O}$ 的几何意义?
- ECDSA 签名公式?
- 比较 secp256k1 vs Curve25519。
- 嵌入度的定义?
- 为什么 $k=12$ 是 sweet spot?
- BLS12-381 与 BN254 的优劣?
- Pairing 的双线性是什么?
- Type I/II/III pairing 的区别?
- Miller loop 复杂度?
- Final exponentiation 的作用?
- BLS 签名验证公式?
- KZG 验证公式?
- DLP / CDH / DDH 的强弱?
- Pollard rho 复杂度?
- NFS 复杂度记号 $L_p(1/3)$ 是什么?
- Shor 算法破什么?
- 后量子密码基于什么困难问题?
- RSA-2048 ≈ ECC-?
- small subgroup attack 怎么发生?怎么防?
答案:复习 Day 181-186。每题应能在 30 秒内答出关键点。
十一、Bitcoin 安全的"一页数学"
目标:能否用 A4 纸说服别人 Bitcoin 私钥安全?
1. 群:secp256k1 上 EC 点群 $G = \langle G_0 \rangle$,$|G| = n \approx 2^{256}$,$n$ 大素数。
2. 困难问题:ECDLP — 给 $G_0, P = kG_0$,求 $k$。
3. 通用攻击:Pollard rho,复杂度 $\sqrt n \approx 2^{128}$ 群操作。
4. 特殊攻击免疫:
- Index calculus:不存在(EC 无 factor base)
- MOV:嵌入度 $\sim 2^{255}$,不可约简
- Smart anomalous:$#E \ne p$
- Pohlig-Hellman:$n$ 素数
5. 量子威胁:Shor 多项式破,但需 ~$10^7$ 逻辑量子比特,目前 ~$10^3$ 物理。
6. 实现攻击:
- 侧信道:用 Montgomery ladder + RFC 6979 nonce
- 故障注入:硬件防护
7. 估算:$2^{128}$ ops × $10^{-12}$ s/op = $3 \times 10^{19}$ 秒 ≈ $10^{12}$ 年。即使银河级算力($10^{20}$ ops/s)仍需 $10^9$ 年。
结论:Bitcoin 私钥(256-bit, 选自 $[1, n)$)在经典计算下安全到宇宙年龄结束。
十二、面试题(综合)
Q1: 现场推导:为什么 Schnorr 签名比 ECDSA 简洁?
答:
- ECDSA:$s = k^{-1}(H(m) + rd)$,验证用模逆 + EC scalar mul
- Schnorr:$s = k + H(R || m) \cdot d$,验证 $sG = R + H(R||m) \cdot pk$
- Schnorr 线性于密钥 $\Rightarrow$ 可聚合(MuSig);ECDSA 因模逆不可线性聚合
- Schnorr 安全证明严格(在 ROM 下基于 DLP);ECDSA 证明依赖 GGM
- BIP-340 在比特币 Taproot 引入 Schnorr 是大升级
Q2: 为什么 KZG 需要 trusted setup?
答:KZG 承诺 $C = [p(\tau)]_1 = p(\tau) G_1$,需要预先生成 ${G_1, [\tau]_1, [\tau^2]_1, \dots, [\tau^d]_1, G_2, [\tau]_2}$。$\tau$ 是 toxic waste,泄露则任何人能伪造证明。MPC ceremony(Powers of Tau)让多人协作生成,只要有一人诚实丢弃份额,整体安全。
Q3: 解释 BLS 聚合签名的安全证明思路。
答:
- 单签名安全:在 random oracle 模型 + co-CDH 假设下,BLS 安全归约到 co-CDH(给 $g_1^a, g_2$ 求 $g_2^a$)
- 聚合:$\sigma = \sum \sigma_i$,验证 $e(\sigma, g_2) = \prod e(H(m_i), pk_i)$
- Rogue key attack:恶意 $pk' = pk^* - \sum_{i\ne *} pk_i$ 让聚合证明任意消息
- 修复:proof-of-possession(每个 pk 注册时附自签名)或 BLS-MuSig 风格 weight
Q4: 用 5 行解释为什么 secp256k1 选 $a=0$。
答:(1) Doubling 公式 $\lambda = 3x^2/(2y)$ 少一个加法;(2) Koblitz 曲线性质,有 endomorphism $\phi(x,y) = (\beta x, y), \beta^3 = 1$;(3) GLV 分解让标量乘 25% 加速;(4) 点压缩简化;(5) 历史选择,已固化在比特币。
Q5: 在量子时代 Bitcoin 应该怎么升级?
答:
- 签名:用 PQC 签名替换 ECDSA。候选:SPHINCS+(hash-based, 大)、Dilithium(lattice, 中)、Falcon(lattice, 高效但浮点)
- 过渡方案:Hybrid 签名(同时 ECDSA + PQC,兼容性 + 安全双保)
- 存款 vs 转账:签名只在花费时暴露公钥,所以 P2PKH 地址在量子破解后仍安全(只要私钥未用过);但用过的地址 (P2PK) 暴露 pubkey,量子可破
- 实施:BIP soft fork 加 PQC opcode,钱包逐步迁移
十三、明日预告
Day 188: 数论基础 — 模运算、欧拉定理、CRT、二次剩余、Miller-Rabin 素性测试。这些是上面所有数学的"地基",今天复习已用到,明天系统化。
核心问题:如何在 1 秒内判定一个 1024-bit 数是否素数?
参考文献:
- 复习 Day 181-186 的全部参考。
- Galbraith, Mathematics of Public Key Cryptography, Ch. 1-14.
- NIST SP 800-57: Recommendation for Key Management.