密码学中的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

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值