1. 引言

Groth和Kohlweiss 2015年论文《One-out-of-Many Proofs: Or How to Leak a Secret and Spend a Coin》

  • 针对a list of commitments其中至少有一个commitment opens to 0 0 0 的场景,构建了一个3-move public coin special honest verifier zero-knowledge proof,称之为Sigma-protocol。
    在该protocol中,Prover不需要know openings of the other commitments。
    communication cost 为 O ( log ⁡ N ) O(\log N) O(logN),其中 N N N为commitments的数量。

  • 基于本文的Sigma-protocol,实现了ring signature和zerocoin—— a novel mechanism for bitcoin privacy。
    将Sigma-protocol作为a (linkable) ad-hoc group identification scheme,其中users have public keys that are commitments and demonstrate knowledge of an opening for one of the commitments to unlinkably identify themselves (once) as belonging to the group。
    在group identification scheme中使用Fiat-Shamir transform,即可实现ring signatures。
    将ring signatures与the linkable group identification scheme结合,则实现了zerocoin。

  • 本文的ring signature基于discrete logarithm assumption,无需trusted setup。

  • Sigma-protocol可用于实现membership proof of a secret committed value belonging to a public list of values。

当使用Pedersen commitment时,其具有computationally sound,仅需依赖discrete logarithm assumption。

∑ \sum ∑-protocol应用广泛,当使用cyclic prime-order groups或RSA-type groups时,都存在efficient ∑ \sum ∑-protocol,如 the identification schemes of Schnorr [Sch91] and Guillou-Quisquater [GQ88]。

∑ \sum ∑-protocol的一个优点是:很容易使用Fiat-Shamir heuristic来实现non-interactive。从而有利于使用 ∑ \sum ∑-protocol来构建digital signature schemes和encryption schemes,which are non-interactive in nature。

1.1 本文贡献

主要考虑的场景为:

  • public info: N N N个commitments c 0 , ⋯ , c N − 1 c_0,\cdots,c_{N-1} c0​,⋯,cN−1​
  • private info: l ∈ { 0 , ⋯ , N − 1 } l\in\{0,\cdots,N-1\} l∈{0,⋯,N−1} 以及 r ∈ Z q r\in\mathbb{Z}_q r∈Zq​
  • relation: c l = C o m c k ( 0 ; r ) c_l=Com_{ck}(0;r) cl​=Comck​(0;r)

本文构建的相应sigma-protocol ∑ \sum ∑-protocol :

  • communication cost为: 4 log ⁡ N 4\log N 4logN commitments in G \mathbb{G} G和 3 log ⁡ N + 1 3\log N+1 3logN+1 elements in Z q \mathbb{Z}_q Zq​。
  • Prover computation:约 N log ⁡ N N\log N NlogN exponentiations。
  • Verifier computation:约 N N N exponentiations。

若Prover知道所有commitments的openings,则其computation会更快。

任何具有加法同态属性的commitment scheme都可使用:

  • Pedersen commitment
  • EIGamal encryption的变种,其中message is encoded as an exponent。即使用 g m y r g^my^r gmyr而不是标准的 m y r my^r myr。

