3. NIST PQC标准算法选型对比与适用场景判断

选型先看约束:两类需求对应两族算法

企业做PQC选型时,最容易犯的错误是“挑一个最强的算法全局替换”。实际上,密钥封装(KEM)和数字签名是两类完全不同的密码学需求,NIST标准化的算法族也分别对应:ML-KEM(FIPS 203)用于密钥建立,ML-DSA(FIPS 204)与SLH-DSA(FIPS 205)用于签名。选型的第一步不是比性能,而是先把业务需求映射到正确的算法族,再在族内比较尺寸、性能与安全假设。

下面这张图把三类标准算法的关键工程属性放在同一坐标系中对比,并标出它们各自最适合落位的企业场景。图中尺寸数据为NIST标准中对应安全级别的公开参数(ML-KEM-768、ML-DSA-65、SLH-DSA-SHA2-128s),用于选型判断而非实测。

企业公钥需求 → 算法族映射 需求A:密钥封装 / 密钥交换 TLS握手、VPN、会话密钥协商 需求B:数字签名 / 身份认证 证书链、代码签名、固件验签 ML-KEM(FIPS 203) 安全假设:MLWE(模格) 代表参数:ML-KEM-768 公钥:1184 B 密文:1088 B 共享密钥:32 B 性能:快,适合高频握手 适用:TLS 1.3混合密钥交换、 IPsec VPN、内部服务间加密 注意:密文较大,需评估MTU/分片 不适用:需要长期离线验证的 签名场景(它不是签名算法) ML-DSA(FIPS 204) 安全假设:MLWE + MSIS(模格) 代表参数:ML-DSA-65 公钥:1952 B 签名:3309 B 性能:较快,签名/验签均衡 签名尺寸约为ECDSA的数十倍 适用:TLS证书链、代码签名、 设备身份、内部API鉴权 注意:证书体积膨胀,需测握手开销 不适用:极低带宽/存储受限的 固件验签(签名过大) SLH-DSA(FIPS 205) 安全假设:仅依赖哈希函数 代表参数:SLH-DSA-SHA2-128s 公钥:32 B 签名:7856 B 性能:签名慢,验签也偏慢 安全假设最保守,无格假设 适用:根CA、固件根信任、 长期归档签名、高保障场景 注意:签名大且慢,不宜高频调用 不适用:高并发在线验签、 低延迟交易签名 选型判断顺序(先排除,再优选) ① 是密钥建立还是签名? 决定算法族,不可混用 ② 带宽/存储是否受限? 受限则排除SLH-DSA签名 ③ 是否要求最保守假设? 是→SLH-DSA,否→ML-DSA ④ 混合部署过渡 经典+PQC并行

把参数放进业务约束里比较

单看“公钥1184字节”没有意义,必须换算成业务影响。下表把三类算法放到企业常见场景的约束条件下,给出可操作的判断依据。表中尺寸为NIST标准公开参数,性能描述为相对定性判断,实际数值需在目标硬件上实测。

对比维度 ML-KEM-768 ML-DSA-65 SLH-DSA-SHA2-128s
用途 密钥封装 数字签名 数字签名
安全假设 模格MLWE 模格MLWE+MSIS 仅哈希函数
公钥尺寸 1184 B 1952 B 32 B
密文/签名尺寸 密文1088 B 签名3309 B 签名7856 B
握手/验签开销 低,适合高频 中,证书链膨胀明显 高,签名慢
典型企业落位 TLS/VPN会话密钥 终端证书、代码签名 根CA、固件根信任
主要风险点 报文变大触发分片 证书体积与兼容性 吞吐与延迟不达标

一个可直接套用的选型判断示例

假设某企业有三类待改造对象,按上面的判断顺序逐一落位:

  • 对外Web服务的TLS 1.3握手:属于密钥建立,选ML-KEM-768,并与X25519做混合密钥交换,兼顾兼容性与抗量子性。需重点验证握手报文增大后是否触发中间设备分片问题。
  • 内部服务间mTLS的终端证书:属于签名,选ML-DSA-65。需评估证书链从ECDSA切换到ML-DSA后,单次握手的证书传输字节增量,以及旧客户端是否支持新签名算法。
  • 设备固件根信任与长期归档签名:属于签名,且要求安全假设最保守、调用频率低,选SLH-DSA。签名体积大、速度慢在此场景可接受,因为验签发生在启动或归档校验等低频路径。
选型结论应写成“算法+参数集+落位系统+验证指标”四元组,例如“ML-KEM-768 / 对外TLS握手 / 握手成功率≥99.9%、P95握手延迟增量≤15ms”,而不是只写算法名。参数集(如-768、-65、-128s)直接决定尺寸与安全级别,不能省略。
不要用“ML-KEM更小所以全面替换ML-DSA”这类跨族比较做决策。KEM与签名不可互换;SLH-DSA公钥虽只有32字节,但签名高达7856字节,把它用于高频在线验签会直接拖垮吞吐。选型必须先在需求族内收敛,再比较参数集。

选型交付物:算法选型对照表

把上述判断固化成一张可填写的对照表,作为后续改造任务的输入。字段只保留选型真正需要的项,避免引入无关管理字段。

业务对象 密码需求 候选算法/参数集 关键约束 验证指标 结论
对外Web TLS握手 密钥建立 ML-KEM-768 + X25519 中间设备分片、客户端兼容 握手成功率、P95延迟增量 混合部署
内部mTLS终端证书 签名 ML-DSA-65 证书链体积、旧客户端支持 证书验证通过率、握手字节增量 替换并灰度
固件根信任/归档签名 签名 SLH-DSA-SHA2-128s 低频调用、最保守假设 验签耗时、签名存储占用 采用

填完这张表,选型任务即闭环:每个业务对象都有明确的算法族归属、参数集、约束条件和可验证指标,后续的部署验证与兼容性测试可以直接以此为输入展开。