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在第四轮遴选中将其作为备选,主要用于对公钥体积不敏感的场景。此外还有多变量密码、同源密码等方向,部分因安全性或性能原因未进入首批标准。
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 KB | TLS 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并做好签名队列。编码密码公钥过大,通常不用于逐连接握手,而适合作为长期备选或特定封闭系统。
实施中要盯住的关键点
第一,确认算法标识与OID。证书中PQC公钥算法需要新的对象标识符,CA软件、OCSP/CRL解析器、HSM固件都要支持,否则会出现“证书能签但验不过”的问题。第二,评估尺寸对协议的影响:大签名会触发TLS握手消息分片,需验证负载均衡、WAF与旧客户端的行为。第三,关注状态与随机性:ML-KEM解封装失败应走恒定时间路径,避免成为侧信道入口;哈希签名虽无状态,但Merkle树参数配置错误会直接削弱安全等级。第四,建立密码敏捷性:把算法选择做成可配置项,而非硬编码,为后续标准更新留出空间。
总体而言,格密码承担高频签名与密钥交换的主力,哈希签名守住长周期信任锚,编码密码作为特定场景备选。理解这三者的结构差异与NIST等级含义,才能在证书体系改造中做出尺寸、性能与安全三者平衡的工程决策。