另一个Prover知道所有commitments的openings的例子是 membership proof,即:
Prover有a commitment c = C o m c k ( u ) c=Com_{ck}(u) c=Comck​(u),然后想prove knowledge of an opening to a value u u u that belongs to a list L = { λ 0 , ⋯ , λ N − 1 } \mathcal{L}=\{\lambda_0,\cdots,\lambda_{N-1}\} L={λ0​,⋯,λN−1​}。证明思路可为:
形成commitments c 0 = c ⋅ C o m c k ( − λ 0 ) , ⋯ , c N − 1 = c ⋅ C o m c k ( − λ N − 1 ) c_0=c\cdot Com_{ck}(-\lambda_0),\cdots,c_{N-1}=c\cdot Com_{ck}(-\lambda_{N-1}) c0​=c⋅Comck​(−λ0​),⋯,cN−1​=c⋅Comck​(−λN−1​),然后prove knowledge of an opening of one of the commitments to 0 0 0。由于此处的special structure of the commitments c 0 , ⋯ , c N − 1 c_0,\cdots,c_{N-1} c0​,⋯,cN−1​,Prover computation仅为 2 N log ⁡ N 2N\log N 2NlogN multiplications in Z q \mathbb{Z}_q Zq​,Verifier computation为 2 N 2N 2N multiplications in Z q \mathbb{Z}_q Zq​。相比于Bayer和Groth 2013年论文《Zero-Knowledge Argument for Polynomial Evaluation with Application to Blacklists》中membership proof的Prover和Verifier computation 均为 O ( N log ⁡ 2 N ) O(N\log ^2 N) O(Nlog2N) 有了大幅改进。

2. ∑ \sum ∑-protocol

3. ∑ \sum ∑-protocol for commitment to 0 or 1

关注的场景为:

  • public info:commitment c c c。
  • private info: m , r m,r m,r
  • relation: m ∈ { 0 , 1 } m\in\{0,1\} m∈{0,1}

核心思想为:
若 m ∈ { 0 , 1 } m\in\{0,1\} m∈{0,1},则 m ( 1 − m ) = 0 m(1-m)=0 m(1−m)=0成立。

相应的证明为:

4. ∑ \sum ∑-protocol for one out of N N N commitments containing 0

针对的场景为:

  • public info: N N N个commitments c 0 , ⋯ , c N − 1 c_0,\cdots,c_{N-1} c0​,⋯,cN−1​
  • private info: l ∈ { 0 , ⋯ , N − 1 } l\in\{0,\cdots,N-1\} l∈{0,⋯,N−1} 以及 r ∈ Z q r\in\mathbb{Z}_q r∈Zq​
  • relation: c l = C o m c k ( 0 ; r ) c_l=Com_{ck}(0;r) cl​=Comck​(0;r)

核心思想为:
若one of the commitments contains 0,等价为 存在an index l l l 使得 ∏ i = 0 N − 1 c i δ i l \prod_{i=0}^{N-1}c_i^{\delta_{il}} ∏i=0N−1​ciδil​​为a commitment to 0,其中 δ i l \delta_{il} δil​为Kronecker’s delta,即 δ l l = 1 \delta_{ll}=1 δll​=1 and δ i l = 0 \delta_{il}=0 δil​=0 for i ≠ l i\neq l i​=l。

