主要观点:
- 喜欢测试,尤其喜欢可复用测试向量库,测试向量有时手工制作,有时通过暴力枚举产生,随机测试向量很有效但需保存输入输出,介绍了“累积测试向量”技巧。
- 以 ML-KEM 为例说明随机测试向量的效果和规模,还可通过累积测试向量探索输入参数范围,也可类似“压缩”单个大向量。
- 累积向量的主要缺点是测试失败时无调试信息,但在常见场景中可被接受,维护工作由 Geomys 客户资助。
关键信息:
- 可复用测试向量库:CCTV、Wycheproof。
- ML-KEM 相关:new post-quantum algorithm ML-KEM、参考实现ref/test/test_vectors.c。
- 累积测试向量技巧:从确定性源抽取随机输入,累积输出到哈希函数,检查最终哈希。
- 维护资助客户:Interchain、Smallstep、Ava Labs、Teleport、SandboxAQ、Charm、Tailscale。
重要细节:
- 随机测试 300000 次有 99%机会击中 2⁻¹⁶ 边缘情况。
- Go 中不同模式运行累积测试向量的次数及时间。
- 累积测试向量可跨实现复用,如 ML-KEM 向量在CCTV。
- 具体的 10000 次随机 ML-KEM 测试代码示例。
- 不同的累积测试案例,如 cSHAKE128 测试。
- 对单个大向量“压缩”的示例及相关问题。
- 罗马 Tiber 岛图片及相关描述。
- 各客户对维护工作的评价。
- 关于边缘情况测试的相关注释及解释。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。