MPC系列-零知识证明和比特承诺

零知识证明:

          背景:交互式证明由证明者和验证者俩方参与,证明者掌握某一秘密,证明者需要让验证者相信自己掌握该秘密。验证者根据证明者每一轮回复的信息决定是否相信证明者。

           零知识证明(Zero-Knowledge Proof):证明者在不让验证者掌握秘密信息的前提下,使得验证者确信自己确实掌握了这些信息。也就是验证者除了知道证明者能证明某一事实外,不能得到其他任何信息。

           举例:

1.抛硬币:Alice宣称知道一个能够对抛硬币正反面的诀窍。Bob要验证Alice的宣称,只需要当着Alice的面抛硬币。(

我们都知道猜中一次的概率是1/2.2次是1/4.....那无数次呢。如果Alice全猜对了bob就可以相信了)

2.迷宫

:

C和D之间有一扇需要秘密口令才能打开的门,证明者要向验证者证明自己能够打开这扇门,又不想泄露秘密口令。可以采用如下所述的证明协议:1. 验证者在协议开始时停留在位置 A   2. 证明者一直走到迷宫内部的位置 C 或者位置 D 处   3. 在证明者消失之后,验证者走到位置 B 处,然后命令证明者从某个出口处出来  4. 证明者根据验证者的命令,从对应出口处出来  5. 证明者和验证者重复以上过程𝑛轮 。只有证明者知道口令,每次验证者要求证明者从指定路口出来时,证明者才能根据命令打开门穿过去或者原路返回,从指定路口出来。

Schnorr零知识证明协议: 

      令𝐺 =<𝑔>是𝑞阶群,𝑞为大素数,证明者拥有秘密知识𝑥 ∈𝑍𝑛,并公开系统公钥𝑦=g的x次方 。

1. 证明者产生一个随机数𝑢∈𝑍𝑛,计算𝑎=𝑔𝑢并发送给验证者。2. 验证者Bob产生一个随机数𝑐∈{0,1}并发送给证明者Alice。

3. 如果𝑐=0,证明者计算𝑠=𝑢;如果𝑐=1,证明者计算𝑠=𝑢+𝑥。之后证明者将𝑠发送给验证者。

4. 若𝑐=0,证明者验证𝑔𝑠=𝑎;如果𝑐=1,证明者计算𝑔𝑠=𝑎𝑦。

 

比特承诺:

               承诺阶段:承诺者向验证者承诺秘密值x,并向验证者发送对验证者保密的秘密值𝑥。

               揭示阶段:承诺者向验证者揭示第一个阶段承诺的确实是𝑥,同时验证者得知秘密值𝑥的内容。

      介绍一个基于强单向函数(哈希函数)的承诺方案:

               承诺阶段:1. Alice产生两个随机数𝑟1,𝑟2。2 Alice将随机数𝑟1,𝑟2与自己将要承诺的消息M进行连接,记为𝑟1,𝑟2,𝑚。3. Alice计算𝑟1,𝑟2,𝑚的哈希值𝑐=𝐻𝑎𝑠ℎ(𝑟1,𝑟2,𝑚),并将𝑐和𝑟1发送给Bob,作为Alice对消息m的承诺。 

              揭示阶段:1. Alice将𝑟1,𝑟2,𝑚告知Bob   2. Bob 计算𝑟1,𝑟2,𝑚的哈希值𝑐′,并将𝑐′的值与𝑐进行比较,如果匹配,则承诺有效。 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值