2. 后量子密码算法基础

要理解后量子证书与PKI改造,先要弄清“替换的到底是什么”。PQC并非单一算法,而是一组基于不同数学困难问题的算法族。NIST自2016年启动后量子标准化进程,经过多轮公开征集、密码分析攻防与性能评估,于2022年公布首批入选算法,2024年发布FIPS 203(ML-KEM)、FIPS 204(ML-DSA)和FIPS 205(SLH-DSA)三项标准。对PKI从业者而言,关键不是记住数学证明,而是理解每类算法的结构特征、密钥与签名尺寸、适用场景与安全等级,因为这些直接决定证书体积、握手开销和系统兼容性。

三大算法族的结构差异

格密码是当前标准化主力。其安全性建立在格上困难问题(如带误差学习LWE、短整数解SIS)之上,典型代表是ML-KEM(基于CRYSTALS-Kyber,用于密钥封装)和ML-DSA(基于CRYSTALS-Dilithium,用于数字签名)。格密码的优点是密钥与密文尺寸相对可控、运算速度快,适合TLS握手等高频场景;缺点是签名和公钥仍比RSA/ECC大一个数量级。另一类Falcon(基于NTRU格)签名更短但实现复杂,对浮点与侧信道防护要求高。

哈希签名以SLH-DSA(基于SPHINCS+)为代表,安全性仅依赖哈希函数的抗碰撞性,属于“保守派”选择。它的公钥很小,但签名体积大(约数千至上万字节),签名速度慢,适合固件签名、根证书等低频高价值场景。其结构是Merkle树加一次性签名,天然具备状态无关性,便于部署。

编码密码以McEliece体制为代表,基于纠错码译码困难问题,公钥极大(数十万字节),但加密速度快、安全性历史悠久。NIST在第四轮遴选中将其作为备选,主要用于对公钥体积不敏感的场景。此外还有多变量密码、同源密码等方向,部分因安全性或性能原因未进入首批标准。

PQC算法族 → NIST标准 → PKI用途 格密码 LWE / SIS 困难问题 ML-KEM · ML-DSA · Falcon 速度快,尺寸中等偏大 哈希签名 仅依赖哈希抗碰撞性 SLH-DSA(SPHINCS+) 公钥小,签名大,速度慢 编码密码 纠错码译码困难问题 McEliece(Classic) 公钥极大,加密快 NIST 标准化(FIPS 203 / 204 / 205) 安全等级 1 / 3 / 5 ≈ AES-128 / 192 / 256 抗量子强度 2022 首批入选 · 2024 正式发布 TLS 密钥交换 ML-KEM 混合模式 证书链签名 ML-DSA 根 / 中间 CA 证书 SLH-DSA 保守签名 长周期信任锚 固件 / 代码签名 低频、高价值 可接受大签名

NIST安全等级如何理解

NIST将PQC算法按抗量子攻击强度划分为5个等级,可粗略对应AES-128/192/256的经典安全强度。等级1要求攻破难度不低于穷举AES-128密钥;等级3、5依次提高。实际选型时,等级并非越高越好:等级越高,密钥和签名尺寸通常越大。例如ML-DSA-44对应等级2、ML-DSA-65对应等级3、ML-DSA-87对应等级5。对大多数企业PKI,等级3已能满足中长期安全需求;根CA等超长生命周期对象可考虑等级5或采用SLH-DSA作为纵深防御。

需要强调的是,安全等级衡量的是“抗量子攻击的计算复杂度”,并不自动覆盖侧信道、实现缺陷或协议层攻击。因此工程上还要关注常数时间实现、随机数质量、密钥封装解封装失败处理等细节。

从参数到工程决策:一个选型示例

假设某企业要为内部TLS体系规划PQC迁移,可先建立一张对比表(以下尺寸为公开标准中的典型量级,用于教学示例,实际以所选参数集与编码为准):

算法用途公钥量级签名/密文量级典型场景
ML-KEM-768密钥封装约1.2 KB约1.1 KBTLS 1.3 混合密钥交换
ML-DSA-65签名约2 KB约3.3 KB终端实体证书、握手认证
SLH-DSA-128s签名约32 B约8 KB根CA、固件签名
Classic McEliece密钥封装约1 MB约0.2 KB公钥体积不敏感场景

据此可判断:TLS服务器证书若改用ML-DSA,证书链会从几KB膨胀到十几KB,需检查握手分片、MTU与中间件缓存;根证书若用SLH-DSA,签发频率低但单次签名耗时明显,应放在离线CA并做好签名队列。编码密码公钥过大,通常不用于逐连接握手,而适合作为长期备选或特定封闭系统。

迁移初期推荐“混合模式”:TLS密钥交换同时运行X25519与ML-KEM,签名侧可先双证书并行,待客户端生态成熟后再逐步切换。这样即使某一算法被攻破,整体仍保有经典安全性。

实施中要盯住的关键点

第一,确认算法标识与OID。证书中PQC公钥算法需要新的对象标识符,CA软件、OCSP/CRL解析器、HSM固件都要支持,否则会出现“证书能签但验不过”的问题。第二,评估尺寸对协议的影响:大签名会触发TLS握手消息分片,需验证负载均衡、WAF与旧客户端的行为。第三,关注状态与随机性:ML-KEM解封装失败应走恒定时间路径,避免成为侧信道入口;哈希签名虽无状态,但Merkle树参数配置错误会直接削弱安全等级。第四,建立密码敏捷性:把算法选择做成可配置项,而非硬编码,为后续标准更新留出空间。

总体而言,格密码承担高频签名与密钥交换的主力,哈希签名守住长周期信任锚,编码密码作为特定场景备选。理解这三者的结构差异与NIST等级含义,才能在证书体系改造中做出尺寸、性能与安全三者平衡的工程决策。