1. 后量子密码性能评估工程导论

后量子密码(Post-Quantum Cryptography, PQC)算法在数学安全性上已经过多年公开分析,但“安全”并不等于“可用”。当NIST在2022—2024年间陆续确定ML-KEM(FIPS 203)、ML-DSA(FIPS 204)、SLH-DSA(FIPS 205)等标准后,工程界真正面对的问题变成了:这些算法放到TLS握手、代码签名、固件升级、VPN网关、智能卡等真实场景里,延迟、吞吐、内存、带宽、能耗是否可接受?性能评估工程就是回答这个问题的系统性方法。

课程定位:从算法论文到可交付的评估结论

本课程不是密码学理论课,也不是单纯的基准测试工具教程。它关注的是“如何把一次PQC性能评估做成可复现、可比较、可决策的工程活动”。评估对象包括三类:算法实现本身(参考实现、优化实现、硬件加速实现)、承载算法的协议与系统(TLS 1.3、SSH、IKEv2、CMS、固件签名链)、以及运行环境(x86-64、ARM Cortex-A/M、RISC-V、FPGA、安全元件)。同一算法在不同实现和不同平台上,性能可能相差一个数量级以上,因此评估必须绑定“算法+实现+平台+参数集+协议上下文”这一完整组合。

评估结论的最小可信单元 = 算法版本 + 参数集 + 实现来源与编译选项 + 硬件平台 + 协议/调用模式 + 测量方法。缺少任何一项,结论都不可直接复用。

评估对象与关键指标体系

PQC性能评估的指标不能只盯“快不快”。一个完整的指标体系至少覆盖以下维度:

  • 时间指标:密钥生成、封装/解封装、签名/验签的单次耗时,以及P50/P95/P99分位数。PQC算法耗时分布往往比RSA/ECC更分散,均值会掩盖尾延迟问题。
  • 空间指标:公钥、私钥、密文、签名的字节长度,以及运行时栈/堆峰值。ML-KEM-768公钥1184字节、密文1088字节,SLH-DSA签名可达7856字节(SLH-DSA-SHA2-128s),这些直接冲击MTU、证书链和存储预算。
  • 吞吐与并发:单位时间握手数、签名数,以及在多核、多连接下的扩展效率。
  • 资源消耗:CPU周期、指令数、缓存缺失、能耗。嵌入式场景下能耗和RAM往往比绝对速度更关键。
  • 协议级指标:握手往返次数、握手总字节数、首字节时间、连接建立成功率。
  • 稳定性与一致性:多次运行方差、不同编译器/优化等级下的行为差异、常数时间特性是否被破坏。

这些指标之间存在权衡。例如ML-KEM封装快、密文小,但ML-DSA签名体积大;SLH-DSA签名极慢但安全假设保守。评估工程的任务不是找“最快”,而是给出在给定约束下的可解释取舍。

工程化流程:一次评估如何闭环

把评估做成工程,需要固定流程而非临时跑分。典型闭环如下:明确评估问题与决策目标 → 选定算法、参数集与实现 → 搭建可复现的测量环境 → 设计测量方法与负载模型 → 采集原始数据 → 统计与归一化 → 结果判读与结论输出 → 归档以便复现。其中“测量环境”必须记录CPU型号、频率策略、编译器版本与优化选项、是否开启AVX2/NEON、操作系统与内核、是否隔离CPU核等。缺少这些元数据,数据无法跨团队比较。

测量方法上要区分微基准(microbenchmark)与系统级基准。微基准用固定输入反复调用API,适合比较实现质量;系统级基准在真实协议栈中跑握手或签名链,适合回答“能不能上线”。两者不可互相替代。采样时建议先做预热,丢弃前若干次;每项至少重复30次以上,报告中给出中位数与P95,而不是只给一个“平均耗时”。

教学示例(非实测):在x86-64、关闭频率调节、GCC -O3环境下,对某ML-KEM-768优化实现做微基准,若观察到密钥生成中位数约30–60微秒、封装约40–70微秒、解封装约50–90微秒,这属于合理量级示例,用于说明如何记录与比较,不能当作任何具体实现的实测承诺。

结果判读与常见误区

拿到数据后,第一步是检查可比性:两次测量是否在同一平台、同一编译选项、同一负载下完成。第二步是看尾延迟与方差,PQC实现中分支预测失败、缓存抖动、随机数生成都可能造成长尾。第三步是把算法指标映射回业务SLA,例如“TLS握手P95增加不超过15毫秒”“固件签名验证不超过200毫秒”。第四步是记录不确定性:哪些结论是稳健的,哪些依赖特定平台。

常见误区包括:只测均值不测分位数;把不同参数集混在一张表里比较;忽略密钥/签名体积对网络和存储的二次影响;在开启频率boost的机器上测完就下结论;以及把一次跑分当作可复现结论。评估工程的价值恰恰在于用规范流程消除这些偏差。

PQC性能评估工程:对象—指标—流程闭环 评估对象(必须绑定为完整组合) 算法与参数集 ML-KEM / ML-DSA / SLH-DSA 实现与编译选项 参考/优化/硬件加速 运行平台 x86-64 / ARM / RISC-V / FPGA 协议与调用模式 TLS / SSH / 固件签名 关键指标体系 时间 单次耗时 P50 / P95 / P99 空间 密钥/密文/签名长度 栈/堆峰值 吞吐与并发 握手数/秒 多核扩展效率 资源消耗 CPU周期/能耗 缓存缺失 协议级 握手字节数 首字节时间 工程化流程闭环 明确决策问题 SLA与约束 选定对象组合 算法+实现+平台 搭建测量环境 记录元数据 采集与统计 中位数/P95/方差 判读与归档 结论+可复现记录 结果不满足SLA时,回到对象选择或测量方法迭代