返回 Expert 笔记
Expert Day 187

Week 28 复习 — 密码学数学速查

整合 Day 181-186 知识图谱:群论 → 有限域 → 椭圆曲线 → pairing → 困难问题

2026-11-04
Phase 4 - 密码学数学基础 (Day 181-194)
密码学数学速查群论有限域椭圆曲线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

二、定理速查表

#定理内容用途
1Lagrange$H \le G \Rightarrow |H| \mid |G|$$\text{ord}(a) \mid n$
2Fermat 小$a^{p-1} \equiv 1 \pmod p$素性测试
3Euler$a^{\varphi(n)} \equiv 1 \pmod n$, $\gcd(a,n)=1$RSA 解密
4CRT$\mathbb{Z}/mn \cong \mathbb{Z}/m \times \mathbb{Z}/n$, $\gcd(m,n)=1$RSA 加速
5Galois有限域阶 = 素数幂,同构唯一$\mathbb{F}_q$ 存在性
6Cyclic group$\mathbb{F}_q^*$ 是循环群选生成元
7Hasse$|#E(\mathbb{F}_p) - (p+1)| \le 2\sqrt p$EC 点数估计
8Schoof$#E$ 多项式时间可计选曲线必备
9MOV$E$ 嵌入 $\mathbb{F}_{p^k}^*$ via pairing攻击小 $k$ 曲线
10Bezout$\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}^*$
MOVpolyEC 小 $k$
Smartpolytrace-1 EC
Shor (量子)polyDLP, 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 bitRSA modDH $p$ECC $n$HashAES
8010241024160SHA-1 (broken)-
11220482048224SHA-224-
12830723072256SHA-256AES-128
19276807680384SHA-384AES-192
2561536015360512SHA-512AES-256

八、曲线对比速查

曲线$p$ bit$n$ bit$h$$k$secpairing用途
secp256k12562561huge128Bitcoin/EVM
Ed255192552538huge128TLS, Signal
BN254254254112~100Old Eth ZK
BLS12-381381255$\approx 2^{76}$12128Eth2, Zcash
BLS12-377377253$\approx 2^{125}$12128Aleo, Celo

九、协议 → 数学映射

协议群/域假设
Bitcoin ECDSAsecp256k1ECDLP
Eth2 BLSBLS12-381, $\mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_T$co-CDH (Type III)
TLS 1.3 X25519Curve25519CDH
TLS 1.3 ECDHE-ECDSAsecp256r1CDH+ECDLP
Zcash SaplingBLS12-381q-strong-DH (KZG)
KZG (EIP-4844)BLS12-381q-SDH
PlonkBLS12-381KoE + q-SDH
RSA-OAEP$\mathbb{Z}/N\mathbb{Z}$RSA
Kyber (PQ-KEM)LWE / MLWE
Dilithium (PQ-sig)SIS / MLWE

十、概念自测(30 题,闭卷)

  1. 群的四条公理是?
  2. 写出 Lagrange 定理。
  3. $\varphi(12) = ?$
  4. 为什么 $(\mathbb{Z}/12)^*$ 不是循环群?
  5. Fermat 小定理 vs Euler 定理区别?
  6. 6 元有限域存在吗?为什么?
  7. 写 $\mathbb{F}_4$ 的 4 个元素。
  8. Frobenius 自同构是什么?
  9. secp256k1 的 $p, a, b$ 是?
  10. Hasse 定理给出什么界?
  11. EC 点加法 doubling 公式?
  12. 无穷远点 $\mathcal{O}$ 的几何意义?
  13. ECDSA 签名公式?
  14. 比较 secp256k1 vs Curve25519。
  15. 嵌入度的定义?
  16. 为什么 $k=12$ 是 sweet spot?
  17. BLS12-381 与 BN254 的优劣?
  18. Pairing 的双线性是什么?
  19. Type I/II/III pairing 的区别?
  20. Miller loop 复杂度?
  21. Final exponentiation 的作用?
  22. BLS 签名验证公式?
  23. KZG 验证公式?
  24. DLP / CDH / DDH 的强弱?
  25. Pollard rho 复杂度?
  26. NFS 复杂度记号 $L_p(1/3)$ 是什么?
  27. Shor 算法破什么?
  28. 后量子密码基于什么困难问题?
  29. RSA-2048 ≈ ECC-?
  30. 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.