1. 引言

当前的ZK构建方案有:

  • 1)Bulletproofs
  • 2)Sigma protocol(+ Fiat-Shamir)
  • 3)Halo2
  • 4)Plonky2
  • 5)MPC-in-the-head proof(MPCith)

2. Bulletproofs


Bulletproofs的特点为:

  • 1)无需trusted setup的short NIZK
  • 2)基于Pedersen commitment构建
  • 3)支持proof aggregation
  • 4)Prover time为:O(N⋅log⁡(N))O(N\cdot \log(N))O(N⋅log(N)),约30秒
  • 5)Verifier time为:O(N)O(N)O(N),约1秒
  • 6)proof size为:O(log⁡(N))O(\log(N))O(log(N)),约1.3KB
  • 7)基于的安全假设为:discrete log

Bulletproofs适用的场景为:

  • 1)range proofs(仅需约600字节)
  • 2)inner product proofs
  • 3)MPC协议中的intermediary checks
  • 4)aggregated and distributed (with many private inputs) proofs

Bulletproofs不适合的场景有:

  • 1)需在链上验证的复杂任意statement

目前Bulletproofs方案已用于:

  • 1)比特币的隐私交易:ELEMENTS Confidential Transactions
  • 2)Monero:Monero Becomes Bulletproof
  • 3)Stellar Shielded Tx(Cloak):Cloak隐私资产协议

当前Bulletproofs开源库有:

  • 1)https://github.com/dalek-cryptography/bulletproofs(Rust)
  • 2)https://github.com/adjoint-io/bulletproofs(Haskell)
  • 3)https://github.com/bbuenz/BulletProofLib(Java)

Bulletproofs相关学习资源有:

  • 1)Stanford Bulletproofs
  • 2)论文作者Benedikt Bünz Bulletproofs视频
  • 3)Building on Bulletproofs

3. Sigma Protocol(+ Fiat-Shamir)


Sigma Protocol(+ Fiat-Shamir)特点为:

  • 1)无需trusted setup的short proof。
  • 2)需要constant number(3)of public-key operations。
  • 3)可配置组合多个Sigma proofs,类似为A and\or B、eq(A,B)、all(n,A)。
  • 4)基于的安全假设为:discrete log,honest verifier。

Sigma Protocol(+ Fiat-Shamir)适于的场景为:

  • 1)discrete log(dlog)proofs
  • 2)one-of-many dlogs
  • 3)discrete log equality(dleq)

Sigma Protocol(+ Fiat-Shamir)不适合的场景有:

  • 1)复杂任意计算。

当前Sigma Protocol已用于:

  • 1)Signal (Algebraic MACs for group chats):Technology Preview: Signal Private Group System
  • 2)dleq proofs in the adaptor signatures
  • 3)verifiable random functions
  • 4)ElGamal encryption in the Cryptography for #MeToo

Sigma Protocol相关开源库有:

  • 1)https://github.com/LLFourn/secp256kfun/tree/master/sigma_fun(Rust)
  • 2)https://pkg.go.dev/go.dedis.ch/kyber/v4/proof(Go)
  • 3)https://github.com/cryptobiu/libscapi(C++)
  • 4)https://github.com/spring-epfl/zksk(Python)

Sigma Protocol相关学习资料有:

  • 1)Zero Knowledge Proofs with Sigma Protocols
  • 2)Sigma Protocols and (Non-Interactive) Zero Knowledge
  • 3)ZKProof Standardizing Sigma Protocols?

4. Halo2

Halo2主要特点为:

  • 1)无需trusted setup,将accumulation scheme 与 PLONKish arithmetization高效结合。
  • 2)基于IPA commitment scheme。
  • 3)繁荣的开发者生态。
  • 4)Prover time为:O(N∗log⁡N)O(N*\log N)O(N∗logN)。
  • 5)Verifier time为:O(1)>O(1)>O(1)>Groth16。
  • 6)Proof size为:O(log⁡N)O(\log N)O(logN)。
  • 7)基于的安全假设为:discrete log。

