零知识证明 - Groth16算法介绍

看zk-SNARK的文章或者资料的时候,经常会碰到一些算法名称,比如Groth16,GGPR13等等。这些名称是由算法提出的作者名称或者名称首字母以及相应的年份组成。Groth16,是由Jens Groth在2016年提出的算法。GGPR13,是由Rosario Gennaro,Craig Gentry,Bryan Parno,Mariana Raykova在2013年提出的算法。

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

Groth16论文(On the Size of Pairing-based Non-interactive Arguments)的下载地址:

https://eprint.iacr.org/2016/260.pdf

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

术语介绍

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

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

Schwartz-Zippel 定理 - 假设 f ( x 1 , x 2 , . . . , x n ) f(x_1, x_2, ..., x_n) f(x1,x2,...,xn)是个n元多项式,多项式总的阶为d。如果 r 1 , r 2 , . . . , r n r_1, r_2, ..., r_n r1,r2,...,rn是从有限集合S中随机选取,则 f ( r 1 , r 2 , . . . , r n ) = 0 f(r_1, r_2, ..., r_n) = 0 f(r1,r2,...,rn)=0的概率是小于等于 d ∣ s ∣ \frac{d}{|s|} sd。简单的说,如果多元多项式,在很大的集合中随机选取参数,恰好函数f等于0的概率几乎为0。

https://brilliant.org/wiki/schwartz-zippel-lemma/

线性(Linear)函数 - 假设函数f满足两个条件:1. f ( x + y ) = f ( x ) + f ( y ) f(x+y) = f(x)+f(y) f(x+y)=f(x)+f(y) 2. f ( α x ) = α f ( x ) f(\alpha x) = \alpha f(x) f(αx)=αf(x),则称函数f为线性函数。

Affine 函数 - 假设函数g,能找到一个线性函数f,满足 g ( x ) = f ( x ) + b g(x) = f(x) + b g(x)=f(x)+b,则称函数g为Affine函数。也就是,Affine函数是由一个线性函数和偏移构成。

Trapdoor函数 - 假设一个Trapdoor函数f, x → f ( x ) x \to f(x) xf(x) 很容易,但是 f ( x ) → x f(x) \to x f(x)x非常难。但是,如果提供一个secret, f ( x ) → x f(x) \to x f(x)x也非常容易。

Jens Groth是谁?

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

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

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

简言之,牛人~。

NILP

Groth16的论文先引出NILP(non-interactive linear proofs)的定义:

  1. ( σ , τ ) ← S e t u p ( R ) (\sigma, \tau) \gets Setup(R) (σ,τ)Setup(R) :设置过程,生成 σ ∈ F m \sigma \in F^m σFm, τ ∈ F n \tau \in F^n τFn

  2. π ← P r o v e ( R , σ , ϕ , ω ) \pi \gets Prove(R, \sigma, \phi, \omega) πProve(R,σ,ϕ,ω) :证明过程,证明过程又分成两步:a. 生成线性关系 Π ← P r o o f M a t r i x ( R , ϕ , ω ) \Pi \gets ProofMatrix(R, \phi, \omega) ΠProofMatrix(R,ϕ,ω),其中ProofMatrix是个多项式算法。b. 生成证明: π = Π σ \pi = \Pi\sigma π=Πσ

  3. 0 / 1 ← V f y ( R , σ , ϕ , π ) 0/1 \gets Vfy(R, \sigma, \phi, \pi) 0/1Vfy(R,σ,ϕ,π) :验证过程,验证者使用 ( R , ϕ ) (R, \phi) (R,ϕ)生成电路t,并验证 t ( σ , π ) t(\sigma, \pi) t(σ,π)是否成立。

在NILP定义的基础上,Groth16进一步定义了split NILP,也就是说,CRS分成两部分 ( σ 1 , σ 2 ) (\sigma1, \sigma2) (σ1,σ2),证明者提交的证明也分成两部分 ( π 1 , π 2 ) (\pi1, \pi2) (π1,π2)

总的来说,核心在“Linear”上,证明者生成的证明和CRS成线性关系。

QAP的NILP

QAP的定义为"Relation": R = ( F , a u x , ℓ , { u i ( X ) , v i ( X ) , w i ( X ) } i = 0 m , t ( X ) ) R=(F, aux, \ell, \{u_i(X), v_i(X), w_i(X)\}_{i=0}^m, t(X)) R=(F,aux,,{ ui(X),vi(X),wi(X)}i=0m,t(X))。也就是说,statements为 ( a 1 , . . . , a ℓ ) ∈ F ℓ (a_1, ..., a_\ell) \in F^\ell (a1,...,a)F, witness为 ( a l + 1 , . . . , a m ) ∈ F m − ℓ (a_{l+1}, ..., a_m) \in F^{m-\ell} (al+1,...,am)Fm,并且 a 0 = 1 a_0 = 1 a0=1的情况下,满足如下的等式:

∑ i = 0 m a i u i ( X ) ⋅ ∑ i = 0 m a i v i ( X ) = ∑ i = 0 m a i w i ( X ) + h ( X ) t ( X ) \sum_{i=0}^m a_iu_i(X) \cdot \sum_{i=0}^m a_iv_i(X) = \sum_{i=0}^m {a_iw_i(X)+h(X)t(X)} i=0maiui(X)i=0maivi(X)=i=0maiwi(X)+h(X)t(X)

