SNARK性能及安全——Verifier篇
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SNARK性能及安全——Verifier篇相关的知识,希望对你有一定的参考价值。
1. 引言
前序博客:
- SNARK性能及安全——Prover篇 中指出SNARK Prover为计算密集型的,Prover的前端开销(将计算转换为电路表示)和后端开销(对电路进行SNARK证明)都要比原始直接计算的计算量大3个数量级或更多,因此为大规模计算生成证明可能是不可行的。SNARK的实用性主要受限于Prover的性能。
不过,SNARK Verifier的验证开销要 远远低于 直接检查和处理数据。不过,SNARK验证成本差异很大。本文分析了这些验证开销,并比较了不同SNARK的安全特性。
本文将特别介绍具有可信后量子安全的使用SNARK方案(PQ-SNARKs),这种方案中,安全性与验证开销之间需进行权衡。当前,在某些情况下,总是倾向于更重视验证开销而不是安全性。
SNARKs为展现其潜力,需保证部署的SNARK系统是安全的,且用户也信任其安全性。在本文最后提出了web3社区可以采取的简单行动,以帮助确保这些属性长期有效。
2. SNARK安全性分析
2.1 SNARK安全性定量分析
如果在计算上无法提供虚假陈述的令人信服的证明,则SNARK是安全的。例如,在L2 rollups的情况下,想要窃取我的资金的攻击者需要证明以下形式的虚假陈述:“我知道一个数字签名交易,将Justin的所有资产转移到我自己的账户。”
SNARK的安全级别是通过为找到虚假陈述的令人信服的证明而必须完成的工作量来衡量的。与数字签名等其他密码原语类似,这一工作量的对数被称为“安全位(bits of security)”。例如,30位安全意味着 2 30 2^30 230≈ 需要10亿个“工作步骤(steps of work)”来攻击SNARK。这本质上是真实世界安全性的近似度量,因为one step of work的概念可能会有所不同,并且没有考虑内存需求或并行机会等实际因素。
2.2 SNARK安全性定性分析
bits of security为SNARK安全性的定量分析。
不同的SNARK也会有不同的定性安全属性。
如,某些SNARKs需要可信设置仪式来生成结构化的proving key,而根本不需要可信设置的SNARK是transparent的。
non-transparent SNARK要想安全,其可信设置仪式中需至少有一个参与者是诚实的,即其生成并丢弃了某“trapdoor”。若将其与其它参与者的trapdoor结合,将很容易找到任意虚假陈述的可信SNARK“证明”。可信设置仪式,如:
- a16z crypto的On-Chain Trusted Setup Ceremony
- Aleo的trusted setup
需由成百上千个的参与者,每人都生成并丢弃其“trapdoor”,以使可信设置的安全假设尽可能温和。
根据抗量子攻击能力也可对SNARK进行分类:
- 1)依赖discrete logarithm安全假设的SNARKs:如Groth16、PlonK、Marlin、Bulletproofs、Nova等。对于量子计算机来说,可能可高效计算discrete logarithm难题,因此这些SNARKs不是post-quantum安全的(non-PC)。
虽然目前正在紧急努力转向后量子加密方案,但这主要是因为需要在未来几十年内保持加密消息的机密性。今天存储截获消息并等待量子计算机(比如50年后)到达的对手 可 使用计算机解密50年前的消息。SNARK的情况完全不同。今天使用非PQ-SNARK不应损害未来50年区块链的安全性,即使量子计算机届时确实到来。
2.3 SNARK多项式承诺
所有的SNARK都使用多项式承诺方案的密码学原语,多项式承诺方案通常也是性能瓶颈。详细可参看SNARK性能及安全——Prover篇 第5节“SNARK后端的瓶颈是什么?”。
而且,SNARK的transparency和plausible post-quantum安全性都完全由其所选择的多项式承诺方案决定。
现有的多项式承诺方案有:
- KZG多项式承诺:PlonK和Marlin采用KZG多项式承诺。其既不是transparent的,也不是post-quantum secure的。2020年。
- Bulletproofs多项式承诺:为transparent的,但不是post-quantum secure的。2017年。
- Hyrax多项式承诺:为transparent的,但不是post-quantum secure的。2017年。
- Dory多项式承诺:为transparent的,但不是post-quantum secure的。2020年。
- FRI多项式承诺:为post-quantum secure的。2017年。基于纠错码。
- Ligero多项式承诺:为post-quantum secure的。2017年。基于纠错码。
- Ligero++多项式承诺:为post-quantum secure的。2020年。基于纠错码。
- Brakedown多项式承诺:为post-quantum secure的。2021年。基于纠错码。
- Orion多项式承诺:为post-quantum secure的。2022年。基于纠错码。
上面的5种post-quantum secure多项式承诺方案均是基于纠错码,使用的唯一密码学原语为哈希。同时具有如下属性:
- 验证开销随着bits of security的位数增加而增加。(所谓验证开销,是由 哈希evaluation数量以及field operation数量 来衡量的。)
粗略来说,这些post-quantum多项式承诺方案的单次“迭代”仅可实现小数量的bits of security(如2-4)。因此,需重复该协议多次来“放大”安全等级,而随着每次重复,验证开销也会随之增加。因此,控制PQ-SNARKs的验证开销(对应为区块链应用中的gas开销),协议设计者通常有动力将security level设置为较低值。
除极少数例外情况(见2018年论文 Batching Techniques for Accumulators with Applications to IOPs and Stateless Blockchains)外,Non-PQ-SNARK(透明和不透明)中不会出现具体安全和验证成本之间的紧张关系。Non-PQ-SNARK使用椭圆曲线群,其中离散对数被认为很难计算,其安全级别由所使用的群确定。椭圆曲线群的合适大小,以及每个群操作的成本,随着所需的安全级别而增长。然而,proof 中群元素的数量与群的选择无关。
而在PQ-SNARKs中,不仅hash evaluation的size会随着所需的安全等级增加而增加,proof中所需的evaluation数以及Verifier计算的 evaluation数也将随着所需安全等级增加而增加。
3. 所部署SNARK的具体验证开销和安全等级
实际项目中,所部署SNARK的具体验证开销和安全等级 差别很大。
3.1 实际所部署SNARK的具体验证开销
根据:
- zk-sync turbo-plonk验证开销优化后为27万gas。详细可看Tenderly Dashboard——为以太坊的监控、debug、分析平台,可debug交易、优化gas开销、查看解码变量等。
- Circom and SnarkJS update: PLONK support 中指出,Plonk验证开销约为29万gas,而Groth16验证开销约为23万。
可知,PlonK proof在以太坊上的验证开销低于30万gas。
而StarkWare proof的验证开销约为500万gas。StarkWare proof为transparent和plausibly post-quantum的,而PlonK proof不是。
不过,后续将说明,以太坊上的StarkWare proof的安全等级 要远低于以太坊上的PlonK proof的安全等级。
3.2 实际所部署SNARK的具体安全等级
参考资料
[1] a16z团队2022年8月博客 Measuring SNARK performance: Frontends, backends, and the future
[2] a16z团队2022年9月博客 SNARK security and performance
[3] twitter SNARK security
以上是关于SNARK性能及安全——Verifier篇的主要内容,如果未能解决你的问题,请参考以下文章
Families of SNARK-friendly 2-chains of elliptic curves学习笔记