网站快速盈利免费网站收录入口
网站快速盈利,免费网站收录入口,长春h5建站,ie不支持wordpresshttps://link.springer.com/article/10.1007/s42452-019-0989-z
描述了构建零知识区间证明#xff08;ZKRP#xff09;的不同策略#xff0c;例如2001年Boudot提出的方案#xff1b;2008年Camenisch等人提出的方案#xff1b;以及2017年提出的Bulletproofs。
Introducti…https://link.springer.com/article/10.1007/s42452-019-0989-z
描述了构建零知识区间证明ZKRP的不同策略例如2001年Boudot提出的方案2008年Camenisch等人提出的方案以及2017年提出的Bulletproofs。
Introduction
总结并比较了保护链上私人信息的两类方式引出主旨ZKRP
可信执行环境TEE如英特尔SGX技术。核心思想是任何私人数据在区块链上必须以加密形式出现。只有底层加密密钥的所有者才能解密它。对这些信息的验证必须在TEE系统中进行其中可以嵌入加密密钥。因此私人数据只有在解密后才可见这发生在受控环境内。但易受分支预测和侧信道攻击的影响。零知识证明ZKP进一步ZKRP证明一个秘密整数属于某个区间。
ZKRP的用例
ZKRP的应用案例
ZKRP可以用来证明某人超过18岁了解你的客户(KYC)抵押风险评估。评级和投资评级。与使用ZKRP k 1次的直接解决方案相比可能存在更有效的构造。电子投票安全电子拍卖如获胜者支付第二高的出价、采购
在DLT和区块链的具体场景中重要的应用:
Confidential Transactions (CT)利用Pedersen承诺隐藏交易金额。用ZKRP验证交易金额的正确性Provisions是一种协议它允许比特币交易所证明自己是有偿付能力的通过显示每个账户都有正余额并且还显示交易所的资金数量大于或等于系统中所有个人账户余额的总和。
ZKP
定义非交互式零知识(Non-Interactive Zero Knowledge, NIZK)证明方案由算法Setup、Prove和Verify定义: p a r a m s S e t u p ( λ ) params Setup(\lambda) paramsSetup(λ) p r o o f P r o v e ( x , w ) proof Prove(x,w) proofProve(x,w) b V e r i f y ( p r o o f ) bVerify(proof) bVerify(proof)
Fiat–Shamir 启发式将 interactive ZKP转换成NIZK。 缺点是它使密码系统在随机oracle模型(ROM)下是安全的。
零知识证明方案具有以下性质
Completeness给定一个满足实例 x x x的见证 w w w得到 V e r i f y ( P r o v e ( x , w ) ) 1 Verify(Prove(x, w)) 1 Verify(Prove(x,w))1。Soundness如果见证 w w w不满足 x x x则概率 P r o b [ V e r i f y ( P r o v e ( x , w ) ) 1 ] Prob[Verify(Prove(x, w)) 1] Prob[Verify(Prove(x,w))1]足够低。Zero Knowledge 给定证明者和验证者之间的交互我们称这种交互为视图。为了捕获零知识属性使用多项式时间模拟器来生成模拟视图该模拟器可以访问提供给验证者的相同输入(包括其随机性)但无法访问证明者的输入。如果模拟视图与原始视图具有相同的分布则我们说ZKP方案具有完全零知识。如果这些分布在统计上接近我们说ZKP方案具有统计零知识。如果这些分布没有多项式时间区分符我们说ZKP方案具有计算零知识。
Zero knowledge range proofs
提交秘密的不同方式对应不同的ZKPR实现策略
提交整数
平方分解。核心是将秘密元素分解为平方和。基于签名的。以盲的方式证明prover知道一个关于秘密的签名。首先区间内的所有元素都被签名然后证明者知道签名的证据意味着这个整数属于预期的区间。
二进制表示
多基分解。 将秘密分解为bit表示通过布尔运算证明它属于某个区间。不是bit而是u进制表示多基分解允许构建对于小秘密情况下表现良好的ZKRP方案。 两层同态承诺。 关键思想是使用双线性配对对Pedersen承诺的向量进行承诺。例如给定配对 e : G 1 × G 2 → G 3 e: \mathbb G_1\times \mathbb G_2 → \mathbb G_3 e:G1×G2→G3和元素 v u 1 … u N ∈ G 2 vu_1…u_N ∈ \mathbb G_2 vu1…uN∈G2可以通过选择随机的 t ∈ G t ∈ \mathbb G t∈G并计算 C e ( t , v ) ∏ i 0 N e ( c i , u i ) C e(t, v) ∏ᴺᵢ₌₀ e(cᵢ, uᵢ) Ce(t,v)∏i0Ne(ci,ui)来对向量 [ c 1 … c N ] ∈ G 1 N [c_1…c_N] ∈\mathbb G_1^N [c1…cN]∈G1N进行承诺。 Bulletproofs 以上提到的所有方案都依赖于一个可信的设置这在加密货币的背景下可能不太理想。例如如果对手能够规避这个可信设置他将能够凭空创造货币。Bulletproofs的提出旨在通过使用内积证明实现ZKRP并以非常小的证明大小为特点。
平方分解构造
实现Boudot于2001年提出的ZKRP所需的算法。这个构建过程需要一些基本组件比如零知识证明两个承诺隐藏着相同的秘密以及零知识证明秘密是一个完全平方数。
两个承诺隐藏相同秘密的零知识证明 P K S S { x , r 1 , r 2 ∶ E g 1 x h 1 r 1 ∧ F g 2 x h 2 r 2 } PK_{SS} \{x, r_1, r_2∶E g_1^xh_1^{r_1} ∧ F g_2^xh_2^{r_2}\} PKSS{x,r1,r2∶Eg1xh1r1∧Fg2xh2r2} g 1 D h 1 D 1 E − c g 1 ω c x h 1 η 1 c r 1 g 1 − c x h 1 − c r 1 Ω 1 g_1^Dh_1^{D_1}E^{-c}g_1^{\omegacx}h_1^{\eta_1cr_1}{g_1^{-cx}h_1^{-cr_1}}\Omega_1 g1Dh1D1E−cg1ωcxh1η1cr1g1−cxh1−cr1Ω1
秘密是一个完全平方数的零知识证明 P K S x , r 1 ∶ E g x 2 h r PKS {x, r_1 ∶ E g^{x^2} h^r} PKSx,r1∶Egx2hr 注意 E F x h r 3 g x 2 h r 2 x h r 1 − r 2 x g x 2 h r 1 EF^xh^{r_3}g^{x^2}h^{r_2x}h^{r_1-r_2x}g^{x^2}h^{r_1} EFxhr3gx2hr2xhr1−r2xgx2hr1 调用的参数 g 1 F , h 1 h 2 h , g 2 g g_1F,h_1h_2h,g_2g g1F,h1h2h,g2g
一个秘密属于一个更大区间的零知识证明 P K L I { x , r ∶ E g x h r ∧ x ∈ [ − 2 t ℓ b , 2 t ℓ b ] } PK_{LI} \{x, r ∶ E g^xh^r ∧ x ∈ [−2^{tℓ}b, 2^{tℓ}b]\} PKLI{x,r∶Egxhr∧x∈[−2tℓb,2tℓb]} a proof with tolerance P K W T x , r : E g x h r ∧ x ∈ [ a − θ , b θ ] , θ 2 t l 1 b − a PK_{WT} {x, r :E g^xh^r ∧ x ∈ [a − \theta, b \theta]},\theta 2^{tl 1}\sqrt{b − a} PKWTx,r:Egxhr∧x∈[a−θ,bθ],θ2tl1b−a Boudot在2001年提出的ZKRP方案。 Signature‑based construction\
成员关系证明
方案依赖于Boneh-Boyen数字签名公私钥对 x ∈ R Z p y g x , σ g 1 / ( x m ) x\in_R\mathbb Z_pyg^x,\sigmag^{1/(xm)} x∈RZpygx,σg1/(xm)验证 e ( σ , y g m ) e ( g , g ) e(\sigma,yg^m)e(g,g) e(σ,ygm)e(g,g)q-Strong Diffie-Hellman assumption 验证者最初为目标集合S中的每个元素计算数字签名。 证明者通过将其提升到随机选择的指数v ∈ ℤp对该数字签名进行盲化使得确定签名的哪个元素是计算上不可行的。 C c h z γ g z δ g δ c h γ c h m − γ c g s − δ c D C^ch^{z_\gamma}g^{z_\delta}g^{\delta c} h^{\gamma c}h^{m-\gamma c}g^{s-\delta c}D Cchzγgzδgδchγchm−γcgs−δcD 这个是用挑战c和所使用的随机值生成的response z δ , z γ z_\delta,z_\gamma zδ,zγ的验证 e ( V , y ) c ⋅ e ( V , g ) − z δ ⋅ e ( g , g ) z τ e ( V , g ) x c ⋅ e ( V , g ) − s δ c ⋅ e ( g , g ) t − τ c e ( V , g ) − s ⋅ e ( g 1 / ( x δ ) , g ) τ ( x c δ c ) ⋅ e ( g , g ) t − τ c a e(V,y)^c\cdot e(V,g)^{-z_\delta}\cdot e(g,g)^{z_\tau}e(V,g)^{xc}\cdot e(V,g)^{-s\delta c}\cdot e(g,g)^{t-\tau c}e(V,g)^{-s}\cdot e(g^{1/(x\delta)},g)^{\tau(xc\delta c)}\cdot e(g,g)^{t-\tau c}a e(V,y)c⋅e(V,g)−zδ⋅e(g,g)zτe(V,g)xc⋅e(V,g)−sδc⋅e(g,g)t−τce(V,g)−s⋅e(g1/(xδ),g)τ(xcδc)⋅e(g,g)t−τca
Range proof 将秘密 δ \delta δ分解成以u为底 如果每个 δ j \delta_j δj 属于区间 [ 0 , u ) [0, u) [0,u)那么我们有 δ ∈ [ 0 , u ℓ ) \delta \in [0, u^\ell) δ∈[0,uℓ)。可以很容易地将ZKSM算法调整为执行此计算。 为了获得任意范围 [ a , b ) [a, b) [a,b) 的零知识范围证明先证明 δ ∈ [ a , a u ℓ ) \delta \in [a, a u^\ell) δ∈[a,auℓ)和 δ ∈ [ b − u ℓ , b ) \delta \in [b - u^\ell, b) δ∈[b−uℓ,b)使用算法15两次。换句话说需要证明 δ − b u ℓ ∈ [ 0 , u ℓ ) \delta - b u^\ell \in [0, u^\ell) δ−buℓ∈[0,uℓ)和 δ − a ∈ [ 0 , u ℓ ) \delta - a \in [0, u^\ell) δ−a∈[0,uℓ)。
Bulletproof
详见https://blog.csdn.net/jiongxv/article/details/124133111或原文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85271.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!