Halo2相关开源库有:

  • 1)https://github.com/zcash/halo2:ZCash官方版本,采用IPA承诺机制。
  • 2)https://github.com/privacy-scaling-explorations/halo2wrong:将ZCash官方版本中的IPA承诺机制替换为KZG承诺机制。
  • 3)https://github.com/Orbis-Tertius/halo2:将ZCash官方版本中的IPA承诺机制替换为FRI承诺机制。(开发中)
  • 4)Mina Kimchi proof system:Mina版本,Halo2部分见https://github.com/o1-labs/proof-systems(Rust),递归实现见https://github.com/MinaProtocol/mina/tree/develop/src/lib/pickles(OCaml)。

Halo2适于的场景有:

  • 1)任意可验证计算
  • 2)递归proof composition
  • 3)基于lookup-based Sinsemilla function的circuit-optimized hashing

Halo2不适于的场景为:

  • 1)除非替换使用KZG版本的Halo2,否则在以太坊上验证开销大。

当前ZCash官方版本暂未支持递归,目前递归可用的有:

  • 1)Scroll团队KZG版本的https://github.com/scroll-tech/halo2-snark-aggregator
  • 2)Orbis Labs团队正在使用Tiny-RAM架构构建其accumulation scheme:https://github.com/Orbis-Tertius/tiny-ram-halo2

目前Halo2已用于:

  • 1)ZCash shielded protocol(Orchard):Bringing Halo 2 to Zcash
  • 2)Scroll zkEVM:Scroll zkEVM
  • 3)Orbis ZK-Rollup on Cardano:https://github.com/Orbis-Tertius/Orbis
  • 4)Dark Fi L1:Dark.fi

Halo2相关学习资料有:

  • 1)基本解释:Explaining Halo 2
  • 2)doc:Halo2文档
  • 3)视频:Zcash: Halo 2 and SNARKs without Trusted Setups
  • 4)数学:2021年11月Vitalik博客Halo and more: exploring incremental verification and SNARKs without pairings
  • 5)Halo2生态展示:2022年8月视频Halo 2 Community Showcase - Ying Tong at Zcon3
  • 6)更多:https://github.com/adria0/awesome-halo2

5. Plonky2

Plonky2主要特点为:

  • 1)无需trusted setup,将FRI与PLONK结合。
  • 2)针对具有SIMD的处理器进行了优化,并采用了64 byte Goldilocks fields。
  • 3)Prover time为:O(log⁡N)O(\log N)O(logN)。
  • 4)Verifier time为:O(log⁡N)O(\log N)O(logN)。
  • 5)Proof size为:O(N∗log⁡N)O(N*\log N)O(N∗logN)。
  • 6)基于的安全假设为:collision-resistant hash function。

Plonky2的主要特色在于:

  • 1)支持如下选择:

    • 1.1)选择fewer rows,意味着fast prover;
    • 1.2)选择fewer columns,意味着fast verifier。
  • 2)根据https://github.com/Sladuca/sha256-prover-comparison中的对比可知:
    • 2.1)Plonky2 STARK is ~38x faster than Halo2, ~64x faster than Groth16 on 3yo MBP。
    • 2.2)Plonky2 STARK does 142 hashes/sec on a 2021 MBP with an M1 processor。
  • 3)FRI中使用Poseidon sponge和GMIMC作为哈希函数。

Plonky2适于的场景有:

  • 1)任意可验证计算。
  • 2)递归proof composition。
  • 3)使用自定义gate进行电路优化。

Plonky2不适于的场景为:

  • 1)受限于其non-native arithmetic,不适于包含椭圆曲线运算的statements。

Plonky2已用于:

  • 1)Polygon Zero(ZK L2,早期名为Mir protocol)

Plonky2相关开源库见:

  • 1)https://github.com/mir-protocol/plonky2

Plonky2相关学习资料见:

  • 1)Introducing Plonky2
  • 2)Plonky2论文 Plonky2: Fast Recursive Arguments with PLONK and FRI

6. MPC-in-the-head proof

相关论文有:

  • 2021年论文 Formal security analysis of MPC-in-the-head zero-knowledge protocols:开源代码见:https://github.com/Nsidorenco/Decomposition-zk。形式化安全分析,采用eC语言。