假设 N = 2 n N=2^n N=2n,将 i , l i,l i,l以二进制表示: i = i 1 ⋯ i n , l = l 1 ⋯ l n i=i_1\cdots i_n, l=l_1\cdots l_n i=i1​⋯in​,l=l1​⋯ln​,则 δ i l \delta_{il} δil​可表示为 δ i l = ∏ j = 1 n δ i j l j \delta_{il}=\prod_{j=1}^{n}\delta_{i_jl_j} δil​=∏j=1n​δij​lj​​,从而转换为证明 ∏ i = 0 N − 1 c i ∏ j = 1 n δ i j l j \prod_{i=0}^{N-1}c_i^{\prod_{j=1}^{n}\delta_{i_jl_j}} ∏i=0N−1​ci∏j=1n​δij​lj​​​ 为 a commitment to 0:

  • Prover:make commitments c l 1 , ⋯ , c l n c_{l_1},\cdots,c_{l_n} cl1​​,⋯,cln​​ to the bits l 1 , ⋯ , l n l_1,\cdots,l_n l1​,⋯,ln​。
    然后执行图1的 n n n parallel ∑ \sum ∑-protocol来 prove knowledge of openings of these commitments to values l j ∈ { 0 , 1 } l_j\in\{0,1\} lj​∈{0,1}。
    在证明 l j ∈ { 0 , 1 } l_j\in\{0,1\} lj​∈{0,1}的 ∑ \sum ∑-protocols中,Prover会reveal f 1 , ⋯ , f n f_1,\cdots,f_n f1​,⋯,fn​ of the form f j = l j x + a j f_j=l_jx+a_j fj​=lj​x+aj​。
    假设 f j , 1 = f j = l j x + a j = δ 1 l j x + a j , f j , 0 = x − f j = ( 1 − l j ) x − a j = δ 0 l j x − a j f_{j,1}=f_j=l_jx+a_j=\delta_{1l_j}x+a_j, f_{j,0}=x-f_j=(1-l_j)x-a_j=\delta_{0l_j}x-a_j fj,1​=fj​=lj​x+aj​=δ1lj​​x+aj​,fj,0​=x−fj​=(1−lj​)x−aj​=δ0lj​​x−aj​,则对于每个 i i i,the product ∏ j = 1 n f j , i j \prod_{j=1}^{n}f_{j,i_j} ∏j=1n​fj,ij​​可表示为如下多项式:
    ∏ j = 1 n f j , i j = p i ( x ) = ∏ j = 1 n ( δ i j l j x ) + ∑ k = 0 n − 1 p i , k x k = δ i l x n + ∑ k = 0 n − 1 p i , k x k \prod_{j=1}^{n}f_{j,i_j}=p_i(x)=\prod_{j=1}^{n}(\delta_{i_jl_j}x)+\sum_{k=0}^{n-1}p_{i,k}x^k=\delta_{il}x^n+\sum_{k=0}^{n-1}p_{i,k}x^k ∏j=1n​fj,ij​​=pi​(x)=∏j=1n​(δij​lj​​x)+∑k=0n−1​pi,k​xk=δil​xn+∑k=0n−1​pi,k​xk …… (1)
    其中 p i , k p_{i,k} pi,k​为Prover witness。
    以 c i c_i ci​为底, p i ( x ) p_i(x) pi​(x)为幂,有:
    c i p i ( x ) = c i ∏ j = 1 n f j , i j = ( c i δ i l ) x n ⋅ ∏ k = 0 n − 1 ( c i p i , k ) x k c_i^{p_i(x)}=c_i^{\prod_{j=1}^{n}f_{j,i_j}}=(c_i^{\delta_{il}})^{x^n}\cdot \prod_{k=0}^{n-1} (c_i^{p_{i,k}})^{x^k} cipi​(x)​=ci∏j=1n​fj,ij​​​=(ciδil​​)xn⋅∏k=0n−1​(cipi,k​​)xk
    再次转换为:
    ∏ i = 0 N − 1 c i p i ( x ) = ∏ i = 0 N − 1 c i ∏ j = 1 n f j , i j = ∏ i = 0 N − 1 ( c i δ i l ) x n ⋅ ∏ k = 0 n − 1 ∏ i = 0 N − 1 ( c i p i , k ) x k \prod_{i=0}^{N-1}c_i^{p_i(x)}= \prod_{i=0}^{N-1} c_i^{\prod_{j=1}^{n}f_{j,i_j}}=\prod_{i=0}^{N-1} (c_i^{\delta_{il}})^{x^n} \cdot \prod_{k=0}^{n-1} \prod_{i=0}^{N-1} (c_i^{p_{i,k}})^{x^k} ∏i=0N−1​cipi​(x)​=∏i=0N−1​ci∏j=1n​fj,ij​​​=∏i=0N−1​(ciδil​​)xn⋅∏k=0n−1​∏i=0N−1​(cipi,k​​)xk …… (2)
    由于 p i , k p_{i,k} pi,k​为Prover witness,for k = 0 , ⋯ , n − 1 k=0,\cdots, n-1 k=0,⋯,n−1,Prover需计算 c d k = ∏ i = 0 N − 1 ( c i p i , k ) ⋅ C o m c k ( 0 ; ρ k ) c_{d_k}= \prod_{i=0}^{N-1} (c_i^{p_{i,k}})\cdot Com_{ck}(0;\rho_k) cdk​​=∏i=0N−1​(cipi,k​​)⋅Comck​(0;ρk​)【其中 ρ k \rho_k ρk​用于blinding p i , k p_{i,k} pi,k​】,并将 c d 0 , ⋯ , c d n − 1 c_{d_0},\cdots,c_{d_{n-1}} cd0​​,⋯,cdn−1​​发送给Verifier。

