1. 引言
Bayer和Groth 2013年论文《Zero-Knowledge Argument for Polynomial Evaluation with Application to Blacklists》,发表于EuroCrypt 2013。
要点:
1)基于DL assumption,实现了证明commitments c1,c2,?,cdc_1,c_2,\cdots, c_dc1?,c2?,?,cd? to u21,u22,?,u2du^{2^1},u^{2^2},\cdots , u^{2^d}u21,u22,?,u2d are well formed,Prover发送commitments cfuj=Com(fju2j)c_{fu_j}=Com(f_ju^{2^j})cfuj??=Com(fj?u2j)给Verifier。【而不需要借助pairing】
Verifier:
验证:
cj+1xuj?fˉjcfuj=Com(xu2j+1?(xu2j+fj)u2j+fju2j)=Com(0)c_{j+1}^xu_{j}^{-\bar{f}_j}c_{fu_j}=Com(xu^{2^{j+1}}-(xu^{2^j}+f_j)u^{2^j}+f_ju^{2^j})=Com(0)cj+1x?uj?fˉ?j??cfuj??=Com(xu2j+1?(xu2j+fj?)u2j+fj?u2j)=Com(0)
即可。
2)基于DL assumption,构建了polynomial evaluation argument,针对的场景为:【communication cost 为O(log?D)O(\log D)O(logD),其中DDD为polynomial degree。】
- public info:polynomial P(X)P(X)P(X) of degree DDD,commitments c0c_0c0?和cvc_vcv?
- private info:uuu和vvv
- relation:P(u)=vP(u)=vP(u)=v 且 c0=comck(u)=comck(u20)c_0=com_{ck}(u)=com_{ck}(u^{2^0})c0?=comck?(u)=comck?(u20) 且 cv=comck(v)c_v=com_{ck}(v)cv?=comck?(v)
3)基于本文的polynomial evaluation argument实现了membership proof和non-membership proof。要点为构建多项式P(X)=∏i=1D(X?λi)P(X)=\prod_{i=1}^{D}(X-\lambda_i)P(X)=∏i=1D?(X?λi?)。
verification of a polynomial’s evaluation in a secret committed value可用于non-membership proof或membership proof。
- 构建了a novel special honest verifier zero-knowledge argument for correct polynomial evaluation,该argument communication cost 为O(log?N)O(\log N)O(logN),其中NNN为the polynomial degree,相比于之前的O(N13)O(N^{\frac{1}{3}})O(N31?) communication complexity有了大幅改进。
- polynomial evaluation argument为 3-move structure,基于 discrete logarithm assumption。
- 该polynomial evaluation argument可用于构建zero-knowledge membership and non-membership arguments with communication that is logarithmic in the size of the blacklist。
non-membership proofs可用于design anonymous blacklisting schemes allowing online services to block misbehaving users without learning the identity of the user,同时支持blocking of single users of anonymization networks without blocking the whole network。
与普通的polynomial commitment 中的evaluation point uuu为public info不同,本文针对的场景为:(其中evaluation point uuu为secret info)
- public info:polynomial P(X)P(X)P(X) of degree DDD,commitments to uuu和vvv
- private info:uuu和vvv
- relation:P(u)=vP(u)=vP(u)=v
针对以上场景,本文构建的polynomial evaluation argument具有如下特性:
- 基于discrete logarithm assumption in a prime order group。
- 标准的3-round public coin structure,且 common reference string仅有少量group elements。
- communication 随着polynomial degree 对数增长。
- Prover和Verifier都是computationally efficient的。
- 使用了真实数据做了相应实现。
polynomial evaluation argument 可用于blacklisting anonymous users。
维基百科允许匿名postings,支持阻止IP address of misbehaving users,但是直接阻止IP的方案过于crude,存在以下问题:
若one user of 匿名网络Tor abuses Wikipedia,则all users whose traffic comes out of the same Tor relay with this IP-address are blocked。因此one misbehaving user causes many innocent users to be punished。
Johnson等人 2007年论文《Nymble: Anonymous ip-address blocking》中提出了使用Nymble system来借鉴该问题。
- 相比于直接禁用IP地址,可要求每个用户anonymously proves that she has not been blacklisted。借助本文的polynomial evaluation argument,可构建a non-membership proof,使得a user to efficiently prove that she has not been blacklisted。
- 也可使用本文的polynomial evaluation argument来构建efficient membership proofs。Membership proofs可广泛用于白名单访问控制系统,或者如e-voting或e-auction应用中where users want to prove that their votes are valid or their bids belong to a set of approved values。
使用prime order ppp group G\mathbb{G}G和Pedersen commitment scheme。
polynomial P(X)=∑i=1DaiXiP(X)=\sum_{i=1}^{D}a_iX^iP(X)=∑i=1D?ai?Xi的系数为public info。
已知a list of values L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={
λ1?,?,λD?} 和a Pedersen commitment ccc,membership proof对应为证明ccc is a commitment to u∈Lu\in\mathcal{L}u∈L,non-membership proof对应为证明ccc is a commitment to u?Lu\notin \mathcal{L}u∈/?L:
根据Brands等人2007年论文《A practical system for globally revoking the unlinkable pseudonyms of unknown users》中的思路,可构建多项式P(X)=∏i=1D(X?λi)P(X)=\prod_{i=1}^{D}(X-\lambda_i)P(X)=∏i=1D?(X?λi?),membership proof对应为证明P(u)=0P(u)=0P(u)=0,non-membership proof对应为证明P(u)≠0P(u)\neq 0P(u)??=0。相应的communication cost为O(log?D)O(\log D)O(logD)。
1.1 polynomial evaluation argument相关研究
- Cramer 和Damg°ard 1998年论文《Zero-knowledge proofs for ?nite ?eld arithmetic; or: Can zero-knowledge be for free?》的communication complexity为linear。
- Groth 2009年论文《Linear algebra with sub-linear zero-knowledge arguments》的communication complexity为O(D)O(\sqrt{D})O(D?)个group elements。
- Groth 2011年论文《Efficient zero-knowledge arguments from two-tiered homomorphic commitments》中使用了stronger assumption构建了pairing-based argument,相应的communication complexity为O(D13)O(D^{\frac{1}{3}})O(D31?)个group elements。
- Fujisaki 和Okamoto 1997年论文《Statistical zero knowledge protocols to prove modular polynomial relations》中考虑的是polynomial evaluation in RSA-based context,但是其zero-knowledge argument具有linear complexity。
- Brands 等人2007年论文《A practical system for globally revoking the unlinkable pseudonyms of unknown users》中与本文类似,也是基于discrete logarithm assumption,且相应的communication complexity为O(D)O(\sqrt{D})O(D?)个group elements。
1.2 membership proof和non-membership proof相关研究
针对a committed u∈Lu\in\mathcal{L}u∈L or u?Lu\notin \mathcal{L}u∈/?L where L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={
λ1?,?,λD?}
直观的证明方式是:
- 对于non-membership proof,相当于证明λ1≠u1∧?∧λD≠u\lambda_1\neq u_1 \wedge \cdots \wedge \lambda_D\neq uλ1???=u1?∧?∧λD???=u。
- 对于membership proof,相当于证明λ1=u∨?∨λD=u\lambda_1=u \vee \cdots \vee \lambda_D=uλ1?=u∨?∨λD?=u。
membership proof和non-membership proof相关研究有:
- Bresson and Stern 2001年论文《Ef?cient revocation in group signatures》在context of revoking members of group signature schemes中提出了a solution based on the strong RSA assumption。
- Peng和Bao 2010年论文《Improving applicability, efficiency and security of non-membership proof》中实现了a general discrete logarithm based zero-knowledge arguments of non-membership with linear complexity。
- Brands 等人2007年论文《A practical system for globally revoking the unlinkable pseudonyms of unknown users》改进实现了communication complexity为O(D)O(\sqrt{D})O(D?) group elements。
- Peng 2011年论文《A general, flexible and efficient proof of inclusion and exclusion》中实现了与Brands类似的non-membership proof with the same complexity。
累加器[2, 9, 37, 29, 8, 38] 可提供另一种实现membership proof的机制。
non-membership 累加器在[22,39]等论文中提出。
大多数的累加器都依赖a trusted party to maintain the accumulator。
目前密码学累加器多基于strong RSA assumption或pairing-based qqq-SDH assumption,而不是discrete logarithm assumption。
2. polynomial evaluation argument
针对的场景为:
- public info:polynomial P(X)P(X)P(X) of degree DDD,commitments c0c_0c0?和cvc_vcv?
- private info:uuu和vvv
- relation:P(u)=vP(u)=vP(u)=v 且 c0=comck(u)=comck(u20)c_0=com_{ck}(u)=com_{ck}(u^{2^0})c0?=comck?(u)=comck?(u20) 且 cv=comck(v)c_v=com_{ck}(v)cv?=comck?(v)
通过附加zero-coefficients策略,可假设D=2d+1?1D=2^{d+1}-1D=2d+1?1。
基本思路为:
-
1)将序号iii以二进制形式表示,即i=id?i0i=i_d\cdots i_0i=id??i0?,其中ij∈{0,1}i_j\in\{0,1\}ij?∈{ 0,1}。
可将term UiU^iUi表示为Ui=U∑j=0dij2j=∏j=0d(U2j)ijU^i=U^{\sum_{j=0}^{d}i_j2^j}=\prod_{j=0}^{d}(U^{2^j})^{i_j}Ui=U∑j=0d?ij?2j=∏j=0d?(U2j)ij?,将其替换进多项式中有:
P(U)=∑i=0DaiUi=∑i0,?,id=01aid?i0∏j=0d(U2j)ijP(U)=\sum_{i=0}^{D}a_iU^i=\sum_{i_0,\cdots,id=0}^{1}a_{i_d\cdots i_0}\prod_{j=0}^{d}(U^{2^j})^{i_j}P(U)=∑i=0D?ai?Ui=∑i0?,?,id=01?aid??i0??∏j=0d?(U2j)ij? -
2)Prover将make commitments c1,c2,?,cdc_1,c_2,\cdots, c_dc1?,c2?,?,cd? to u21,u22,?,u2du^{2^1},u^{2^2},\cdots , u^{2^d}u21,u22,?,u2d,然后采用stantdard techniques来证明they are well-formed【见后续第8)步】,然后证明∑i0,?,id=01aid?i0∏j=0d(u2j)ij=v\sum_{i_0,\cdots,id=0}^{1}a_{i_d\cdots i_0}\prod_{j=0}^{d}(u^{2^j})^{i_j}=v∑i0?,?,id=01?aid??i0??∏j=0d?(u2j)ij?=v。由于d=?log?D?d=\left \lfloor \log D \right \rfloord=?logD?,prover仅需make a logarithmic number of commitments,将有助于keep communication low。
-
3)为了证明 the committed powers of uuu in c0,c1,?,cdc_0,c_1,\cdots,c_dc0?,c1?,?,cd? evaluate to the committed vvv,Prover引入随机值f0,?,f)d←Zpf_0,\cdots,f)d\leftarrow \mathbb{Z}_pf0?,?,f)d←Zp?,构建新的多项式:
$Q(X)= ∑i0,?,id=01aid?i0∏j=0d(Xu2j+fj)ijX1?ij=Xd+1P(u)+Xdδd+?+Xδ1+δ0\sum_{i_0,\cdots,id=0}^{1} a_{i_d\cdots i_0}\prod_{j=0}^{d}(Xu^{2^j}+f_j)^{i_j}X^{1-i_j}=X^{d+1}P(u)+X^d\delta_d+\cdots +X\delta_1+\delta_0∑i0?,?,id=01?aid??i0??∏j=0d?(Xu2j+fj?)ij?X1?ij?=Xd+1P(u)+Xdδd?+?+Xδ1?+δ0? -
4)为了证明the coefficient of Xd+1X^{d+1}Xd+1 in the secret Q(X)Q(X)Q(X) is the same as vvv in a way that cancels out the δ0,?,δd\delta_0,\cdots,\delta_dδ0?,?,δd? coefficients。
Prover 发送给 Verifier commitments cf0,?,cfdc_{f_0},\cdots , c_{f_d}cf0??,?,cfd?? to f0,?,fdf_0,\cdots,f_df0?,?,fd? 以及 commitments cδ0,?,cδdc_{\delta_0},\cdots,c_{\delta_d}cδ0??,?,cδd?? to δ0,?,δd\delta_0,\cdots,\delta_dδ0?,?,δd?。 -
5)Verifier:发送random challenge x←Zpx\leftarrow \mathbb{Z}_px←Zp?。
-
6)Prover:需要证明Q(x)=xd+1v+xdδd+?+δ0Q(x)=x^{d+1}v+x^d\delta_d+\cdots + \delta_0Q(x)=xd+1v+xdδd?+?+δ0?。
由于Pedersen commitment具有同态属性:
即对于ca=Com(a),cb=Com(b)c_a=Com(a), c_b=Com(b)ca?=Com(a),cb?=Com(b),满足:ca?cb=Com(a+b)c_a\cdot c_b=Com(a+b)ca??cb?=Com(a+b) 以及 cax?cb=Com(ax+b)c_a^x\cdot c_b=Com(ax+b)cax??cb?=Com(ax+b)。
于是有,Prover可open each product cjxcfjc_j^xc_{f_j}cjx?cfj?? to fˉj=xu2j+fj\bar{f}_j=xu^{2^j}+f_jfˉ?j?=xu2j+fj?。
Prover将fˉj\bar{f}_jfˉ?j? for j=0,?,dj=0,\cdots,dj=0,?,d 发送给Verifier。 -
7)Verifier:根据收到的fˉj\bar{f}_jfˉ?j?,计算相应的δˉ=∑i0,?,id=01aid?i0∏j=0dfˉjijx1?ij\bar{\delta}=\sum_{i_0,\cdots,id=0}^{1} a_{i_d\cdots i_0}\prod_{j=0}^{d}\bar{f}_j^{i_j}x^{1-i_j}δˉ=∑i0?,?,id=01?aid??i0??∏j=0d?fˉ?jij??x1?ij?,验证:
Com(fˉj)=cjxcfjCom(\bar{f}_j)= c_j^xc_{f_j}Com(fˉ?j?)=cjx?cfj??
和
Com(δˉ)=cvxd+1∏j=0dcδjxjCom(\bar{\delta})= c_v^{x^{d+1}}\prod_{j=0}^{d}c_{\delta_j}^{x^j}Com(δˉ)=cvxd+1?∏j=0d?cδj?xj?
是否成立即可。 -
8)为了证明commitments c1,c2,?,cdc_1,c_2,\cdots, c_dc1?,c2?,?,cd? to u21,u22,?,u2du^{2^1},u^{2^2},\cdots , u^{2^d}u21,u22,?,u2d are well formed,Prover发送commitments cfuj=Com(fju2j)c_{fu_j}=Com(f_ju^{2^j})cfuj??=Com(fj?u2j)给Verifier。
-
9)Verifier:
验证:cj+1xuj?fˉjcfuj=Com(xu2j+1?(xu2j+fj)u2j+fju2j)=Com(0)c_{j+1}^xu_{j}^{-\bar{f}_j}c_{fu_j}=Com(xu^{2^{j+1}}-(xu^{2^j}+f_j)u^{2^j}+f_ju^{2^j})=Com(0)cj+1x?uj?fˉ?j??cfuj??=Com(xu2j+1?(xu2j+fj?)u2j+fj?u2j)=Com(0)
即可。
添加blinding randomness,完整的zero-knowledge polynomial evaluation argument为:
【
- communication cost约为4d4d4d group elements和3d3d3d field elements。
- Prover computation为:8d8d8d exponentiations in G\mathbb{G}G 来计算the commitments,以及需要计算满足∑i0,?,id=01aid?i0∏j=0d(Xu2j+fj)ijX1?ij=Xd+1P(u)+Xdδd+?+Xδ1+δ0\sum_{i_0,\cdots,id=0}^{1} a_{i_d\cdots i_0}\prod_{j=0}^{d}(Xu^{2^j}+f_j)^{i_j}X^{1-i_j}=X^{d+1}P(u)+X^d\delta_d+\cdots +X\delta_1+\delta_0∑i0?,?,id=01?aid??i0??∏j=0d?(Xu2j+fj?)ij?X1?ij?=Xd+1P(u)+Xdδd?+?+Xδ1?+δ0?的 δ0,?,δd\delta_0,\cdots,\delta_dδ0?,?,δd?,需要2dD2dD2dD multiplications in Zp\mathbb{Z}_pZp?。
- Verifier computation为:由于verification中使用了2次xxx,Verifier需要6d6d6d exponentiations in G\mathbb{G}G。同时为了计算∑i0,?,id=01aid?i0∏j=0dfˉjijx1?ij\sum_{i_0,\cdots,id=0}^{1} a_{i_d\cdots i_0}\prod_{j=0}^{d}\bar{f}_j^{i_j}x^{1-i_j}∑i0?,?,id=01?aid??i0??∏j=0d?fˉ?jij??x1?ij? 需要2D2D2D multiplications in Zp\mathbb{Z}_pZp?。
- 借助multi-exponentiation 技术可进一步reduce Prover和Verifier的计算量。
】
3. Non-membership argument
针对的场景为:
- Public info: KaTeX parse error: Undefined control sequence: \proc at position 6: P(X)=\?p?r?o?c?_{i=1}^{D}(X-\l…,以及set L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={ λ1?,?,λD?},commitment cuc_ucu?
- private info:uuu
- relation:u?Lu\notin \mathcal{L}u∈/?L 且 cu=Com(u)c_u=Com(u)cu?=Com(u)
可转换为:
- Public info: KaTeX parse error: Undefined control sequence: \proc at position 6: P(X)=\?p?r?o?c?_{i=1}^{D}(X-\l…,以及set L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={ λ1?,?,λD?},commitment cuc_ucu? 和 commitment cvc_vcv?
- private info:u,vu,vu,v
- relation:P(u)=vP(u)=vP(u)=v 且 cu=Com(u)c_u=Com(u)cu?=Com(u) 且 v≠0v\neq 0v??=0 且 cv=Com(v)c_v=Com(v)cv?=Com(v)
进一步转换为:
- Public info: KaTeX parse error: Undefined control sequence: \proc at position 6: P(X)=\?p?r?o?c?_{i=1}^{D}(X-\l…,以及set L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={ λ1?,?,λD?},commitment cuc_ucu? 和 commitment cvc_vcv?以及commitment cwc_wcw?
- private info:u,v,wu,v,wu,v,w
- relation:P(u)=vP(u)=vP(u)=v 且 w=v?1w=v^{-1}w=v?1 且 cv=Com(v)c_v=Com(v)cv?=Com(v) 且 cu=Com(u)c_u=Com(u)cu?=Com(u) 且 cw=Com(w)c_w=Com(w)cw?=Com(w)
non-membership argument可拆分为2部分并行执行:
1)借助以上polynomial evaluation argument证明“P(u)=vP(u)=vP(u)=v 且 cv=Com(v)c_v=Com(v)cv?=Com(v) 且 cu=Com(u)c_u=Com(u)cu?=Com(u)“;
2)借助 Chaum和Pedersen 1992年论文《Wallet databases with observers》中的思路来证明 “w=v?1w=v^{-1}w=v?1 且 cv=Com(v)c_v=Com(v)cv?=Com(v) 且cw=Com(w)c_w=Com(w)cw?=Com(w) “:
具体的场景为:
- public info:generator ggg, commitment cv,cwc_v,c_wcv?,cw?
- private info:v,wv,wv,w
- relation:v?w=1v\cdot w=1v?w=1 且 cv=Com(v)c_v=Com(v)cv?=Com(v) 且cw=Com(w)c_w=Com(w)cw?=Com(w)
证明思路为:【multiplication argument】
Prover:commit to z0=gv?wz_0=g^{v\cdot w}z0?=gv?w,选择random s1∈ZP?s_1\in\mathbb{Z}_P^*s1?∈ZP??,计算a0=gs1,b0=cws1=gws1a_0=g^{s_1},b_0=c_w^{s_1}=g^{ws_1}a0?=gs1?,b0?=cws1??=gws1?。
将commitments z0,a0,b0z_0,a_0,b_0z0?,a0?,b0?发送给Verifier。
此时拆分为两组证明:z0=cvw∧cw=gwz_0=c_v^w\wedge c_w=g^wz0?=cvw?∧cw?=gw 和 z0=cwv∧cv=gvz_0=c_w^v\wedge c_v=g^vz0?=cwv?∧cv?=gv
借助 博客 基于Sigma protocol实现的零知识证明protocol集锦 “Protocol 5. Equality of the opening of 2 Pedersen commitment” 即可完成相应的证明。
4. membership argument
针对的场景为:
- Public info: KaTeX parse error: Undefined control sequence: \proc at position 6: P(X)=\?p?r?o?c?_{i=1}^{D}(X-\l…,以及set L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={ λ1?,?,λD?},commitment cuc_ucu?
- private info:uuu
- relation:u∈Lu\in \mathcal{L}u∈L 且 cu=Com(u)c_u=Com(u)cu?=Com(u)
可转换为:
- Public info: KaTeX parse error: Undefined control sequence: \proc at position 6: P(X)=\?p?r?o?c?_{i=1}^{D}(X-\l…,以及set L={λ1,?,λD}\mathcal{L}=\{\lambda_1,\cdots,\lambda_D\}L={ λ1?,?,λD?},commitment cuc_ucu?和commitment cvc_vcv?
- private info:u,vu,vu,v
- relation:P(u)=vP(u)=vP(u)=v 且 cu=Com(u)c_u=Com(u)cu?=Com(u) 且 cv=Com(v)=Com(0)c_v=Com(v)=Com(0)cv?=Com(v)=Com(0)
membership argument可拆分为2部分并行执行:
1)借助以上polynomial evaluation argument证明“P(u)=vP(u)=vP(u)=v 且 cv=Com(v)c_v=Com(v)cv?=Com(v) 且 cu=Com(u)c_u=Com(u)cu?=Com(u)“;
2)借助 Schnorr 1991年论文《Efficient signature generation by smart cards》中的思路,证明cv=Com(v)=Com(0)c_v=Com(v)=Com(0)cv?=Com(v)=Com(0)。
多项式P(X)=∏i=1D(X?λi)P(X)=\prod_{i=1}^{D}(X-\lambda_i)P(X)=∏i=1D?(X?λi?)的系数可computed in a binary tree fashion with the linear functions X?λiX-\lambda_iX?λi? as leaves。
当ppp为an FFT friendly prime时,借助FFT,两个degree 为nnn的多项式乘积仅需O(nlog?n)O(n\log n)O(nlogn) multiplications in Zp\mathbb{Z}_pZp?。
若list为固定的,则多项式的系数仅需计算以此。
single element additions or deletions can be done using DDD multiplications。
若multiple elements are added or deleted at the same time,the per element cost can be reduced by using fast polynomial multiplication and division techniques。