所谓MPC是指:

  • 1)各方可基于其私有输入进行分布式计算。
  • 2)每方都生成一个transcript(its view)。
  • 3)关键点在于#1:若MPC的最终结果出错,则在某处存在inconsistent view。

所谓Secret Sharing秘密共享:

  • 1)为MPC的一种常用抽象,将某个秘密切分给多方,使得他们需共同协作来使用该秘密。
  • 2)关键点在于#2:若仅公开共享的部分秘密,则该秘密仍是未知的。


所谓MPC-in-the-head(MPCith)是一个ZK系统:

  • 1)Prover会simulate an MPC "in their head"来基于 某private input(已分享给多个虚拟方) 计算任意函数。注意,所simulate的各方会根据其所使用的秘密块来生成a view。
  • 2)Verifier会请求公开这些view的一个子集,公开的子集数量不足以恢复出该private input,但是又能从信任发生不一致性的概率很低。若概率不够低,可重复这种交互多次(如约300次)。
  • 3)可使用Fiat-Shamir将以上过程实现为非交互式的,并可并行化。
  • 4)生成proof所用的底层MPC原语并不重要,仅所生成的views是重要的。从而可将simulated MPC看成是黑盒略过,从而可避免大量开销。

MPCith:

  • 1)用于boolean circuits效率很高,不像大多数其它NIZKs仅适于arithmetic circuit。
  • 2)可与具有private addresses的RAM进行扩展。从而很容易将verifiable computation circuit编译为任意程序。

MPCith的特点为:

  • Prover time为:O(N)O(N)O(N)< Groth16。
  • Verifier time为:O(N)O(N)O(N)。
  • Proof size为:O(N)O(N)O(N)。
  • 加法运算是free的,乘法运算占用大多数开销。
  • 进行可验证计算的开销要低很多:为(1/n_reps*n_parties=> 约1/600),要远低于SNARKs的(约1/100万)。

MPCith适于的场景有:

  • 1)boolean circuit:

    • 1.1)对于不易于转换为arithmetic circuit的复杂程序,如SHA hashes;
    • 1.2)机器学习以及设计浮点运算的近似计算,可借助boolean circuit实现逐位运算。
  • 2)delegated proving(证明委托):
    • 2.1)如需为某statement创建SNARK,但不想自己计算,也不想将witness告知第三方的情况。可创建一个MPCith proof,然后委托方可创建一个新的证明来验证该MPCith proof。

MPCith不适于的场景为:

  • 1)任何需要进行链上验证的场景。

目前MPCith已用于:

  • 1)微软PICNIC(抗量子签名方案):https://github.com/microsoft/Picnic

MPCith相关开源库有:

  • 1)https://github.com/trailofbits/reverie/tree/stacked-ikos(Rust):Reverie is an implementation (prover and verifier) of the MPC-in-the-head NIZKPoK。
  • 2)https://github.com/cronokirby/boo-hoo(Rust):ZKBoo。
  • 3)https://github.com/cronokirby/Rem-Boo(Rust):Fast ZK proofs over boolean circuits with RAM。

MPCith相关学习资料有:

  • 1)2022年8月6日episode:MPC In The Head Special
  • 2)入门论文:2016年 ZKBoo: Faster Zero-Knowledge for Boolean Circuits
  • 3)安全分析:2021年论文 Formal security analysis of MPC-in-the-head zero-knowledge protocols:开源代码见:https://github.com/Nsidorenco/Decomposition-zk。形式化安全分析,采用eC语言。

参考资料

[1] twitter ZK方案之Bulletproofs、Halo2小结
[2] twitter MPC-in-the-head proofs