对公式(2)再次转换有:
∏ i = 0 N − 1 ( c i δ i l ) x n = c l x n = ∏ i = 0 N − 1 c i ∏ j = 1 n f j , i j ⋅ ∏ k = 0 n − 1 ( c d k ) − x k \prod_{i=0}^{N-1} (c_i^{\delta_{il}})^{x^n}=c_l^{x^n}=\prod_{i=0}^{N-1} c_i^{\prod_{j=1}^{n}f_{j,i_j}}\cdot \prod_{k=0}^{n-1}(c_{d_k})^{-x^k} ∏i=0N−1​(ciδil​​)xn=clxn​=∏i=0N−1​ci∏j=1n​fj,ij​​​⋅∏k=0n−1​(cdk​​)−xk

即证明 c l c_l cl​为a commitment to 0,等价为证明 ∏ i = 0 N − 1 c i ∏ j = 1 n f j , i j ⋅ ∏ k = 0 n − 1 ( c d k ) − x k \prod_{i=0}^{N-1} c_i^{\prod_{j=1}^{n}f_{j,i_j}}\cdot \prod_{k=0}^{n-1}(c_{d_k})^{-x^k} ∏i=0N−1​ci∏j=1n​fj,ij​​​⋅∏k=0n−1​(cdk​​)−xk为a commitment to 0。Prover仅需将相应的blinding factor z d z_d zd​发送给Verifier即可。
详细的“ ∑ \sum ∑-protocol for one out of N N N commitments containing 0”证明为:

整个“ ∑ \sum ∑-protocol for one out of N N N commitments containing 0” 证明的开销为:

  • communication cost为: 4 log ⁡ N 4\log N 4logN commitments和 3 log ⁡ N + 1 3\log N+1 3logN+1 field elements。
  • Prover computation:若采用Pedersen commitment scheme,则Prover的主要开销在于计算 c d 0 , ⋯ , c d n − 1 c_{d_0},\cdots,c_{d_{n-1}} cd0​​,⋯,cdn−1​​ 时需要 n n n multi-exponentiations of N N N group elements。若使用[Lim00]中的multi-exponentiation 技术,可将计算 c d 0 , ⋯ , c d n − 1 c_{d_0},\cdots,c_{d_{n-1}} cd0​​,⋯,cdn−1​​的开销reduce为约 N N N个single exponentiations。若引入pre-computation技术,计算这些commitments的效率将更高。多项式系数 p i , k p_{i,k} pi,k​可使用fast polynomial multiplication技术来计算,由于其计算是over Z q \mathbb{Z}_q Zq​的,开销远小于exponentiations计算。
  • Verifier computation:Verifier的开销主要在 ∏ i = 0 N − 1 c i ∏ j = 1 n f j , i j \prod_{i=0}^{N-1} c_i^{\prod_{j=1}^{n}f_{j,i_j}} ∏i=0N−1​ci∏j=1n​fj,ij​​​,若使用Pedersen commitments,不需要多于 N log ⁡ N \frac{N}{\log N} logNN​ single exponentiations。

5. Prover知道所有commitment openings情况下的 ∑ \sum ∑-protocol for one out of N N N commitments containing 0

