零知识证明 - Groth16算法介绍

经常会碰到一些算法名称,比如Groth16,GGPR13等等。这些名称是由算法提出的作者名称或者名称首字母以及相应的年份组成。Groth16,是由Jens Groth在2016年提出的算法。GGPR13,是由Rosario Gennaro,Craig Gentry,BryanParno,Mariana Raykova在2013年提出的算法。

 

零知识证明 - Groth16算法介绍_第1张图片

 

零知识证明(zk-SNARK ),从QSP/QAP到Groth16,期间也有很多学者专家,提出各种优化(优化计算时间,优化证明的大小,优化电路的尺寸等等)。Groth16提出的算法,具有非常少的证明数据(2/3个证明数据)以及一个表达式验证。

 

本文主要从工程应用理解的角度介绍Groth16算法的证明和验证过程。文章中所用的中文字眼可能和行业中不一样,欢迎批评指出。

 

1、术语介绍

 

Proofs - 在零知识证明的场景下,Proofs指具有完美的完备性(Completeness)以及完美的可靠性(Soundness)。也就是,具有无限计算资源也无法攻破。

 

Arguments - 在零知识证明的场景下,Arguments是指具有完美的完备性以及多项式计算的可靠性。也就是,在多项式计算能力下,是可靠的。

零知识证明 - Groth16算法介绍_第2张图片

2、Jens Groth是谁?

 

Groth是英国伦敦UCL大学的计算机系的教授。伦敦大学学院 (University College London),简称UCL,建校于1826年,位于英国伦敦,是一所世界著名的顶尖高等学府,为享有顶级声誉的综合研究型大学,伦敦大学联盟创始院校,英国金三角名校,与剑桥大学、牛津大学、帝国理工、伦敦政经学院并称G5超级精英大学。

 

http://www0.cs.ucl.ac.uk/staff/j.groth/

 

Groth从2009年开始,每年发表一篇或者多篇密码学或者零知识证明的文章,所以你经常会听到Groth09,Groth10等等算法。

 

简言之,牛人~。

 

3、NILP

 

零知识证明 - Groth16算法介绍_第3张图片

4、QAP的NILP

零知识证明 - Groth16算法介绍_第4张图片

零知识证明 - Groth16算法介绍_第5张图片

零知识证明 - Groth16算法介绍_第6张图片

零知识证明 - Groth16算法介绍_第7张图片

零知识证明 - Groth16算法介绍_第8张图片

零知识证明 - Groth16算法介绍_第9张图片

零知识证明 - Groth16算法介绍_第10张图片

5、QAP的NIZK Arguments

 

从QAP的NILP可以演化为QAP的NIZK Arguments。也就是说Groth16算法并不是完美的可靠,而是多项式计算情况下可靠。QAP的定义为"Relation"

 

零知识证明 - Groth16算法介绍_第11张图片

零知识证明 - Groth16算法介绍_第12张图片

6、证明元素的最小个数

 

论文指出zk-SNARK的最少的证明元素是2个。上述的证明方式是需要提供3个证明元素(A/B/C)。论文进一步说明,如果将电路进行一定方式的改造,使用同样的理论,可以降低证明元素为2个,但是,电路的大小会变的很大。

 

总结:Groth16算法是Jens Groth在2016年发表的算法。该算法的优点是提供的证明元素个数少(只需要3个),验证等式简单,保证完整性和多项式计算能力下的可靠性。Groth16算法论文同时指出,zk-SNARK算法需要的最少的证明元素为2个。目前Groth16算法已经被ZCash,Filecoin等项目使用。

你可能感兴趣的:(服务器租用,idc,服务器托管,备份,独享大带宽,大数据,病毒攻击,IPFS)