3. 后量子密码算法族与TLS适用性
后量子密码(PQC)并不是单一算法,而是一组基于不同数学困难问题的算法族。NIST 在 2024 年正式发布了三项标准:用于密钥封装的 ML-KEM(FIPS 203,源自 CRYSTALS-Kyber)、用于数字签名的 ML-DSA(FIPS 204,源自 CRYSTALS-Dilithium)和 SLH-DSA(FIPS 205,源自 SPHINCS+)。此外 Falcon 作为格基签名方案也已进入标准化轨道。理解这些算法族的数学基础、密钥与签名尺寸、运算性能,是判断它们在 TLS 1.3 握手中如何落位的前提。
格基 KEM:ML-KEM/Kyber
ML-KEM 的安全性建立在 Module-LWE(模格上的带误差学习问题)之上。它的核心操作是在多项式环上进行矩阵向量乘法并加入小误差,攻击者要从带噪的线性关系中恢复秘密向量,等价于求解高维格上的最短向量问题。ML-KEM 定义了三个参数集:ML-KEM-512、ML-KEM-768、ML-KEM-1024,分别对应 NIST 安全等级 1、3、5。
在 TLS 1.3 中,ML-KEM 用于密钥封装,替代或补充传统的 ECDHE。客户端发送公钥(封装密钥),服务端用其封装一个共享秘密并返回密文,双方各自导出会话密钥。ML-KEM 的公钥约 800~1568 字节,密文约 768~1568 字节,远大于 X25519 的 32 字节。这意味着一次完整握手可能增加数 KB 的数据量,对首包大小、分片和 MTU 敏感的场景需要特别关注。
性能方面,ML-KEM 的密钥生成、封装、解封装都很快,在主流 x86 平台上单次操作通常在几十微秒量级,明显快于同等安全强度的 ECC 密钥交换。它的主要代价不是计算,而是带宽。
哈希签名:SLH-DSA/SPHINCS+
SLH-DSA 是唯一不依赖格问题的标准算法,其安全性仅依赖哈希函数的抗碰撞性和抗原像性。它采用无状态哈希签名结构,通过多层 Merkle 树和少量一次性签名组合,生成可验证的签名。由于不依赖任何代数结构,SLH-DSA 被认为对量子攻击和经典攻击都具有很强的保守性,适合作为“后备信任锚”。
代价是尺寸和速度:SLH-DSA 公钥约 32~64 字节,但签名高达 7856~49856 字节,签名生成时间可达毫秒到数十毫秒,验证也偏慢。在 TLS 中,如果服务端证书使用 SLH-DSA 签名,Certificate 消息会显著膨胀,可能触发 TCP 分片甚至需要多个往返。因此 SLH-DSA 更适合用于根 CA、代码签名或固件签名等对尺寸不敏感、对长期安全性要求极高的场景,在 TLS 中通常作为证书链顶端的信任锚,而非叶子证书。
格基签名:ML-DSA/Dilithium 与 Falcon
ML-DSA 同样基于 Module-LWE 和 Module-SIS,但用于签名。它通过 Fiat-Shamir with Aborts 范式构造:签名者反复采样挑战多项式,直到满足范数约束。ML-DSA 提供 ML-DSA-44、ML-DSA-65、ML-DSA-87 三个参数集,公钥约 1312~2592 字节,签名约 2420~4627 字节。它的签名和验签速度都较快,是 TLS 证书签名的首选格基方案。
Falcon 基于 NTRU 格上的短向量问题,使用快速傅里叶采样和浮点运算生成紧凑签名。Falcon-512 的公钥约 897 字节,签名约 666 字节,是当前尺寸最小的后量子签名之一。但 Falcon 的实现复杂,涉及高斯采样和浮点精度控制,侧信道防护难度较高,工程落地门槛明显高于 ML-DSA。在 TLS 中,Falcon 适合对带宽极度敏感、且团队具备较强密码工程能力的场景。
算法尺寸与性能对比
下表汇总了典型参数集在 TLS 场景下的关键指标。数据为公开参考值,实际性能随平台、编译器和实现库变化,仅用于量级判断。
| 算法 | 类型 | 公钥/封装密钥 | 密文/签名 | 相对性能 | TLS 典型用途 |
|---|---|---|---|---|---|
| ML-KEM-768 | KEM | 1184 B | 1088 B | 很快 | 密钥交换 |
| ML-DSA-65 | 签名 | 1952 B | 3309 B | 快 | 证书签名 |
| Falcon-512 | 签名 | 897 B | 666 B | 中 | 紧凑证书 |
| SLH-DSA-128s | 签名 | 32 B | 7856 B | 慢 | 根 CA/信任锚 |
| X25519 | ECDH | 32 B | 32 B | 很快 | 传统密钥交换 |
| Ed25519 | 签名 | 32 B | 64 B | 很快 | 传统证书签名 |
从表中可以读出几个关键结论。第一,后量子 KEM 的尺寸膨胀主要来自公钥和密文,ML-KEM-768 比 X25519 大约 35 倍,但仍在可接受范围。第二,后量子签名的膨胀更严重,ML-DSA-65 签名约 3.3 KB,SLH-DSA 可达数十 KB,这会直接影响证书链长度和握手时延。第三,Falcon 在尺寸上有明显优势,但实现风险高。第四,SLH-DSA 的性能劣势使其不适合高频握手,但作为根证书可以接受。
面向 TLS 的选型建议
在 TLS 1.3 中,密钥交换和签名是两条独立的决策线。密钥交换侧,ML-KEM-768 是当前最成熟、性能最好的选择,建议与 X25519 组成混合密钥交换(X25519MLKEM768),既保留经典安全性,又获得后量子防护。签名侧,ML-DSA-65 适合作为叶子证书和中间 CA 的签名算法,尺寸和性能平衡较好;如果证书链带宽压力大,可在叶子证书使用 Falcon-512,但需评估实现成熟度;SLH-DSA 建议仅用于根 CA 或离线信任锚。
总结来看,后量子算法族在 TLS 中的适用性可以归纳为:ML-KEM 负责密钥交换,ML-DSA 负责签名,Falcon 作为紧凑签名备选,SLH-DSA 作为保守信任锚。选型的核心不是追求单一算法的最优,而是在安全等级、尺寸、性能和实现成熟度之间找到与业务场景匹配的组合。