2. 抗量子密码算法基础与协议集成方式
要理解抗量子通信协议的互操作性测试,首先必须把“算法接口”和“协议集成”这两层分开看。NIST 后量子密码标准化产出的不是单一算法,而是一组按用途划分的原语:用于密钥封装的 ML-KEM(FIPS 203)、用于数字签名的 ML-DSA(FIPS 204)与 SLH-DSA(FIPS 205),以及作为备用哈希签名路线的 FN-DSA 等。它们各自有明确的输入输出结构、密钥与密文/签名长度、随机性来源和安全假设,这些接口特征直接决定了它们能否被塞进 TLS、IPsec、SSH 现有的握手框架中,以及塞进去之后会在哪里产生互操作分歧。
三类算法的接口特征差异
ML-KEM 是基于模格上 MLWE 问题的密钥封装机制,接口是“封装/解封装”而非“加密/解密”:发送方用接收方公钥生成共享密钥和密文,接收方用私钥解封装恢复同一共享密钥。它内部包含密钥生成、封装、解封装三个确定性流程,并带有隐式拒绝(implicit rejection)机制——解封装失败时不报错,而是输出一个伪随机的共享密钥,从而抵抗选择密文攻击。这一点对协议集成很关键:协议层不能指望通过“解封装失败”来判定对端是否发来了伪造密文。
ML-DSA 是基于模格的全新签名方案,签名与验签接口接近传统 ECDSA/RSA 的形态,但公钥、私钥和签名尺寸显著更大,且签名过程依赖拒绝采样,同一消息在不同随机数下可能产生不同签名(非确定性),验签则是确定性的。SLH-DSA 是 SPHINCS+ 的标准化版本,安全性仅依赖哈希函数,属于无状态哈希签名,签名尺寸更大、签名速度较慢,但安全假设最保守,适合作为高价值长期签名或算法多样性备份。
下表给出典型参数集下的量级对比(示例值,用于建立尺寸直觉,具体以对应 FIPS 文档为准):
| 算法(参数集) | 公钥 | 私钥 | 密文/签名 | 接口语义 |
|---|---|---|---|---|
| ML-KEM-768 | 约 1184 B | 约 2400 B | 密文约 1088 B | 封装/解封装 |
| ML-DSA-65 | 约 1952 B | 约 4032 B | 签名约 3309 B | 签名/验签 |
| SLH-DSA-SHA2-128s | 约 32 B | 约 64 B | 签名约 7856 B | 签名/验签 |
尺寸差异不是细节,而是互操作的第一道门槛。TLS 的 Certificate 消息、IPsec 的 IKEv2 载荷、SSH 的密钥交换与公钥认证报文都有长度字段和分片约束,一个数 KB 的签名或公钥可能触发报文分片、MTU 溢出或实现对最大长度的硬编码限制。
在 TLS、IPsec、SSH 中的集成模式
TLS 1.3 的集成最成熟,主要有两条路径。其一是“混合密钥交换”:在 supported_groups 扩展中新增混合组(如 X25519MLKEM768),客户端与服务器各自发送传统 ECDH 份额与 ML-KEM 封装/公钥份额,最终共享密钥由两路秘密拼接后经 HKDF 导出。这样即使 ML-KEM 被攻破,传统 ECDH 仍提供保护,反之亦然,是当前过渡期的主流做法。其二是“后量子认证”:用 ML-DSA 证书替代或并列于 ECDSA 证书,通过 signature_algorithms 扩展协商。互操作影响点集中在:混合组的命名与编码是否一致、ClientHello 尺寸膨胀是否超过服务器接受上限、证书链总长度是否触发对端限制。
IPsec/IKEv2 的集成依赖新的密钥交换方法编号与通知载荷。IKE_SA_INIT 中双方交换 KEi/KEr 载荷,混合模式需要把 ML-KEM 公钥与密文按约定顺序拼接,并保证双方对“哪一段是传统份额、哪一段是 PQC 份额”的理解一致。由于 IKEv2 报文受 UDP 封装和 MTU 影响更明显,大公钥容易导致分片,实践中常配合 IKEv2 分片(fragmentation)或调整 MTU。SSH 的集成则体现在 kex_algorithms 与 host key algorithms 两个协商列表:混合 KEX 方法名(如 mlkem768x25519-sha256)需要双方精确匹配,主机密钥算法则要新增 ssh-ml-dsa 一类标识,并处理公钥认证报文中更大的签名块。
互操作影响点的实际表现与处理
第一类是标识与编码不一致。混合组、签名算法、KEX 方法都靠字符串或编号协商,任何一方把“mlkem768x25519”写成“x25519mlkem768”,协商就会静默失败或回退到传统算法。测试时应抓取握手报文,逐字段核对 supported_groups、signature_algorithms、kex_algorithms 的实际取值,而不是只看最终是否握手成功。
第二类是尺寸引发的链路问题。以 TLS 为例,客户端若同时发送 X25519 份额与 ML-KEM-768 公钥,ClientHello 可能从数百字节膨胀到 1.5 KB 以上;若服务器证书链再叠加 ML-DSA 证书,Certificate 消息可达数 KB。在 MTU 1500 的链路上,这会触发 TCP 分段或 QUIC 的包数增加,某些老旧中间设备或实现的最大报文限制会直接拒绝。处理方式包括启用分片、控制证书链长度、优先选择尺寸较小的参数集。
第三类是语义差异。ML-KEM 的隐式拒绝意味着“解封装不报错但密钥不对”,协议层若把解封装成功当作身份验证依据就会出错;ML-DSA 的非确定性签名意味着同一消息多次签名结果不同,测试脚本不能用“签名逐字节相等”作为通过判据,而应改用验签通过与否判断。
综合来看,抗量子算法进入通信协议不是简单替换,而是要在标识协商、报文尺寸、失败语义、随机性假设四个维度同时对齐。理解 ML-KEM、ML-DSA、SLH-DSA 的接口特征,正是为了在 TLS、IPsec、SSH 的集成点上预判这些分歧,并据此设计有针对性的互操作测试用例。