密码学中的sigma-protocol

1. sigma-protocol的定义

在论文《On Σ-protocols》中,有如下定义:

  • relation DL,其中的 w w w可称为a witness for x x x:
    D L = { ( x , w ) ∣ x = ( p , q , g , h ) , o r d ( g ) = o r d ( h ) = q , h = g w } DL=\{(x,w)|x=(p,q,g,h), ord(g)=ord(h)=q,h=g^w\} DL={(x,w)x=(p,q,g,h),ord(g)=ord(h)=q,h=gw}

其中, p , q p,q p,q为素数, g , h ∈ Z p ∗ , w ∈ Z q g,h\in Z_p^*,w\in Z_q g,hZp,wZq,R为二进制relation,R表示为 { 0 , 1 } ∗ × { 0 , 1 } ∗ \{0,1\}^*\times \{0,1\}^* {0,1}×{0,1}
满足上面条件的 ( x , w ) ∈ R (x,w)\in R (x,w)R成立。

以上, x x x对于Prover P和Verifier V均可见,为public input,而满足 ( x , w ) ∈ R (x,w)\in R (x,w)R w w w为Prover P的private input,对Verifier V不可见。
场景描述为, p p p为素数, q q q p − 1 p-1 p1的最大素数因子, g 为 Z p ∗ g为 Z_p^* gZp中order为 q q q的元素,某 w w w仅P可知, h = g w   m o d   p h=g^w\ mod\ p h=gw mod p x = ( p , q , g , h ) x=(p,q,g,h) x=(p,q,g,h)对P/V均可见,为public input。在实际应用时, p , q p,q p,q通常长时间固定不变,关于 p , q p,q p,q的素数性V可以鉴定一次即可,不需要每次都鉴定。

详细的流程分为三大步:

  • 1) P选择随机数 r ∈ Z q r\in Z_q rZq r r r仅P知,对V不可见,P计算 a = g r   m o d   p a=g^r\ mod\ p a=gr mod p,P将 a a a值发送给V;
  • 2) V选择 t − b i t t-bit tbit的随机数challenge e ∈ Z 2 t e\in Z_{2^t} eZ2t(此处的 t t t为固定的,且 2 t < q 2^t<q 2t<q),V将 e e e值发送给P;
  • 3) P计算 z = r + e w   m o d   q z=r+ew\ mod\ q z=r+ew mod q,P将 z z z值发送给V,V判断 g z ? = a h e   m o d   p g^z?=ah^e\ mod\ p gz?=ahe mod p是否成立,若成立,则V接受认为P确实知道正确的 w w w值(满足 h = g w   m o d   p h=g^w\ mod\ p h=gw mod p)。

以上流程错误判断的概率为 1 2 t = 2 − t \frac{1}{2^t}=2^{-t} 2t1=2t

Sigma-protocol的定义如下:
在这里插入图片描述
上面定义的第二条,指的是:若Prover P*对于两个不同的challenges e , e ′ , e ! = e ′ e,e',e!=e' e,e,e!=e,则有相应的 g z ′ = a h e ′ , g z = a h e g^{z'}=ah^{e'},g^z=ah^e gz=ahe,gz=ahe,两者相除有 g z − z ′ = h e − e ′   m o d   p g^{z-z'}=h^{e-e'}\ mod\ p gzz=hee mod p,当 e − e ′ ! = 0 e-e'!=0 ee!=0时,有 h = g ( z − z ′ ) ( e − e ′ ) − 1 = g w   m o d   p h=g^{(z-z')(e-e')^{-1}}=g^w\ mod\ p h=g(zz)(ee)1=gw mod p,从而有 w = ( z − z ′ ) ( e − e ′ ) − 1   m o d   q w=(z-z')(e-e')^{-1}\ mod\ q w=(zz)(ee)1 mod q

上面定义的第三条,指的是:仿真时,可选择随机数 z ∈ Z p ∗ , e ∈ Z q z\in Z_p^*,e\in Z_q zZp,eZq,计算 a = g z h − e   m o d   p a=g^zh^{-e}\ mod\ p a=gzhe mod p,从而使得流程中第三步Verifier的验证可通过。

2. sigma-protocol的作用

sigma-protocol可用于知识证明及OR证明(OR-proof)。

关于OR证明,在论文《Proof Systems for General Statements about Discrete Logarithms》中的Example 3是一个OR-proof举例,设计巧妙。
在这里插入图片描述
在这里插入图片描述

参考资料:
[1] 论文《On Σ-protocols
[2] https://en.wikipedia.org/wiki/Sigma_Protocol
[3] https://www.youtube.com/watch?v=nwsmG3S9wIc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值