3. PQC算法分类与选型
后量子密码(PQC)并不是一种单一算法,而是若干条数学困难问题路线并行发展的算法族。工程选型的第一步,不是比较“谁更安全”,而是先分清算法在协议中承担的角色:KEM 负责密钥封装与密钥交换,签名负责身份认证与完整性。角色不同,评价维度就不同。NIST 在 2022—2024 年的标准化进程中,把 Kyber(现标准名 ML-KEM,FIPS 203)和 SPHINCS+(SLH-DSA,FIPS 205)推为首批标准,Classic McEliece 与 Rainbow 则分别代表了编码类 KEM 和多变量签名两条重要但命运不同的路线。
四类算法的数学根基与工程画像
基于格的 KEM(Kyber / ML-KEM)。其安全性建立在 MLWE(Module Learning With Errors)问题上:在模 q 的多项式环中,区分带小噪声的线性方程组与随机分布是困难的。Kyber 的工程优势非常突出——公钥约 800 字节、密文约 768 字节(Kyber768 参数集),加解密在微秒到毫秒级,且天然支持 FO 变换实现 CCA 安全。它适合 TLS、SSH、VPN 等高频握手场景,是目前部署最广的 PQC 算法。
基于哈希的签名(SPHINCS+ / SLH-DSA)。它只依赖哈希函数的抗碰撞与抗原像性,属于“保守安全”路线:即使格问题被攻破,哈希签名仍可能存活。代价是签名体积大(约 8—50 KB,取决于参数集)和签名速度较慢。它适合固件签名、根证书、代码发布等“低频、高价值、长生命周期”的签名场景,而不适合每秒钟要签上万次的在线服务。
基于编码的 KEM(Classic McEliece)。安全性来自二进制 Goppa 码的译码困难问题。它的公钥极大(约 1 MB 量级),但密文很小(约 128—256 字节),且已有四十余年密码分析历史,被认为是最保守的 KEM 候选。它适合对公钥存储不敏感、但对长期安全性要求极高的场景,例如离线根密钥、卫星链路或长期归档加密。
基于多变量的签名(Rainbow 等)。安全性依赖求解有限域上多变量二次方程组的困难性。Rainbow 签名短、验签快,但 2022 年 Beullens 提出的密钥恢复攻击将其有效安全强度显著削弱,最终未被 NIST 选入标准。它提醒工程人员:多变量路线的参数评估仍在演进,选型时必须关注最新密码分析进展,不能只看论文中的理论参数。
工程选型的五个判断维度
把四类算法放进真实系统时,建议按以下维度逐项打分,而不是只看“安全位数”。
- 角色匹配:需要密钥交换就选 KEM(Kyber、Classic McEliece),需要身份认证就选签名(SPHINCS+、Rainbow)。混用角色会导致协议改造量剧增。
- 体积与带宽:Kyber 密文约 768 B,Classic McEliece 公钥约 1 MB。若系统有 MTU 限制或证书链长度约束,Classic McEliece 可能直接不可用。
- 计算开销:Kyber 加解密在毫秒级,SPHINCS+ 签名在毫秒到数十毫秒,验签更快。高频握手场景优先 Kyber,低频签名场景可接受 SPHINCS+。
- 标准化状态:Kyber 与 SPHINCS+ 已进入 FIPS 标准,Classic McEliece 仍是候选,Rainbow 已被淘汰。生产系统应优先选择已标准化算法。
- 密码分析历史:Classic McEliece 有四十余年分析历史,保守性最强;Rainbow 的教训说明多变量路线参数仍在变化,选型需跟踪最新攻击论文。
典型场景的选型建议
| 场景 | 推荐算法 | 理由 |
|---|---|---|
| TLS/SSH 握手密钥交换 | Kyber(ML-KEM) | 体积小、速度快、已标准化,可与 X25519 混合部署 |
| 固件/代码签名 | SPHINCS+(SLH-DSA) | 签名频率低,哈希安全假设保守,适合长生命周期 |
| 离线根密钥/长期归档 | Classic McEliece | 公钥大但可离线存储,安全性假设经过长期检验 |
| 在线高频签名 | 暂不选 Rainbow | 已被密钥恢复攻击削弱,应等待多变量路线新参数或改用其他签名 |
总结来看,Kyber 是当前 KEM 部署的首选,SPHINCS+ 是保守签名场景的可靠选择,Classic McEliece 适合对公钥体积不敏感的长期安全场景,而 Rainbow 则因安全性削弱暂不推荐用于新系统。选型的核心不是追求“最强算法”,而是在角色、体积、速度、标准化和安全性之间找到与业务约束匹配的平衡点。