假设Alice知道秘密A,Bob知道秘密B。如果Bob告诉Alice秘密B,Alice就告诉Bob秘密A;如果Alice告诉Bob秘密A,Bob就告诉Alice秘密B。他们都想知道对方的秘密,但是在谁先说出自己知道的秘密的问题上他们出现了矛盾。他们都担心在说出自己知道的秘密后,对方不再说出他知道的秘密。因此,要设计一个协议,这个协议允许Alice和Bob同时进行通信,过程如下。
(1)Alice用一个随机的DES密钥加密她的消息,并把它发送给Bob。
(2)Alice产生n对DES密钥。每对密钥的第一个密钥是随机产生的;每对密钥的第二个密钥是第一个密钥和消息加密密钥的异或。
(3)Alice用她的2n个密钥的每一个加密一份假消息。
(4)Alice把所有加密消息都发送给Bob,保证他知道哪些消息是哪一对的哪一半。
(5)Bob产生n对随机DES密钥。
(6)Bob产生一对指明一个有效收条的消息。比较好的消息可以是“这是我收条的左半”和“这是我收条的右半”,再附加上某种类型的随机比特串。他做了n个收条对,每个都编上号。如同先前的协议一样,如果Alice能产生一个收条的两半(编号相同)和她的所有加密密钥,这个收条被认为是有效的。
(7)Bob用DES密钥对加密他的每一对消息,第i份消息用第i个密钥,左半消息用密钥对中的左密钥,右半消息用密钥对中的右密钥。
(8)Bob把他的消息对发送给Alice,保证Alice知道哪些消息是哪一对的哪一半。(www.daowen.com)
(9)Alice和Bob利用不经意传输协议发送给对方每个密钥对。这就是说,对n对中的每一对而言,Alice或者送给Bob用来加密左半消息的密钥,或者送给Bob用来加密右半消息的密钥。Bob也同样这么做。他们可以或者交替传送这些一半,或者一方发送n个,然后另一方再发送n个,这都没有关系。现在Alice和Bob都有了每个密钥对中的一个密钥,但是都不知道对方有哪些一半。
(10)Alice和Bob都解密他们能解的那些一半,并保证解密消息是有效的。
(11)Alice和Bob送给对方所有2n个DES密钥中的第一个比特(如果他们担心窃听者可能会读到这个邮件消息,那么他们应当对相互的传输加密)。
(12)Alice和Bob对所有2n个DES密钥中的第二比特、第三比特都重复第(11)步,如此继续下去,直到所有DES密钥的所有比特都传送完。
(13)Alice和Bob解密消息对中的余下一半。Alice有了一张来自Bob的有效收条,而Bob能异或任一密钥对以得到原始消息加密密钥。
(14)Alice和Bob交换在不经意传输协议期间使用的私钥,同时每一方验证另一方没有进行欺骗。
Alice使用A作消息完成第(1)至第(4)步。Bob用B作他的消息完成类似的步骤。Alice和Bob在第(9)步中执行不经意传输,在第(10)步中解密他们能解密的那些一半消息,并在第(11)步和第(12)步中处理完那些迭代。如果要防范窃听,他们应当加密他们的消息。最后,Alice和Bob解密消息对余下的一半,并异或任一密钥对来得到原始消息加密密钥。
这个协议使Alice和Bob可以同时交换秘密,但没有谈到所交换秘密的质量。Bob将得到Alice送给他的任何秘密。Alice可以允诺给Bob一种迷宫的解法,但实际上送给他一张北京地铁交通图。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。