Bulletproofs、Sigma protocol、Halo2等ZK方案小结相关推荐

  1. 基于Sigma protocol实现的零知识证明protocol集锦

    1. 背景知识 Sigma protocols,又称为 3 phase protocols,用于证明knowledge of values in some relation,但是又不泄露values的 ...

  2. vue头像加白边_Vue头像处理方案小结

    个人思路 获取后台返回头像url,判断图片宽度,高度. 如果宽度>高度, 使其高度填充盒子 两边留白. 如果宽度 效果图: 缺陷:懒加载图片 会出现闪烁 代码实现 // 外面要给一个div并且限 ...

  3. 跨域post请求实现方案小结--转

    [名词解释] 跨域:https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript 同源策略 ...

  4. rem适配的浏览器_移动端网页布局适配rem方案小结

    前言 根据 W3C 规范中对 1rem 的定义: 1rem 与等于根元素 font-size 的计算值.当明确规定根元素的 font-size 时,rem 单位以该属性的初始值作参照. 这就意味着 1 ...

  5. 【Android工具】安卓TV云存储观影工具测试正常,安卓电视看电影方案小结

    微信关注公众号 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 前几天分享过群晖的安卓客户端:[Android工具]群晖安卓客户端基础套件:Dr ...

  6. 4k裸眼3d视频传输方案小结

    方案概述: 4k分辨率概念:http://www.expreview.com/32100.html 本文项目主要实施的分辨率为3840*2160: hdmi版本与所传输分辨率帧率的限制: 由于其他限制 ...

  7. react骨架屏自动生成_前端骨架屏方案小结

    骨架屏 最近在项目不时有用到骨架屏的需求,所以抽时间对骨架屏的方案作了一下调研,骨架屏的实践已经有很多了,也有很多人对自己的方案作了介绍.在这里按照个人的理解做了一个汇总和分类,分享给大家. 关于骨架 ...

  8. MySQL数据库备份和恢复方案小结

    这两天在调研MySQL数据库的备份和恢复方案,备份对象是对大量Innodb表,或者加上少量的MyISAM表. InnoDB备份常见问题: 文件一致性:数据文件.缓存.日志文件必须保持严格一致.加锁的方 ...

  9. web在线显示ppt方案小结

    1.把 ppt 转化为flash,,然后使用embed标签加载到网页中 ①本人使用Print2Flash软件转化为swf格式,软件里可以设置显示的效果 ②使用Flex和PDF2SWF两者配合使用,实现 ...

  10. /var/log/pacct、/var/spool/mail/root日志文件过大,处理方案小结

    /var/log/pacct文件如何产生: 在Linux系统中启动进程统计使用accton命令,必须用root身份来运行.Accton命令的形式accton file,file必须先存在.先使用tou ...

最新文章

  1. python中的下划线_Python中的下划线详解
  2. Keil中调试时Watch窗口变量不实时显示
  3. golang内置函数
  4. Java:异常处理的一些注意事项
  5. 修改TFS与本地源代码映射路径
  6. python template_python的Template使用指南
  7. 最小化安装CentOS 7后,图形界面的安装(GNOME、KDE等)
  8. artsy 爬虫_让我们得到Artsy! 使用神经网络创建自定义Snapchat过滤器!
  9. 京东支付SDK重构设计与实现
  10. 四、博客详情页完成《iVX低代码仿CSDN个人博客制作》
  11. 如何使用xshell4连接自己搭建的服务器
  12. 【转载】SCI论文配图配色方案参考网站
  13. 交通灯控制系统C语言代码,《C语言代码-交通灯控制器》.doc
  14. 远程连接android手机(调试)
  15. python获取excel数据制作有文字和图表的报告_如何用Python绘制学术报告图表?
  16. 利用西瓜播放器(xgplayer)实现直播点播
  17. 软考和PMP哪个更好考?
  18. idea回退操作reset、revert
  19. pyDes 库 DES 与 3DES 加解密
  20. python中while True用法

热门文章

  1. Python&Opencv手势识别系统(完整源码&自定义UI操作界面&视频教程)
  2. java遍历Map效率最高的方式
  3. 智能泊车技术及现状详解
  4. Itext设置页眉页脚、表头划线、水印、条形码、二维码
  5. 盒图(boxplot)
  6. 生活中的逻辑谬误04.赌徒谬误
  7. python预处理tif格式图片
  8. oracle刷同义词报错,oracle 同义词
  9. 计算机无法显示大容量,Win7系统电脑提示“usb大容量存储设备 代码10”的解决方法...
  10. 在知网查重复率时你入坑了吗?