t ( X ) t(X) t(X)的阶为n。

  1. 设置过程:随机选取 α , β , γ , δ , x ← F ∗ \alpha, \beta, \gamma, \delta, x \gets F^* α,β,γ,δ,xF,生成 σ , τ \sigma, \tau σ,τ

    τ = ( α , β , γ , δ , x ) \tau = (\alpha, \beta, \gamma, \delta, x) τ=(α,β,γ,δ,x)

    σ = ( α , β , γ , δ , { x i } i = 0 n − 1 , { β u i ( x ) + α v i ( x ) + w i ( x ) γ } i = 0 ℓ , { β u i ( x ) + α v i ( x ) + w i ( x ) δ } i = ℓ + 1 m , { x i t ( x ) δ } i = 0 n − 2 ) \sigma = (\alpha, \beta, \gamma, \delta, \{x^i\}_{i=0}^{n-1}, \{\cfrac{\beta u_i(x)+\alpha v_i(x)+w_i(x)}{\gamma}\}_{i=0}^\ell, \{\cfrac{\beta u_i(x)+\alpha v_i(x)+w_i(x)}{\delta}\}_{i=\ell+1}^m, \{\cfrac{x^it(x)}{\delta}\}_{i=0}^{n-2}) σ=(α,β,γ,δ,{ xi}i=0n1,{ γβui(x)+αvi(x)+wi(x)}i=0,{ δβui(x)+αvi(x)+wi(x)}i=+1m,{ δxit(x)}i=0n2)

  2. 证明过程:随机选择两个参数 r 和 s r和s rs,计算 π = Π σ = ( A , B , C ) \pi = \Pi\sigma = (A, B, C) π=Πσ=(A,B,C)

    A = α + ∑ i = 0 m a i u i ( x ) + r δ A = \alpha + \sum_{i=0}^{m} a_i u_i(x) + r\delta A=α+i=0maiui(x)+rδ

    B = β + ∑ i = 0 m a i v i ( x ) + s δ B = \beta + \sum_{i=0}^{m} a_i v_i(x) + s\delta B=β+i=0maivi(x)+sδ

    C = ∑ i = ℓ + 1 m a i ( β u i ( x ) + α v i ( x ) + w i ( x ) ) + h ( x ) t ( x ) δ + A s + r B − r s δ C = \cfrac{\sum_{i=\ell+1}^m a_i (\beta u_i(x)+\alpha v_i(x)+w_i(x))+h(x)t(x)}{\delta} + As + r B - r s \delta C=δi=+1mai(βui(x)+αvi(x)+wi(x))+h(x)t(x)+As+rBrsδ

  3. 验证过程:

    验证过程,计算如下的等式是否成立:

    A ⋅ B = α ⋅ β + ∑ i = 0 ℓ a i ( β u i ( x ) + α v i ( x ) + w i ( x ) ) γ ⋅ γ + C ⋅ δ A\cdot B = \alpha \cdot \beta + \cfrac{\sum_{i=0}^\ell a_i (\beta u_i(x)+\alpha v_i(x)+w_i(x))}{\gamma} \cdot \gamma + C \cdot \delta AB=αβ+γi=0ai(βui(x)+αvi(x)+wi(x))γ+Cδ

注意,设置过程中的x是一个值,不是代表多项式。在理解证明/验证过程的时候,必须要明确,A/B/C的计算是和CRS中的参数成线性关系(NILP的定义)。在明确这一点的基础上,可以看出 α 和 β \alpha和 \beta αβ的参数能保证A/B/C的计算采用统一的 a 0 , a 1 , . . . , a m a_0, a_1, ... , a_m a0,a1,...,am参数。因为 A ⋅ B A\cdot B AB会包含 ∑ i = 0 ℓ a i ( β u i ( x ) + α v i ( x ) ) \sum_{i=0}^\ell a_i (\beta u_i(x)+\alpha v_i(x)) i=0ai(βui(x)+αvi(x))子项,要保证 A ⋅ B A\cdot B AB和C相等,必须采用统一的 a 0 , a 1 , . . . , a m a_0, a_1, ... , a_m a0,a1,...,am</

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引中提到了Groth在2009年的论文《Linear Algebra with Sub-linear Zero-Knowledge Arguments》中介绍了sub-linear size的零知识证明,用于证明两个矩阵的乘积和Hadamard乘积。 根据引用,可以使用这种证明方案构建其他sub-linear零知识证明,用于证明一组满足线性代数关系的承诺向量和矩阵。这些证明包括:一个承诺矩阵是上三角或下三角矩阵;一个承诺矩阵是另一个承诺矩阵的逆矩阵;一个承诺矩阵是另一个承诺矩阵的置换矩阵(使用公开的或隐藏的置换);一个承诺域元素是两个承诺向量的点积;一个承诺矩阵是两个其他承诺矩阵的乘积;一个承诺向量是两个其他向量的Hadamard乘积(逐元素相乘);一个承诺矩阵具有特定的迹;计算承诺矩阵的行或列的总和。 因此,sub-linear零知识证明可以应用于证明各种线性代数关系,如乘积、逆矩阵、置换矩阵、点积、Hadamard乘积、迹和总和等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linear Algebra with Sub-linear Zero-Knowledge Arguments学习笔记](https://blog.csdn.net/mutourend/article/details/107659912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值