Efficient Protocols for Set Membership and Range Proof 学习笔记

1. 引言

Camenisch等人2008年发表在AsiaCrypto的论文《Efficient Protocols for Set Membership and Range Proof》。

相关代码见:

本论文针对的场景为:

  • public info:commitment C C C,discrete set Φ = { ϕ 1 , ϕ 2 , ⋯   , ϕ n } \Phi=\{\phi_1,\phi_2,\cdots, \phi_n\} Φ={ϕ1,ϕ2,,ϕn}
  • private info: σ \sigma σ
  • relation: C = C o m ( σ ) C=Com(\sigma) C=Com(σ) σ ∈ Φ \sigma\in\Phi σΦ【换种方式可表达为: C = C o m ( ϕ 1 ) C=Com(\phi_1) C=Com(ϕ1) C = C o m ( ϕ 2 ) C=Com(\phi_2) C=Com(ϕ2) C = C o m ( ϕ 3 ) C=Com(\phi_3) C=Com(ϕ3) …… 或 C = C o m ( ϕ n ) C=Com(\phi_n) C=Com(ϕn)。】

其中discrete set Φ \Phi Φ可为a list of cities or clubs,也可为整数范围如 [ 1 , 2 20 ] [1,2^{20}] [1,220]

若采用基于RSA假设的commitment scheme,则仅需要在Prover和Verifier之间交互a constant number of RSA-group elements。
若采用基于bilinear group假设的commitment scheme,之前的研究成果需要 O ( k ) O(k) O(k)个group elements,其中 k k k为security parameter。

基于bilinear group假设, Φ \Phi Φ为整数范围时,本文提供的set-membership proof算法,仅需 O ( k log ⁡ k − log ⁡ log ⁡ k ) O(\frac{k}{\log k-\log\log k}) O(logkloglogkk) 个group elements。【当 Φ \Phi Φ为整数范围时,set-membership proof也可称为range proof。】

1.1 主要创新

可使用 Σ \Sigma Σ-protocol来进行OR证明,具体可参见 基于Sigma protocol实现的零知识证明protocol集锦 2.3节“Protocol 3. Disjunction (OR) of discrete logs”,其proof length 与 条件数 n n n 呈正比。

本文分别基于Strong RSA assumption 和 bilinear group assumption 构建的proof size为 O ( 1 ) O(1) O(1),与条件数 n n n 无关。

1.1.1 range proof

range proof为set membership proof的特例情况,set Φ \Phi Φ对应为a range [ a , a + 1 , a + 2 , ⋯   , b ] [a,a+1,a+2, \cdots, b] [a,a+1,a+2,,b](可表示为 [ a , b ] [a,b] [a,b])。
若基于Strong RSA assumption,则已有efficient proofs的研究成果。但是当range范围较小 或 同一range范围被使用多次时,本文提供的算法效率更高,优于8~10倍。

若不想基于Strong RSA assumption,可改为:Prover对其 secret s s s 的所有 k k k个bits都进行commit,然后证明这 k k k个commitments all encode either a 0 0 0 or a 1 1 1,以及证明这些commitments确实是commit to all the bits of s s s。这样,Verifier即可信任 s s s [ 0 , 2 k + 1 − 1 ] [0,2^{k+1}-1] [0,2k+11]范围内,因为只有 k k k个commitments。这种方式可推广为任意范围,相应的proof size为 O ( k ) O(k) O(k) 个group elements。

也可不采用二进制,而选择更优的 u u u进制来表示secret s s s,然后对每个digit进行commit生成 ℓ \ell 个commitments,再证明 s ∈ [ 0 , u ℓ ] s\in[0,u^\ell] s[0,u]。不过,采用 Σ \Sigma Σ-protocol的 OR proof 来证明每个commitment 对应的digit为 [ 0 , u ) [0,u) [0,u),相应的proof size 为 O ( u ) O(u) O(u)。因此总的proof size仍为 O ( u ⋅ ℓ ) O(u\cdot \ell) O(u),并未减少proof size。

本文的算法在 Σ \Sigma Σ-protocol的基础上进行了改进,相应的proof size为 O ( u + ℓ ) O(u+\ell) O(u+)。通过选择合适的 u u u ℓ \ell 值,可实现proof size为 O ( k log ⁡ k − log ⁡ log ⁡ k ) O(\frac{k}{\log k-\log\log k}) O(logkloglogkk)

2. 相关定义

  • set membership proof 以及 range proof定义:
    在这里插入图片描述
  • bilinear group computational assumption定义:
    在这里插入图片描述在这里插入图片描述
  • Strong Diffie-Hellman Assumption(q-SDH假设):
    在这里插入图片描述

3. 基于签名的set membership

受Jan Camenisch等人2007年论文《Simulatable adaptive oblivious transfer》中的oblivious transfer不经意传输协议启发,核心思想为:

  • Verifier发送给Prover a signature of every element in the set Φ \Phi Φ。【可在其它membership proofs中复用】
  • 然后,Prover收到a signature on the particular element σ \sigma σ σ \sigma σ对应的commitment为 C C C
  • 然后,Prover对收到的签名进行blind,运行a proof of knowledge that she possesses a signature on the committed element。

以上proof的communication complexity取决于 Φ \Phi Φ中的元素数——因为一开始Verifier就需要发送 a signature of every element in the set Φ \Phi Φ,剩下的communication complexity为a constant number of group elements。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值