Prover知道所有commitment openings情况下,针对的场景为:

  • public info: N N N个commitments c 0 , ⋯ , c N − 1 c_0,\cdots,c_{N-1} c0​,⋯,cN−1​
  • private info: l ∈ { 0 , ⋯ , N − 1 } l\in\{0,\cdots,N-1\} l∈{0,⋯,N−1} 以及 r l ∈ Z q r_l\in\mathbb{Z}_q rl​∈Zq​,和 m 0 , ⋯ , m N − 1 m_0,\cdots,m_{N-1} m0​,⋯,mN−1​以及 r 0 , ⋯ , r N − 1 r_0,\cdots,r_{N-1} r0​,⋯,rN−1​
  • relation: c l = C o m c k ( 0 ; r l ) c_l=Com_{ck}(0;r_l) cl​=Comck​(0;rl​) 且 c i = C o m c k ( m i ; r i ) c_i=Com_{ck}(m_i;r_i) ci​=Comck​(mi​;ri​)

此时Prover的计算可由之前的 N N N个single exponentiations reduce为 3 N log ⁡ N 3N\log N 3NlogN multiplications in Z q \mathbb{Z}_q Zq​。还有一个计算压力在于make 4 log ⁡ N 4\log N 4logN commitments。

6. membership proof —— 基于 ∑ \sum ∑-protocol

基于 ∑ \sum ∑-protocol 的membership proof,针对的场景为:

  • public info:commitment c c c,以及set of values λ 0 , ⋯ , λ N − 1 \lambda_0,\cdots,\lambda_{N-1} λ0​,⋯,λN−1​
  • private info: λ l ∈ { λ 0 , ⋯ , λ N − 1 } \lambda_l\in\{\lambda_0,\cdots,\lambda_{N-1}\} λl​∈{λ0​,⋯,λN−1​}和 γ l \gamma_l γl​
  • relation: c = C o m c k ( λ l ; γ l ) c=Com_{ck}(\lambda_l; \gamma_l) c=Comck​(λl​;γl​)且 λ l ∈ { λ 0 , ⋯ , λ N − 1 } \lambda_l\in\{\lambda_0,\cdots,\lambda_{N-1}\} λl​∈{λ0​,⋯,λN−1​}

核心思想为:
借助上面的 1 1 1-out-of- N N N ∑ \sum ∑-protocol,构建 c 0 = c ⋅ C o m c k ( − λ 0 ; 0 ) , ⋯ , c N − 1 = c ⋅ C o m c k ( − λ N − 1 ; 0 ) c_0=c\cdot Com_{ck}(-\lambda_0;0),\cdots,c_{N-1}=c\cdot Com_{ck}(-\lambda_{N-1};0) c0​=c⋅Comck​(−λ0​;0),⋯,cN−1​=c⋅Comck​(−λN−1​;0),转为证明存在 c l c_l cl​的opening为0。


比 Bayer和Groth 2013年论文《Zero-Knowledge Argument for Polynomial Evaluation with Application to Blacklists》中membership proof 的效率更高。在该论文中,prove membership需证明the committed value is a root in the polynomial P ( U ) = ∏ i = 0 N − 1 ( U − λ i ) P(U)=\prod_{i=0}^{N-1}(U-\lambda_i) P(U)=∏i=0N−1​(U−λi​),但初始阶段计算该多项式的系数需要 O ( N log ⁡ 2 N ) O(N\log^2 N) O(Nlog2N) multiplications (and only if the modulus q q q is of a form suitable for using the Fast Fourier Transform)。该论文还支持non-membership proof,即证明 P ( u ) ≠ 0 P(u)\neq 0 P(u)​=0即说明the committed value u u u不属于该list。而本文的 ∑ \sum ∑-protocol不支持non-membership proof。

7. ring signature

。。。。。。

8. zerocoin

。。。。。。

