美文网首页密码协议
密码协议--总结三

密码协议--总结三

作者: CPinging | 来源:发表于2018-06-11 10:56 被阅读53次

这次接上一次总结的内容。

下面讲述一下比特位承诺

        简单讲述比特位承诺就是:A和B运用一系列的手段来博弈,在相对公平的条件下来博弈出B是否猜对了某个值。(我感觉就比较像复杂一点的石头剪刀布)

 参照:

–Decidewho goes first in a game

–IfBob guesses correctly, he goes

–Alicepicks a bit (0 or 1) and locks it in a box

–Bobguesses a bit–Thebox is opened to see if he is right

        在“游戏”过程中,我们要保证1,A无法在B猜测之后改变值。2,B不知道A设定的值时多少。

下面介绍几种位比特承诺协议:

一、使用对称加密的方法

1,B给A一个随机数R。

2,A用秘钥K对比特(b与R)进行加密并发送给B。

3,B进行猜测,然后A把K发送给B。

4,B用K对消息进行解密,并验证是否是自己发送的随机数B,并得到承诺b。

二、使用哈希函数

1,A给B传递  H(R1, R2,b),  R1---其中R1  R2为两个随机数,b为承诺位

2,当B进行猜测后,A向B发送R1, R2, b(原始值)。然后B就可以对其原始值进行哈希处理,并比较其是否与1中的值相等。

这个协议的安全性在于,A不能找到其他的可能,使得    H(R1, R2’,b’) = H(R1, R2,b)

三、如何让“投硬币游戏”更加公平?

        这个内容其实挺有趣的,但是我暂时也不知道它的实用性在什么地方。

简单来说,A与B互不信任。所以他们俩都不想让对方投这枚硬币。

所以他们商量,A与B互相想一个随机数(0或1),然后进行Xor操作,也就是意味着,只要他们其中任意个随机数是不可测的,那么这个协议就相对公平。

之后我们就可以事先规定,如果结果的是1,那就是A胜出,是0那就是B胜出。

        之后内容还包括使用one-way算法的承托方案、使用公钥的承诺方案。

哈希的那个算法比较简单,所以我只放上图。

one-way fun

        下面是使用公钥进行处理的算法协议。

        简单介绍来说,这个算法就是A生成两个数,然后让B选择。类似于投硬币的形式,比较公平。

公钥协议

这里放入具体的算法。

1,A用公钥加密消息M1和M2,并给B传过去。

2,B选择其中一个,并用B的公钥加密1中的密文。发给A

3,A用自己的私钥将2中的密文解密,得到的内容回传给B。(本来是两层加密,现在变成了一层)

4,B用私钥解密,得到明文(随机数+M)。并将明文传给A让其进行验证。

而上述协议能提供给我们什么启发呢?

下面我们看一个匿名秘钥分发协议--AnonymousKey Distribution。

        问题是:我们引入一个server端,但是我们如何通过server来选择秘钥,并保证server端也无法知道我们的具体秘钥呢?

        这就要使用上述公钥密码来进行。我们知道:  DK1(EK2(EK1(M)))=EK2(M),所以我们可以如下设计协议:

匿名秘钥分发协议

1,KDC使用流密码不断生成秘钥,并用KDC的公钥对生成的密码加密,并放到网络中。

2,A随机选择秘钥,并用Ka进行加密(A的公钥)然后传给KDC。

3,KDC拿到2中的密文后用私钥解开一层,在回传给A。

4,A用其私钥解密得到明文秘钥。

下面我们介绍一下不经意传输--oblivious transfer。

        简单介绍一下此内容的概念,不经意传输意思是我有一个秘密,但是我不能全部给你,我只能给你我所有秘密的一部分。这个时候我应该如何传递?

Rabin 的OT协议

这个协议的大致思想为:我生成一个大素数N,并给你1/4个剩余,而四个剩余中只有两个是可以分解这个大素数N。例如:这个商品价值100元,而你只给我了50元,那么我不能把消息完全给你,只给你百分之五十的概率去获取消息。

1,A生成两个素数pq,计算N=p*q并发送N给B。

2,B在0~n中选择一个数字x,并计算 a = x^2 mod n并发给A。

3,A计算a的剩余(因为a是x的平方,所以剩余共有四个(x1,x2,x3,x4),并随机选择一对发给B。

4,B用 (x+b)(x-b)=0 mod n来验证传过来的剩余是否合理。而又因为B已知其中的两个剩余,所以B只有一半的概率能获得未知的剩余对。

下面我们讲述一个比较实用的协议。

倘若A要向B发送部分秘密,那协议应该怎么做呢?

1,A生成两个公私钥对E1、E2,并把两个公钥发给B。

2,B生成一个对称秘钥K,然后随机选取任意一个公钥并加密秘钥K,发送给A。

3,此时A并不清楚B选择哪个公钥,所以他干脆使用两个私钥分别对2中的密文解密得到K,K‘。(此时K为真正的秘钥,用其加密的内容B可以解密,而K’加密的内容B无法解密)

4,之后A使用K与K‘分别加密两个message,传给B。

5,B用K解密,只能得到其中一条。协议达到了随机传递部分消息的作用。并且保证了公平性。

不经意传送协议

相关文章

网友评论

    本文标题:密码协议--总结三

    本文链接:https://www.haomeiwen.com/subject/rfpqeftx.html