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 选入标准。它提醒工程人员:多变量路线的参数评估仍在演进,选型时必须关注最新密码分析进展,不能只看论文中的理论参数。

PQC 四类算法工程选型坐标 横轴:公钥/密文体积 → 纵轴:部署成熟度与标准化状态 体积 / 带宽开销 → 标准化与部署成熟度 → Kyber ML-KEM 格 · KEM 公钥~800B 密文~768B 已标准化 · 部署最广 SPHINCS+ SLH-DSA 哈希 · 签名 签名 8–50KB 已标准化 · 保守安全 McEliece 编码 · KEM 公钥~1MB 密文~200B 候选 · 长期安全 Rainbow 多变量 · 签名 签名短 · 验签快 已被密钥恢复攻击削弱 KEM 密钥封装 签名认证 编码类 多变量类

工程选型的五个判断维度

把四类算法放进真实系统时,建议按以下维度逐项打分,而不是只看“安全位数”。

  • 角色匹配:需要密钥交换就选 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已被密钥恢复攻击削弱,应等待多变量路线新参数或改用其他签名
混合部署建议:过渡期可采用“经典算法 + PQC 算法”双栈模式,例如 X25519 + Kyber768 混合密钥交换、ECDSA + SPHINCS+ 双签名。这样即使某一侧被攻破,另一侧仍能提供保护,同时便于逐步验证 PQC 实现的兼容性与性能。
选型常见误区:不要仅凭“安全位数”选型。Kyber 与 Classic McEliece 都声称高安全等级,但公钥体积相差三个数量级;SPHINCS+ 与 Rainbow 都是签名,但标准化状态和密码分析成熟度完全不同。工程选型必须结合协议约束、硬件资源、部署周期和最新密码分析进展综合判断。

总结来看,Kyber 是当前 KEM 部署的首选,SPHINCS+ 是保守签名场景的可靠选择,Classic McEliece 适合对公钥体积不敏感的长期安全场景,而 Rainbow 则因安全性削弱暂不推荐用于新系统。选型的核心不是追求“最强算法”,而是在角色、体积、速度、标准化和安全性之间找到与业务约束匹配的平衡点。