One-out-of-Many Proofs: Or How to Leak a Secret and Spend a Coin 学习笔记相关推荐

  1. Linear-time zero-knowledge proofs for arithmetic circuit satisfiability 学习笔记

    1. 引言 Bootle等人2017年论文<Linear-time zero-knowledge proofs for arithmetic circuit satisfiability> ...

  2. Fast Reed-Solomon Interactive Oracle Proofs of Proximity学习笔记

    1. 引言 Eli Ben-Sasson等人2018年论文<Fast Reed-Solomon Interactive Oracle Proofs of Proximity>.该论文又俗称 ...

  3. Casting out Primes: Bignum Arithmetic for Zero-Knowledge Proofs学习笔记

    1. 引言 Polygon zero团队 Daniel Lubarov 和 Polygon zkEVM团队 Jordi Baylina 2022年10月联合发表的论文 <Casting out ...

  4. ZKAttest: Ring and Group Signatures for existing ECDSA keys 学习笔记

    1. 引言 来自于Cloudflare和Cornell Tech的Armando Faz-Hern´andez等人,2021年论文<ZKAttest: Ring and Group Signat ...

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

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

  6. Compressed sigma-Protocol Theory and Practical Application to Plug Play Secure Algorithmics学习笔记

    1. 引言 Thomas Attema等人2020年论文<Compressed sigma-Protocol Theory and Practical Application to Plug & ...

  7. 机器学习的前期入门汇总

    机器学习机器学习是近20多年兴起的一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.机器学习理论主要是设计和分析一些让计算机可以自动"学习"的算法. ...

  8. Mina Kimchi SNARK 代码解析

    1. 引言 Mina系列博客有: Mina概览 Mina的支付流程 Mina的zkApp Mina中的Pasta(Pallas和Vesta)曲线 Mina中的Schnorr signature Min ...

  9. Mina中的Kimchi SNARK

    1. 引言 Mina系列博客有: Mina概览 Mina的支付流程 Mina的zkApp Mina中的Pasta(Pallas和Vesta)曲线 Mina中的Schnorr signature Min ...

最新文章

  1. 管理 Oracle Solaris ZFS 存储池网址
  2. 走火入魔 | 暑期电子设计课程学生们的作品
  3. Linux编程网络通信
  4. html实战例子: 课程表
  5. c语言 int top,顺序栈(C语言,静态栈)
  6. Linux系统下GitLab服务的的搭建
  7. Badboy自动化测试工具11 导出脚本用于Jmeter并发测试
  8. oracle用户管理实例
  9. android高德地图气泡,[置顶] Android-高德地图-显示气泡框
  10. 全系统动态污点分析-概要
  11. php读取excel存入mysql数据库_PHP将Excel内容导入mysql数据库
  12. gpu云服务器运行游戏_追求高性能游戏,高帧高画质运行,你的手机需要多强的GPU才够?...
  13. laravel路由基本知识
  14. 数据分析 第三篇:数据特征分析(分布分析+帕累托分析)
  15. Linux下C编程入门(2)
  16. 贝叶斯网络是神经网络吗,贝叶斯网络和神经网络
  17. 雄迈XM530AI / 550AI模组相关参数介绍
  18. 计算平均指令时间_上海原油期货将推出TAS指令
  19. 2009级 华中科技大学 计算机学院 本科生名单,华中科技大学2009届本科生.doc
  20. 已解决_mssql.MSSQLDatabaseException: (2627, b“Violation of PRIMARY KEY constraint ‘PK__TM_DATA___7BDCF2

热门文章

  1. PCIE总线驱动学习笔记1
  2. 利用history.pushState实现前端路由
  3. ubuntu备份系统,制作可以启动的 ISO
  4. 【JS】JavaScript快速介绍
  5. Navicat连接数据库MySQL报错2059
  6. Windows11虚拟内存配置
  7. 自定义ToolBar的使用
  8. xtu oj 1337 Clockwise Or Unclokwise
  9. POI读取Excel文件数据
  10. Java实现 LeetCode 79 单词搜索