一、后量子密码学的背景与紧迫性
二十世纪末至二十一世纪初,公钥密码学的安全基石——大整数分解问题与离散对数问题——支撑了互联网通信的绝大多数安全协议。RSA、椭圆曲线密码(ECC)以及 Diffie-Hellman 密钥交换等方案,在经典计算模型下被认为是计算上不可行的。然而,1994 年 Peter Shor 提出的量子算法从根本上动摇了这一假设:一台具有足够逻辑量子比特的容错量子计算机(Cryptographically Relevant Quantum Computer, CRQC),能够在多项式时间内分解大整数并求解离散对数,从而彻底瓦解当前主流公钥密码体系的安全性。
量子计算机的工程化进展在近年显著加速。IBM、Google、Quantinuum 等公司持续刷新量子比特数与纠错能力的记录。虽然当前的量子硬件距离破解 RSA-2048 或 ECC-256 仍有相当距离,但密码学界普遍认为”先收集、后解密”(harvest now, decrypt later)的威胁已经真实存在——攻击者今天截获的加密流量,可能在未来十至二十年内被量子计算机解密。对于需要长期保密的数据(如国家机密、医疗档案、金融记录),迁移到抗量子算法的窗口期正在迅速缩小。
美国国家安全局(NSA)于 2022 年发布的 CNSA 2.0(Commercial National Security Algorithm Suite 2.0)指南明确要求:到 2030 年,国家安全系统中的软件与固件必须全面过渡到后量子密码算法;到 2033 年,所有网络设备和操作系统均需完成迁移;到 2035 年,定制化应用和传统系统也必须完成替换。这份时间表向全球传递了一个清晰的信号——后量子迁移不是”是否”的问题,而是”何时完成”的问题。
后量子密码学(Post-Quantum Cryptography, PQC)正是在这一背景下兴起的研究领域。其核心目标是设计在经典计算机上高效运行、同时能够抵抗量子计算机攻击的密码算法。与量子密码(Quantum Cryptography,如量子密钥分发 QKD)不同,后量子密码并不依赖量子力学原理,而是基于被认为对量子计算机仍然困难的数学问题。这意味着后量子密码可以在现有的软硬件基础设施上部署,无需专用的量子信道或量子设备,因而具有更高的实用性和可扩展性。
二、NIST PQC 标准化历程
美国国家标准与技术研究院(NIST)是全球后量子密码标准化进程的核心推动者。早在 2016 年 12 月,NIST 就正式发起了后量子密码标准化竞赛(Post-Quantum Cryptography Standardization Process),向全球密码学研究者征集抗量子密码方案。这一竞赛被广泛类比为当年遴选 AES 的过程,但其复杂程度远超 AES 竞赛——因为 PQC 竞赛同时涵盖密钥封装机制(Key Encapsulation Mechanism, KEM)和数字签名(Digital Signature)两大功能类别,且候选方案来自截然不同的数学基础。
2017 年 11 月,征集期结束,NIST 共收到来自世界各地的 82 份有效提交(另有数份因格式问题被拒绝)。这些方案涵盖了格基(lattice-based)、编码基(code-based)、多变量(multivariate)、哈希基(hash-based)以及同源基(isogeny-based)等多条技术路线。2018 年 4 月,经过初步筛选,69 个方案进入第一轮评估(Round 1)。
第一轮评估持续约一年半。在此期间,全球密码学社区对候选方案进行了密集的密码分析、性能测试和安全性评估。部分方案因遭受有效攻击或存在明显的设计缺陷而被淘汰。2019 年 1 月,NIST 宣布 26 个方案进入第二轮(Round 2)。
第二轮评估进一步聚焦于方案的安全性裕度(security margin)、实现效率和算法灵活性。NIST 特别关注方案在不同硬件平台上的性能表现,包括服务器、桌面、嵌入式设备和智能卡。2020 年 7 月,NIST 从第二轮候选方案中选出 7 个进入第三轮(Round 3)的最终候选方案(finalists),另有 8 个方案列为备选方案(alternate candidates)。
第三轮的 7 个最终候选方案包括:KEM 类别的 CRYSTALS-Kyber、NTRU、SABER 和 Classic McEliece,以及签名类别的 CRYSTALS-Dilithium、FALCON 和 Rainbow。2022 年 7 月,NIST 做出了历史性的决定:选择 CRYSTALS-Kyber 作为 KEM 标准、CRYSTALS-Dilithium 和 FALCON 作为签名标准、SPHINCS+ 作为基于哈希的签名标准。与此同时,Rainbow 因在第三轮末期遭受了 Ward Beullens 的高效密钥恢复攻击而被淘汰。NTRU 和 SABER 虽然未被选中作为首批标准,但其底层的格基数学与 Kyber 密切相关。Classic McEliece 因其密钥尺寸过大被推迟至第四轮继续评估,BIKE 和 HQC 也进入了第四轮的 KEM 备选评估。
NIST 对候选方案的评估标准涵盖多个维度。安全性是首要考量,包括方案的可证明安全归约(provable security reduction)质量、底层困难问题的成熟度以及抵御已知量子和经典攻击的裕度。性能指标包括密钥生成、封装/解封装(或签名/验证)的计算开销,以及公钥、密文和签名的尺寸。此外,NIST 还考虑了算法的实现简洁性、侧信道抵抗能力、知识产权状况以及与现有协议的兼容性。
2024 年 8 月 13 日,NIST 正式发布了首批三项后量子密码标准:FIPS 203(ML-KEM,基于 CRYSTALS-Kyber)、FIPS 204(ML-DSA,基于 CRYSTALS-Dilithium)和 FIPS 205(SLH-DSA,基于 SPHINCS+)。这标志着后量子密码从学术研究正式进入工业部署阶段。
三、NIST 首批标准
NIST 首批发布的三项标准各有侧重,共同构成了后量子密码部署的基本工具箱。
FIPS 203:ML-KEM(Module-Lattice-Based Key-Encapsulation Mechanism) 是基于模格上学习误差问题(Module Learning With Errors, MLWE)的密钥封装机制,其前身为 CRYSTALS-Kyber。ML-KEM 提供三个安全级别的参数集:ML-KEM-512(对应 NIST 安全级别 1,约等效 AES-128)、ML-KEM-768(安全级别 3,约等效 AES-192)和 ML-KEM-1024(安全级别 5,约等效 AES-256)。ML-KEM 的核心优势在于其极为紧凑的密钥和密文尺寸——ML-KEM-768 的公钥仅 1184 字节、密文 1088 字节——以及极快的运算速度。在现代处理器上,ML-KEM 的封装和解封装操作通常只需数十微秒,远快于传统 RSA 和 ECC 方案。ML-KEM 的安全性基于 MLWE 问题的困难性,该问题被认为在量子计算模型下仍然是困难的,且已经过二十余年的密码分析检验。
FIPS 204:ML-DSA(Module-Lattice-Based Digital Signature Algorithm) 是基于模格上 Fiat-Shamir with Aborts 范式的数字签名算法,其前身为 CRYSTALS-Dilithium。ML-DSA 同样提供三个参数集:ML-DSA-44(安全级别 2)、ML-DSA-65(安全级别 3)和 ML-DSA-87(安全级别 5)。ML-DSA 的签名操作基于”拒绝采样”(rejection sampling)技术——签名者反复尝试生成签名,直到输出不泄露私钥信息为止。这种方法的好处是使签名分布独立于私钥,从而实现可证明安全性。ML-DSA-65 的公钥为 1952 字节、签名为 3293 字节,签名和验证速度极快,适合在 TLS 握手、代码签名和证书体系中部署。
FIPS 205:SLH-DSA(Stateless Hash-Based Digital Signature Algorithm) 是基于哈希函数的无状态数字签名算法,其前身为 SPHINCS+。SLH-DSA 的安全性仅依赖于底层哈希函数的安全性,不涉及任何格、编码或数论假设,因此被视为最保守的后量子签名方案。SLH-DSA 提供多组参数,在安全级别、签名尺寸和速度之间进行不同的权衡。例如,SLH-DSA-SHA2-128f(“f”代表快速变体)的签名约 17088 字节,速度较快但签名较大;SLH-DSA-SHA2-128s(“s”代表小签名变体)的签名约 7856 字节,但签名速度较慢。SLH-DSA 的主要优势在于其安全假设极为简单,适合作为”安全后备”(security backstop)部署在对算法多样性有要求的场景中。
四、格基密码路线
格基密码(Lattice-Based Cryptography)是当前后量子密码领域最活跃、应用最广泛的技术路线。其安全性基于格(lattice)中一系列被认为在量子计算模型下仍然困难的计算问题。
格是欧氏空间中由一组基向量的所有整系数线性组合构成的离散点集。在高维空间中,格上的许多计算问题——如最短向量问题(Shortest Vector Problem, SVP)和最近向量问题(Closest Vector Problem, CVP)——被证明是 NP 困难的或在近似意义下是困难的。Shor 算法对这些问题无效,因为格问题不具有周期性结构,无法用量子傅里叶变换加速求解。
学习误差问题(Learning With Errors, LWE)是 Oded Regev 于 2005 年提出的计算困难假设,被证明可以归约到最坏情况下的格困难问题。LWE 的直觉描述是:给定一组带有小噪声的线性方程,恢复未知向量是困难的。形式化地说,给定矩阵 A 和向量 b = As + e(其中 s 是秘密向量、e 是小噪声向量),从 (A, b) 中恢复 s 在计算上是不可行的。LWE 及其结构化变体——环上学习误差(Ring-LWE, RLWE)和模上学习误差(Module-LWE, MLWE)——构成了当前格基密码方案的核心困难假设。RLWE 和 MLWE 通过在多项式环上引入代数结构,在保持安全性的同时显著减小了密钥尺寸和提升了运算效率。
CRYSTALS-Kyber(现标准化为 ML-KEM)是格基 KEM 的代表。Kyber 基于 MLWE 问题构建,采用压缩(compression)技术减小密文尺寸,并通过 Fujisaki-Okamoto 变换将选择明文安全(CPA-secure)的公钥加密方案提升为选择密文安全(CCA-secure)的 KEM。Kyber 在第三轮竞赛中凭借优异的综合性能——紧凑的参数尺寸、极快的运算速度和充分的安全裕度——被选为唯一的 KEM 标准。
以下 Python 代码演示了 ML-KEM 三个安全级别的参数尺寸对比,以及一个基于 LWE 的玩具加密方案,帮助直观理解格基密码的核心原理。
"""
ML-KEM 参数尺寸对比 & LWE 玩具加密演示
注意:玩具示例仅用于阐释原理,不可用于真实场景。
"""
import random
# ========== 第一部分:ML-KEM 参数尺寸对比 ==========
ml_kem_params = {
"ML-KEM-512 (NIST Level 1)": {"pk": 800, "sk": 1632, "ct": 768, "ss": 32},
"ML-KEM-768 (NIST Level 3)": {"pk": 1184, "sk": 2400, "ct": 1088, "ss": 32},
"ML-KEM-1024 (NIST Level 5)": {"pk": 1568, "sk": 3168, "ct": 1568, "ss": 32},
}
print("=== ML-KEM (FIPS 203) 参数尺寸对比(字节) ===\n")
print(f"{'方案':<30} {'公钥':>6} {'私钥':>6} {'密文':>6} {'共享密钥':>8}")
print("-" * 62)
for name, sizes in ml_kem_params.items():
print(f"{name:<30} {sizes['pk']:>6} {sizes['sk']:>6} "
f"{sizes['ct']:>6} {sizes['ss']:>8}")
# 与经典方案对比
print("\n--- 与经典 ECDH (P-256) 对比 ---")
print(f"{'ECDH P-256':<30} {'32':>6} {'32':>6} {'32':>6} {'32':>8}")
print("\n可以看到 ML-KEM 的密钥和密文尺寸比经典方案大一个数量级,")
print("但在后量子 KEM 中已属非常紧凑。\n")
# ========== 第二部分:LWE 玩具加密 ==========
# 参数(极小,仅演示用;真实 ML-KEM 使用 n=256, q=3329 等)
n = 4 # 向量维度
q = 251 # 模数(素数,需足够大以容纳噪声)
def vec_add(a, b):
return [(x + y) % q for x, y in zip(a, b)]
def vec_dot(a, b):
return sum(x * y for x, y in zip(a, b)) % q
def mat_vec_mul(A, v):
return [vec_dot(row, v) for row in A]
def small_error():
"""生成小噪声(模拟离散高斯分布)"""
return random.choice([-1, 0, 1])
def keygen():
"""密钥生成:公钥 (A, b = A*s + e),私钥 s"""
A = [[random.randint(0, q - 1) for _ in range(n)] for _ in range(n)]
s = [small_error() for _ in range(n)] # 小秘密(与 ML-KEM 一致)
e = [small_error() for _ in range(n)]
b = vec_add(mat_vec_mul(A, s), e)
return (A, b), s
def encrypt(pk, bit):
"""加密单个比特 (0 或 1)"""
A, b = pk
r = [random.choice([0, 1]) for _ in range(n)]
# u = A^T * r + e1, v = b · r + e2 + bit * ⌊q/2⌋
AT = [[A[j][i] for j in range(n)] for i in range(n)]
e1 = [small_error() for _ in range(n)]
u = vec_add(mat_vec_mul(AT, r), e1)
e2 = small_error()
v = (vec_dot(b, r) + e2 + bit * (q // 2)) % q
return u, v
def decrypt(sk, ct):
"""解密:计算 v - s · u,判断更接近 0 还是 ⌊q/2⌋"""
u, v = ct
inner = vec_dot(sk, u)
plain = (v - inner) % q
return 0 if plain < q // 4 or plain > 3 * q // 4 else 1
print("=== LWE 玩具加密演示 (n={}, q={}) ===\n".format(n, q))
pk, sk = keygen()
print(f"公钥矩阵 A({n}×{n})和向量 b 已生成")
print(f"私钥 s = {sk}\n")
success = 0
trials = 20
for i in range(trials):
bit = random.randint(0, 1)
ct = encrypt(pk, bit)
dec = decrypt(sk, ct)
ok = "✓" if dec == bit else "✗"
if dec == bit:
success += 1
if i < 5:
print(f" 明文={bit}, 解密={dec} {ok}")
print(f" ... 共 {trials} 次试验")
print(f"\n解密正确率:{success}/{trials} = {success/trials:.0%}")
print("(噪声参数合理时正确率应接近 100%)")CRYSTALS-Dilithium(现标准化为 ML-DSA)是格基签名的代表。Dilithium 基于 MLWE 和模上短整数解问题(Module-SIS),采用 Fiat-Shamir with Aborts 范式构建。签名过程中,签名者生成随机掩蔽向量、计算承诺、利用哈希函数生成挑战,然后检查响应是否会泄露私钥信息。若泄露风险超过阈值则拒绝(abort)并重新采样。这种拒绝采样策略确保了签名分布与私钥的统计独立性。
NTRU 家族是格基密码中历史最悠久的分支。NTRU 加密方案早在 1996 年就由 Jeffrey Hoffstein、Jill Pipher 和 Joseph Silverman 提出,远早于 LWE 的形式化。NTRU 基于截断多项式环上的困难问题,其安全性与格中的近似 SVP 相关。虽然在第三轮竞赛中 NTRU(以 NTRU-HPS 和 NTRU-HRSS 两种变体参赛)未被选为首批标准,但其在嵌入式系统中的高效实现和长期的安全分析历史使其在特定场景中仍具有吸引力。FALCON 签名方案也属于 NTRU 家族——它基于 NTRU 格上的 GPV 框架(Gentry-Peikert-Vaikuntanathan)和快速傅里叶采样,生成极为紧凑的签名(FALCON-512 的签名仅约 666 字节),但其实现复杂度较高,对浮点精度和侧信道防护提出了更严格的要求。NIST 计划将 FALCON 作为 FIPS 206 发布。
五、编码基密码路线
编码基密码(Code-Based Cryptography)的历史可以追溯到 1978 年 Robert McEliece 提出的 McEliece 密码系统——这是最早的公钥加密方案之一,甚至早于 RSA 的广泛部署。McEliece 的核心思想是将纠错码的解码问题作为陷门:拥有私钥的人知道码的结构,可以高效解码;而攻击者面对的是一个看似随机的线性码,对其解码等价于求解 NP 困难的一般线性码译码问题。
McEliece 方案的安全性经受住了四十多年的密码分析检验,且 Shor 算法对一般线性码译码问题无效。然而,McEliece 的致命弱点在于其巨大的公钥尺寸。经典 McEliece(Classic McEliece)使用二元 Goppa 码作为底层纠错码,在 NIST 安全级别 1 下的公钥约为 261 千字节(KB),在安全级别 5 下甚至接近 1 兆字节(MB)。这使得 McEliece 在带宽受限的场景(如 TLS 握手)中难以直接部署。
Niederreiter 方案是 McEliece 的对偶形式,使用校验矩阵替代生成矩阵进行加密。两者在安全性上被证明是等价的,但 Niederreiter 的密文更为紧凑。许多现代编码基方案实际上采用了 Niederreiter 范式或其变体。
Classic McEliece 在 NIST 竞赛中一路进入第四轮。尽管其公钥尺寸限制了应用场景,但其安全性的保守程度几乎无可匹敌——底层的二元 Goppa 码译码问题经过数十年的分析仍未出现显著的算法改进。NIST 将其视为一种”保险”方案,适用于密钥可以预先分发或存储空间充裕的场景。
BIKE(Bit Flipping Key Encapsulation)和 HQC(Hamming Quasi-Cyclic)是第四轮中基于结构化码的两个 KEM 候选方案。与 Classic McEliece 不同,BIKE 和 HQC 使用准循环(quasi-cyclic)码结构来大幅压缩公钥尺寸。BIKE 基于准循环中密度奇偶校验码(QC-MDPC),利用比特翻转译码算法进行解封装;HQC 基于准循环码的随机化编码方法。两者的公钥和密文尺寸在数千字节级别,远优于 Classic McEliece,但仍大于格基方案。BIKE 和 HQC 的主要挑战在于解封装失败率(decapsulation failure rate)的精确分析——即使极低的失败概率也可能被利用构造选择密文攻击。
编码基路线的另一重要分支是基于秩度量码(rank-metric code)的方案,如 ROLLO 和 RQC。秩度量码将向量空间的秩距离替代汉明距离,提供了一种不同的困难问题来源,但目前这些方案的安全性分析尚不够成熟,未进入 NIST 竞赛的后续轮次。
六、哈希基签名路线
哈希基签名(Hash-Based Signatures)是后量子签名方案中安全假设最简单、理论基础最坚实的一类。其安全性仅依赖于底层哈希函数的抗原像性(preimage resistance)和抗碰撞性(collision resistance),不涉及任何数论或代数结构假设。
哈希基签名的起源可以追溯到 1979 年 Leslie Lamport 提出的一次性签名方案(Lamport One-Time Signature, OTS)。Lamport 方案的思想极为简洁:为消息的每一比特准备两个随机值并公开其哈希值作为公钥;签名时根据消息比特选择性地揭示对应的原像。由于哈希函数的单向性,攻击者无法伪造签名。Lamport 方案的缺点是公钥和签名尺寸过大,且每个密钥对只能安全地签名一条消息。
Ralph Merkle 于 1979 年提出了 Merkle 签名方案(Merkle Signature Scheme, MSS),利用 Merkle 哈希树将多个一次性签名密钥组织在一起,使一个根公钥可以验证多个签名。哈希树的每个叶子节点对应一个 OTS 密钥对的公钥哈希,签名时附带从叶子到根的认证路径(authentication path)。MSS 是有状态的(stateful)——签名者必须维护一个计数器以确保每个 OTS 密钥只使用一次。若同一 OTS 密钥被重复使用,安全性将被完全破坏。
XMSS(eXtended Merkle Signature Scheme)和 LMS(Leighton-Micali Signature Scheme)是两种已标准化的有状态哈希基签名方案。XMSS 由 IETF 在 RFC 8391 中标准化,LMS 由 NIST 在 SP 800-208 中推荐。两者都基于 Merkle 树结构,并引入了改进的 OTS 构造(XMSS 使用 WOTS+,LMS 使用 LM-OTS)以优化签名尺寸。有状态方案的签名紧凑且速度快,但状态管理的严格要求限制了其适用范围——在分布式系统或高并发场景中,确保 OTS 密钥不被重复使用是一项重大的工程挑战。
SPHINCS+(现标准化为 SLH-DSA/FIPS 205)是哈希基签名路线中最重要的突破——它是一种无状态(stateless)方案。SPHINCS+ 通过构建一个超级树(hypertree)结构来消除对状态的依赖:整个签名密钥空间被组织为多层 Merkle 树的嵌套结构,签名时通过消息哈希确定性地选择使用哪个叶子节点。由于签名过程是确定性的(或使用消息相关的随机化),相同的消息总是产生相同的签名,从而避免了 OTS 密钥重复使用的风险。SPHINCS+ 内部使用了三种子组件:WOTS+(Winternitz OTS)作为一次性签名、XMSS 树作为少次签名,以及 FORS(Forest of Random Subsets)作为少次签名的前端。
无状态哈希基签名的代价是签名尺寸和签名速度。SLH-DSA 的签名在 7856 到 49856 字节之间,远大于格基方案的签名。签名速度也显著慢于 ML-DSA——SLH-DSA-SHA2-128s 的签名操作可能需要数十毫秒,而 ML-DSA-65 通常在微秒级别完成。然而,SLH-DSA 的验证速度相对较快,且其安全性假设的简洁性使其成为后量子签名部署中不可或缺的”保底”选项。
有状态与无状态方案的选择取决于具体部署场景。对于能够可靠管理状态的系统(如固件签名服务器、证书颁发机构内部签名),有状态方案(XMSS/LMS)提供更紧凑的签名和更高的效率。对于无法保证状态安全性的通用场景(如 TLS 认证、代码签名),无状态方案(SLH-DSA)是更安全的选择。
七、多变量密码路线
多变量密码(Multivariate Cryptography)基于多变量二次方程组求解问题(Multivariate Quadratic Problem, MQ 问题)的困难性。给定一组在有限域上的多元二次多项式方程,求解一组满足所有方程的未知数被证明是 NP 困难的,且目前没有已知的量子算法能显著加速这一问题的求解。
多变量密码方案的一般构造遵循”中心映射加扰动”范式:选择一个具有特殊结构(从而可以高效求逆)的中心映射 F,然后通过两个秘密的可逆仿射变换 S 和 T 对其进行混淆,得到公钥 P = S ∘ F ∘ T。签名验证只需要计算多项式映射(矩阵乘法和域运算),速度极快;签名生成则需要知道 S、T 和 F 的结构以逆向求解。
Oil-Vinegar(油醋)方案是多变量签名中最经典的构造之一。其中心映射将变量分为”油变量”(oil)和”醋变量”(vinegar),利用两类变量之间的特殊二次结构实现高效求逆。Unbalanced Oil-Vinegar(UOV)方案通过增大醋变量与油变量的比例来增强安全性,是多变量签名中历史最悠久且仍被认为安全的构造之一。
Rainbow 是由 Jintai Ding 和 Dieter Schmidt 于 2005 年提出的多层 Oil-Vinegar 方案,通过引入多层结构在保持安全性的同时减小签名和公钥尺寸。Rainbow 在 NIST 竞赛中一路进入第三轮最终候选方案,被认为是多变量路线最有竞争力的代表。然而,2022 年 2 月,Ward Beullens 发表了一种针对 Rainbow 的高效密钥恢复攻击——利用 Rainbow 多层结构中的矩形 MinRank 问题的代数性质,攻击者仅需一台普通笔记本电脑和一个周末的时间就能恢复 Rainbow 的私钥。这一毁灭性攻击导致 Rainbow 被 NIST 淘汰,也给整个多变量路线带来了重大打击。
GeMSS(Great Multivariate Short Signature)是另一种进入 NIST 竞赛第二轮的多变量方案,基于 HFE(Hidden Field Equations)变体构建。GeMSS 的签名极为紧凑(仅数十字节),但公钥尺寸巨大(数百千字节至兆字节级别),签名速度也较慢,最终未能进入第三轮。
Rainbow 被攻破后,多变量路线的当前研究重新聚焦于 UOV 及其改进方案。NIST 在 2023 年发起了新一轮签名方案征集(Additional Digital Signature Schemes),UOV 的多个变体(如 MAYO、QR-UOV、TUOV、VOX 等)参与了提交。这些方案通过不同的参数优化和结构改进试图在安全性和效率之间取得更好的平衡,但多变量路线整体上仍面临公钥尺寸过大、安全性分析不够稳固等挑战。
八、同源密码路线
同源密码(Isogeny-Based Cryptography)是后量子密码五大路线中最年轻、也最戏剧性的一条。其安全性基于椭圆曲线之间的同源映射(isogeny)计算问题——给定两条同源的椭圆曲线,求连接它们的同源映射在计算上是困难的。
SIDH(Supersingular Isogeny Diffie-Hellman)由 Luca De Feo 和 David Jao 于 2011 年提出,是第一个实用化的同源密钥交换协议。SIDH 的最大优势在于其极为紧凑的公钥和密文——在所有后量子 KEM 中,SIDH/SIKE 的通信开销最小,公钥和密文各仅数百字节。SIKE(Supersingular Isogeny Key Encapsulation)是 SIDH 的 KEM 封装版本,参与了 NIST 竞赛并一路进入第四轮候选方案。
然而,2022 年 7 月,比利时鲁汶大学的 Wouter Castryck 和 Thomas Decru 发表了一篇震撼密码学界的论文,提出了对 SIDH/SIKE 的高效多项式时间攻击。Castryck-Decru 攻击利用了 SIDH 协议中公开的扭转点信息(torsion point information),结合高维阿贝尔簇的同源理论,能够在普通个人电脑上数分钟内完全恢复 SIKE 的私钥。这一攻击在密码学历史上几乎史无前例——一个已进入标准化最终阶段的候选方案被彻底攻破,且攻击方法优雅而出人意料。随后,Maino 和 Martindale、Robert 等研究者分别独立提出了类似的攻击路径,进一步巩固了 SIDH/SIKE 不安全的结论。
需要特别强调的是,Castryck-Decru 攻击的关键在于 SIDH 协议中公开的辅助扭转点信息,而非同源计算本身。如果不公开这些扭转点,一般的超奇异同源问题仍被认为是困难的。这一认识引导了同源密码后续研究的方向。
CSIDH(Commutative Supersingular Isogeny Diffie-Hellman)是另一种基于同源的密钥交换协议,使用交换群作用(commutative group action)框架,避免了公开扭转点信息。因此,CSIDH 不受 Castryck-Decru 攻击影响。然而,CSIDH 面临量子亚指数攻击(基于 Kuperberg 算法的变体)的威胁,其具体安全参数的确定仍存在争议。此外,CSIDH 的运算速度远慢于格基方案,限制了其实际部署。
SQIsign(Short Quaternion and Isogeny Signature)是同源路线中最受关注的签名方案。SQIsign 基于四元数代数(quaternion algebra)与同源映射之间的 Deuring 对应(Deuring correspondence),提供极为紧凑的签名(在 NIST 安全级别 1 下仅约 177 字节)和公钥(64 字节),是所有后量子签名方案中通信开销最小的。SQIsign 已提交至 NIST 的额外签名方案征集,其参数尺寸上的优势使其备受关注。然而,SQIsign 的签名速度较慢(约需数百毫秒至数秒),且其安全性依赖于超奇异同源问题和 Deuring 对应的计算困难性假设,这些假设的分析深度尚不及 LWE 等成熟假设。
同源密码路线在经历了 SIDH/SIKE 的挫折后,研究重心已转向不公开扭转点信息的协议设计(如基于群作用的框架)以及基于高维同源的新构造。尽管当前同源方案在性能上难以与格基方案竞争,其独特的代数结构和极紧凑的参数尺寸使其在理论研究和特定应用场景中仍具有重要价值。
九、后量子迁移策略
后量子密码的标准化只是万里长征的第一步。将整个互联网基础设施、企业系统和嵌入式设备从经典密码迁移到后量子密码,是一项规模空前的工程挑战。
混合模式(Hybrid Mode) 是当前最受推荐的迁移策略。混合模式同时使用一个经典算法(如 ECDH)和一个后量子算法(如 ML-KEM)进行密钥协商,将两者派生的密钥材料组合后用于会话加密。只要两个算法中有一个是安全的,混合方案就是安全的——这意味着即使后量子算法在未来被发现存在缺陷,系统仍然受到经典算法的保护;反之,如果量子计算机提前到来,后量子算法也能提供防护。Google 早在 2016 年就在 Chrome 中实验了 ECDH + New Hope(一种格基方案)的混合密钥交换,Cloudflare 和 Amazon Web Services 也在 2023 年开始大规模部署基于 X25519 + ML-KEM-768 的混合 TLS。IETF 已制定了多项关于混合密钥交换和混合签名的草案标准。
算法选择指南 方面,不同的应用场景对后量子算法有不同的需求。对于密钥交换和封装,ML-KEM 是首选方案,其性能和参数尺寸在绝大多数场景中都是最优的。对于数字签名,需要根据具体需求在 ML-DSA、SLH-DSA 和未来的 FALCON(FIPS 206)之间进行选择:ML-DSA 提供最佳的综合性能;SLH-DSA 提供最保守的安全假设;FALCON 提供最紧凑的签名尺寸但实现复杂。
下表汇总了各后量子密码技术路线代表方案的关键参数(均取 NIST 安全级别 3 或近似等效参数):
| 方案 | 技术路线 | 类型 | 公钥大小 | 密文/签名大小 | 封装/签名速度 | 验证/解封装速度 | 标准化状态 |
|---|---|---|---|---|---|---|---|
| ML-KEM-768 | 格基 | KEM | 1184 B | 1088 B | 极快(微秒级) | 极快(微秒级) | FIPS 203 |
| ML-DSA-65 | 格基 | 签名 | 1952 B | 3293 B | 极快(微秒级) | 极快(微秒级) | FIPS 204 |
| SLH-DSA-SHA2-192f | 哈希基 | 签名 | 48 B | 35664 B | 慢(毫秒级) | 较快(毫秒级) | FIPS 205 |
| FALCON-512 | 格基(NTRU) | 签名 | 897 B | 666 B | 快(微秒级) | 极快(微秒级) | FIPS 206(草案) |
| Classic McEliece | 编码基 | KEM | ~261 KB | 128 B | 快 | 较慢 | 第四轮候选 |
| BIKE | 编码基 | KEM | ~1541 B | ~1573 B | 较快 | 较快 | 第四轮候选 |
| HQC-192 | 编码基 | KEM | ~5499 B | ~10981 B | 较快 | 较快 | 第四轮候选 |
| UOV | 多变量 | 签名 | ~66 KB | 96 B | 快 | 极快 | 额外征集评估中 |
| SQIsign | 同源基 | 签名 | 64 B | 177 B | 慢(秒级) | 较慢 | 额外征集评估中 |
从上表可以看出,格基方案在综合性能上占据显著优势——ML-KEM 和 ML-DSA 在公钥、密文/签名尺寸和运算速度方面都远优于其他路线的方案。编码基方案(Classic McEliece)的密文极为紧凑但公钥巨大,适合密钥可预分发的场景。哈希基方案(SLH-DSA)安全假设最保守但签名尺寸较大。多变量方案(UOV)签名紧凑但公钥较大。同源方案(SQIsign)在通信尺寸上有独特优势但速度较慢。
工业部署现状 方面,后量子密码的实际部署正在迅速推进。在 TLS 协议层面,Google Chrome、Mozilla Firefox 和 Apple Safari 等主流浏览器已支持或正在测试 ML-KEM 混合密钥交换。Cloudflare 报告其全球流量中已有相当比例使用了后量子密钥交换。在消息传递领域,Signal 协议于 2023 年引入了基于 ML-KEM 的 PQXDH(Post-Quantum Extended Diffie-Hellman)协议,Apple 的 iMessage 也部署了类似的后量子保护。在证书体系方面,多家证书颁发机构(CA)正在实验支持后量子签名的 X.509 证书,但完整迁移仍面临证书链膨胀和兼容性等挑战。
在操作系统和密码库层面,OpenSSL 3.x 通过 OQS(Open Quantum Safe)项目的 provider 支持了所有 NIST 标准化的后量子算法。BoringSSL(Google 维护的 OpenSSL 分支)已在生产环境中启用了 ML-KEM 支持。微软的 SymCrypt 和 AWS 的 s2n-tls 也相继集成了后量子算法。在硬件层面,多家芯片厂商正在研究在安全芯片(如 TPM、安全元件)中实现后量子算法的硬件加速。
值得注意的是,后量子迁移并非一次性的”交换”事件,而是一个渐进的、持续数年的过程。迁移的第一步通常是在密钥交换中部署混合方案以保护前向安全性(因为”先收集、后解密”威胁主要针对加密数据)。签名的迁移可以稍后进行,因为签名的安全性主要在验证时刻有效即可。然而,对于长寿命的签名场景(如代码签名、证书签名),尽早迁移同样至关重要。
后量子密码学正处于从标准化到大规模部署的关键转折期。NIST 的首批标准为全球提供了明确的算法选择依据,而混合模式则为平稳过渡提供了工程上的安全网。五大技术路线各有千秋——格基方案以其卓越的综合性能成为主力军,编码基和哈希基方案以其成熟的安全性分析提供了必要的多样性,多变量和同源路线则在参数效率和理论深度方面持续贡献新的思想。面对量子计算时代的到来,密码学社区的共识已经清晰:迁移必须从现在开始。
十、面向工程团队的后量子迁移决策树
对于正在评估后量子迁移时机和策略的工程团队,以下决策树提供了一条结构化的决策路径。
[你的系统是否处理需要长期保密的数据?]
│
├── 是(医疗记录、政府机密、金融档案、知识产权等保密期 > 10 年)
│ │
│ └──→ 立即部署混合方案(经典 + 后量子)
│ │
│ ├── 密钥交换:优先部署 ML-KEM + ECDH 混合模式
│ │ (防御"先收集、后解密"威胁)
│ │
│ ├── 签名:评估 ML-DSA 混合签名
│ │ (长寿命签名场景如代码签名、证书签名需优先迁移)
│ │
│ └── 对称密码:确认使用 AES-256(无需紧急变更)
│
└── 否(数据保密期 < 10 年,或主要关注完整性/认证)
│
├── [你的系统是否需要密码敏捷性?]
│ │
│ ├── 否 → 现在就开始重构以支持算法可替换
│ │ (这是迁移的最大工程瓶颈)
│ │
│ └── 是 → 进入监控与规划阶段
│
└──→ 监控与规划(2025-2030)
│
├── 跟踪 NIST 标准最终版本和行业最佳实践
├── 在非生产环境中测试 ML-KEM / ML-DSA 集成
├── 评估密码库(OpenSSL 3.x / BoringSSL)的 PQC 支持成熟度
└── 制定分阶段迁移计划:密钥交换优先 → 签名次之 → 全面替换
笔者认为,“先收集、后解密”(Harvest Now, Decrypt Later)是推动立即采纳后量子密码最有说服力的论据,即使在标准尚未完全尘埃落定的今天也是如此。其逻辑极为简明:如果对手现在截获了你的加密通信,并将密文存储起来等待量子计算机成熟后解密,那么你的数据保密期限就不取决于”量子计算机什么时候出现”,而取决于”你的数据需要保密多久”。对于医疗记录(保密期可达 50 年以上)、国家安全情报、长期商业秘密等场景,威胁窗口已经打开。从工程实践来看,混合方案是一种近乎零风险的过渡策略——即使后量子算法日后被发现存在弱点,经典算法层仍提供保护;反之亦然。等待”完美标准”出台再行动的组织,可能正在以数据安全为代价换取工程便利。密码学史反复证明:迁移所需的时间总是超出预期,而威胁到来的速度总是快于预期。
一个经常被忽视的观点是,NIST 后量子竞赛揭示了密码学标准化中一个出人意料的事实:最终胜出的算法未必是数学上最优雅的,而是工程上最”无聊”的。ML-KEM(Kyber)在决赛圈中胜出,部分原因在于它的参考实现是所有候选方案中最简单、最易审计、边界情况最少的。它的模格结构足够标准化,不需要特殊的采样技巧或复杂的错误纠正机制;它的解封装流程通过 FO 变换实现了干净的”解密-重加密-比对”逻辑,几乎没有给实现者留下犯错的空间。这与 AES 在 2000 年竞赛中的胜出有着惊人的相似:Rijndael 不是当时安全余量最大的候选方案(Serpent 更保守),也不是最快的(Twofish 在某些平台上更快),但它在所有维度上都”足够好”,且实现起来最为直截了当。对密码学标准化而言,这里有一条永恒的教训——在安全性相当的候选方案之间,保守的工程选择几乎总是胜过激进的数学创新。
密码学百科系列 · 第 57 篇
← 上一篇:Shor 算法与 Grover 算法 | 系列目录 | 下一篇:格基后量子方案 →