EVM 上 PQ 签名的 Gas/Security-Bit:数据集 + 方法论

本文为机器翻译
展示原文

每安全比特的 Gas 值:EVM 上 PQ 签名的标准化基准测试

祝大家节日快乐。

关于本帖中AA/ERC-4337/PQ签名的讨论,请继续跟进:

我最终找到了一个不断隐晦出现的缺失环节:

我们没有标准化的单位来比较 EVM 上不同安全级别的不同签名方案。

大多数比较都使用“每次验证的气体消耗量”,但这实际上混杂了多种因素:

  • 不同的安全目标(例如,~128 位 ECDSA 与 Cat3/Cat5 PQ 方案),

  • 不同的验证表面(EOA 与 ERC-1271 / AA),

  • 有时基准测试范围也不同(纯粹的验证与完整的 handleOps 管道)。

这使得回答诸如以下基本工程问题变得困难:
“在明确的假设条件下,ML-DSA-65 在 EVM 上相对于 Falcon 是否可行?”


我建造的

一个小型基准测试实验室 + 数据集,具有明确的来源和明确的安全性分母:

仓库: GitHub - pipavlo82/gas-per-secure-bit:PQ 签名和 VRF 的每安全位 Gas 基准测试。

核心思想:

gas_per_secure_bit = gas_verify / security_bits

我特意列出了两个分母,因为两种观点都很有用:

指标 A — 基线归一化(128 位基线)

这回答了以下问题: “每个 128 位基准单元的成本是多少?”

gas_per_128b = gas_verify / 128

并不是说每个方案都是 128 位安全的;这只是一个预算/标准化工具。

指标 B — 安全等效位(已声明的约定)

这回答了以下问题: “在已声明的规范化约定下,每个‘安全位’的成本是多少?”

gas_per_sec_equiv_bit = gas_verify / security_equiv_bits

目前,我的签名采用以下明确的约定:

方案NIST类别(如适用)安全等效位
ECDSA(secp256k1) 128
ML-DSA-65(FIPS-204,第 3 类) 3 192
猎鹰-1024(5类) 5 256

我使用简单的映射 Cat{1,3,5} → {128,192,256} 作为声明的规范化约定(欢迎更好的社区约定)。

注意: security_equiv_bits是一个声明的用于可比性的规范化约定。它并非安全证明,也不是 NIST 提供的“比特”值。

类别来源:


溯源性和可重复性

目前所有数据均为单次运行的 gas 快照(未取平均值),并具有完整的来源信息:
repocommitbench_namechain_profilenotes字段。

没有隐藏的平均值计算,也没有“N 次最佳”的选择——只有其他人可以重新运行的可复现快照。


结果(当前快照)

图表(安全等效位)

原始 SVG 文件(推荐):

https://raw.githubusercontent.com/pipavlo82/gas-per-secure-bit/main/docs/gas-per-sec-equiv-bit-chart.svg

GitHub页面:

https://github.com/pipavlo82/gas-per-secure-bit/blob/0b126bc2d2ee82f6f25c91b565106b243d4b077c/docs/gas-per-sec-equiv-bit-chart.svg

(这些长椅的表面材质并不完全相同;请将其视为标准化数据集视图,而非单一排名。)

几个关键行(基线归一化——除以 128)

方案/台架气体每128桶气体笔记
ECDSA ecrecover 21,126 165经典基线;非 PQ 安全(Shor)
Falcon 获取用户操作哈希218,333 1,705小型AA基元
ML-DSA-65 PreA (隔离热路) 1,499,354 11,714优化计算核心
猎鹰完全验证10,336,055 80,751 PQ 完全验证
ML-DSA-65 验证 POC 68,901,612 538,294端到端概念验证

安全等效归一化(除以 security_equiv_bits)

方案/台架气体安全等效位每秒气体当量
Falcon 获取用户操作哈希218,333 256 853
ML-DSA-65 PreA 1,499,354 192 7,809
猎鹰完全验证10,336,055 256 40,375
ML-DSA-65 验证 POC 68,901,612 192 358,863

让我印象深刻的是:

  • ML-DSA-65 PreA 的能耗约为7,809 gas/安全当量比特(Cat3 等效)。

  • Falcon-1024 完全验证着陆点约为40,375 气体/安全等效比特(Cat5 等效)

对于这些特定的卧推凳来说,这大约是5.2 倍的差距

并非“ML-DSA 整体上优于 Falcon”;而是一个范围更窄的论断:
如果避免在链上重新计算繁重的公共结构,一些 ML-DSA 验证面可以变得更加 EVM 友好。


“PreA”的含义(以及它如何改变现状)

在标准的 ML-DSA 验证中,很大一部分成本实际上是:
ExpandA + 将公共矩阵转换为 NTT 域。

“PreA”路径通过接受预先计算的A_ntt ,并将其与CommitA绑定,来隔离热算术核心(NTT域中的A·z − c·t₁),以防止矩阵替换。

在我的方案中, A_ntt由公钥种子( rho )派生而来,然后通过 CommitA 进行绑定以防止替换。

这是一个明确的工程设计要点(尤其是在 AA 环境中):将大型公共结构移到链下,但保持其加密绑定。

粗略分解(当前线束):

  • 使用链上 ExpandA+NTT(A) 的完整 compute_w 计算量约为 6480 万 gas

  • 孤立基质多层核心(PreA):约150万气体

执行:


这对AA/ERC-7913为何重要?

在AA中,你所关心的单位很少是“孤立地验证一个签名”。
您关心的是稳定的 ABI 表面候选方案之间的可比性

ERC-7913提供了一个通用的验证接口。

我的工作假设是:如果我们希望通过精心设计(而不是猜测)来推广 PQ,我们需要:

  • 共享基准测试方案

  • 显式安全分母,

  • 以及类似的表面(纯验证与AA管线)。


欢迎提出问题/反馈

1) EVM 上的哈希/XOF 布线
对于 EVM 实现:我们想要 (a) 严格的 FIPS SHAKE 布线,(b) 基于 Keccak 的非一致性变体,还是 (c) 在数据集中显式标记的双模实现?

2)双指标方法是否合理?
基线归一化对预算编制很有用;安全等效比特对每个安全单位的诚实效率很有用。对同时报告这两项指标有任何异议吗?

3) PreA 标准化选项
在匿名戒酒互助会(AA)的背景下,哪种方法最不坏?

  • 调用数据(很大,但无状态),

  • 每个密钥的存储空间,

  • 预编译,

  • 混合绑定与 CommitA 绑定?


可重复性快速入门

git clone https://github.com/pipavlo82/gas-per-secure-bit cd gas-per-secure-bitRESET_DATA=0 MLDSA_REF= "feature/mldsa-ntt-opt-phase12-erc7913-packedA" \./scripts/run_vendor_mldsa.shRESET_DATA=0 ./scripts/run_ecdsa.shQA_REF=main RESET_DATA=0 ./scripts/run_vendor_quantumaccount.sh tail -n 20 data/results.csv

感谢阅读——我非常乐意接受关于惯例、更好的威胁模型框架以及接下来要添加哪些方案/面的建议。


链接


来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
收藏
评论