当前位置 博文首页 > zmrlinux:Coin flipping and bit commitment

    zmrlinux:Coin flipping and bit commitment

    作者:[db:作者] 时间:2021-09-10 16:42

    原文教材:

    ? ? ? ? Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

    ? ? ? ? 该书项目地址(可以免费获取):http://toc.cryptobook.us/

    ? ? ? ? 系列博客为对该教材的学习笔记(只包括我认为重要的东西)


    Coin flipping?

    掷硬币协议

    ? ? ? ?掷硬币协议描述的是这样一种协议,如下图所示,当A与B企图对某一时间达成一种共识,例如A和B去电影院观看电影,但是A与B想要看不同的电影,直观上,A和B可以当场抛投一枚硬币来决定到底去看哪一部电影。但是,如果A和B并不在当面,而是作为通信的双方,如何实现抛硬币协议将采用更为复杂的方法。

    ? ? ? ? ? ? ? ? ??

    ? ? ? ?一个简单的两方抛硬币协议如下:

    ? ? ? ?

    ? ? ? ? ?第一步:Bob 选择一个随机比特b0,生成承诺信息c = com(b0) 并发送给Alice. 生成解承诺信息s并保存在本地。

    ? ? ? ? ?第二步:Alice 随机选择一个比特b1, 此时要求承诺信息保证不能被学习到任何关于b0的信息,不然Alice会根据b0的信息适应性产生b1,达到利于自己的目的。

    ? ? ? ? ?第三步:Bob给Alice传送解承诺信息,然后根据协议生成最终结果,这里要求Bob不能根据获取的Alice输入,修改解承诺信息导致Alice解承诺的值与最初承诺值不同。

    bit commitment

    ? ? ? 为了实现上述的掷硬币协议,可以使用一种基本的密码学原语“比特承诺协议”。比特承诺协议描述如下图所示,参与方A选择一个自己要承诺的比特b,然后对b进行承诺得到承诺信息c,并将承诺信息c发送给参与方B。参与方A可以将解承诺信息s发送给参与方B。参与方B可以根据收到的解承诺信息对A的承诺比特进行验证。

    ? ? ? 这要求该协议必须满足两个基本属性:

    ? ? ?(1)隐藏性(Hiding):承诺信息c 必须能完全隐藏b的信息,其他实体不能从承诺信息c中获取任何关于承诺比特b的信息。

    ? ? ?(2)捆绑性(Binding):参与方A的不能将承诺信息解为其他值。

    ? ? ? 一个比特承诺协议的实例:

    ? ? ??

    ? ? Tips: 由于伪随机数生成器PRG是安全的,所以Alice无法通过G(s)学习到s。所以不论Bob承诺b0为多少,Alice 不能从c获取任何有益破解s的内容。又由于,PRG是安全的,所以Bob不能找出G(s`) = G(s) 或者 G(s`) = G(s) XOR r。

    ?

    cs