3. PQC算法家族总览

好,咱们进入正题。PQC 不是只有一个算法,而是一群算法。它们分属五个家族,每个家族的数学原理完全不同。我常说,这就像武林里的五大门派——招式路数不一样,但目标都是扛住量子计算机的攻击。

这五个家族分别是:基于格的密码、基于编码的密码、多变量密码、基于哈希的签名、基于同源的密码。下面我一个一个拆开讲。

一句话总结:格密码是当前综合实力最强的“全能选手”;编码密码和哈希签名历史悠久、安全性保守;多变量和同源密码各有绝活,但成熟度稍低。
PQC 五大家族全景图 后量子密码 (PQC) 基于格的密码 Lattice-based 基于编码的密码 Code-based 多变量密码 Multivariate 基于哈希的签名 Hash-based 基于同源的密码 Isogeny-based 📌 当前 NIST 标准化进度 • 格密码:KEM/签名均已选定 • 编码密码:Classic McEliece 进入第4轮

3.1 基于格的密码:当前 PQC 的“头号选手”

格密码是目前最受关注的 PQC 家族。NIST 第一批选定的四个算法里,有三个是格密码。为什么?因为它在安全性、性能、密钥尺寸三者之间取得了最好的平衡。

格密码的安全性基于格上的困难问题,比如最短向量问题(SVP)和学习带错误问题(LWE)。说白了,就是在高维空间里找一个最短的向量——听起来简单,但维度一高,经典计算机和量子计算机都很难解。

我个人习惯把格密码分成两类:

  • 基于 LWE/MLWE 的密码:比如 Kyber(KEM)和 Dilithium(签名)。密钥和密文尺寸适中,性能优秀。
  • 基于 NTRU 的密码:比如 NTRU 和 Falcon。NTRU 的数学结构更紧凑,Falcon 的签名尺寸非常小。
我的经验:如果你只能选一个家族做迁移,我建议优先考虑格密码。我在一个 IoT 项目里试过 Kyber-512,在 ARM Cortex-M4 上跑密钥封装只需要不到 2 毫秒。性能完全够用。

3.2 基于编码的密码:老牌劲旅,密钥偏大

编码密码的历史比 RSA 还早。它基于线性码的译码问题——给你一个加了错误的码字,恢复出原始消息。经典计算机上很难,量子计算机上同样很难。

最著名的代表是 Classic McEliece。这个算法从 1978 年就有了,安全性极其保守,至今没有被攻破过。但它的公钥非常大——McEliece 在 128 位安全级别下,公钥大约 1 MB。相比之下,Kyber 的公钥只有 800 字节。

嗯,这里要注意:编码密码的密钥尺寸是它的硬伤。我在一个云存储项目中评估过 McEliece,密钥分发成了瓶颈。但如果你做的是长期文档签名或固件签名,公钥大一点不是问题,安全性才是第一位的。

算法 类型 公钥尺寸 密文/签名尺寸 特点
Classic McEliece KEM ~1 MB ~128 字节 安全性最保守,密钥极大
BIKE KEM ~1 KB ~128 字节 密钥较小,基于 QC-MDPC 码
HQC KEM ~2 KB ~256 字节 结构简单,安全性分析较充分

3.3 多变量密码:签名快,但密钥大

多变量密码的安全性基于求解多元二次方程组的困难性。你想想看,给出一堆二次方程,让你找出一组解——这在数学上被证明是 NP-完全的。

多变量密码最大的优点是签名速度极快,非常适合资源受限的签名场景。但它的公钥和私钥都很大,而且大部分方案没有 KEM 功能,只能做签名。

代表算法是 Rainbow(彩虹签名)。Rainbow 的签名速度比 Dilithium 快好几倍,但公钥大约 150 KB,私钥更大。我曾经在评估一个车载 V2X 签名方案时考虑过 Rainbow,签名速度确实惊艳,但密钥存储成了问题——车载 ECU 的闪存有限。

注意:2022 年,Rainbow 的原始版本被攻破,NIST 将其从标准化候选名单中移除。目前多变量密码家族在 NIST 进程中处于不利地位。如果你考虑使用多变量密码,建议等待更成熟的标准。

3.4 基于哈希的签名:只做签名,但安全性极强

基于哈希的签名,说白了就是只用哈希函数来构造签名方案。它的安全性完全依赖于哈希函数的抗碰撞性——只要 SHA-2 或 SHA-3 不被攻破,它就是安全的。

这个家族的代表是 SPHINCS+。SPHINCS+ 是无状态的哈希签名方案,不需要维护状态。它的签名尺寸比较大(约 8-16 KB),但安全性非常保守。

哈希签名有一个重要限制:它只能做签名,不能做加密或密钥封装。所以它适合作为签名专用方案,比如代码签名、固件签名、证书签名。

我记得有一次帮客户做 PKI 迁移评估,他们担心格密码万一被攻破怎么办。我建议他们在根 CA 层使用 SPHINCS+ 做交叉签名——这样即使格密码出问题,根信任锚还是安全的。

3.5 基于同源的密码:数学优雅,但性能是短板

基于同源的密码是 PQC 家族里最年轻的一个。它基于椭圆曲线之间的同源映射——说白了,就是在不同的椭圆曲线之间建立一种特殊的映射关系。这个问题的困难性在于:给你两条曲线,找到它们之间的同源映射非常困难。

代表算法是 SIKE(基于同源的密钥封装)。SIKE 的密钥尺寸非常小(公钥约 300 字节),但计算速度很慢——比 Kyber 慢一到两个数量级。

不过,2022 年 SIKE 被攻破了。一个数学攻击找到了同源映射的捷径,SIKE 的安全性被大幅削弱。目前基于同源的密码家族处于调整期,新的方案正在设计中。

我的看法:同源密码的数学很美,但工程化还需要时间。如果你追求前沿,可以关注 SIKE 的后续改进方案;如果你要做实际迁移,建议先选格密码或编码密码。

3.6 五大家族对比:一张表看懂

最后,我整理了一张对比表。你选型的时候可以直接参考。

家族 功能 密钥尺寸 性能 成熟度 推荐场景
格密码 KEM + 签名 小-中 快 高(NIST 已选) 通用场景,首选
编码密码 KEM 大 中 高(历史悠久) 长期安全、文档签名
多变量密码 签名 大 快 中(Rainbow 被攻破) 待观望
哈希签名 签名 中-大 中 高(安全性保守) 根信任锚、代码签名
同源密码 KEM 小 慢 低(SIKE 被攻破) 前沿研究