不经意传输协议:Alice 如何发送两条消息,Bob 仅接收其中一条?
在这个不经意传输协议中,Alice 发送给 Bob 两份消息中的一份,而 Bob 只能收到其中一条,并且 Alice 不知道是哪一份。
(1) Alice 产生两个公钥/私钥密钥对,总共四个密钥。她将两个公开密钥发送给 Bob。
(2) Bob 选择一个对称算法 (如 DES) 密钥。他选择 Alice 的一个公开密钥,并用它加密他的 DES 密钥。他将这个加密的密钥发送给 Alice,但没有告诉她他用的是哪个公开密钥来加密 DES 密钥。
(3) Alice 解密 Bob 的密钥两次,每次用一个她的私钥来解密 Bob 的密钥。在一种情况下,她使用了正确的密钥并成功地解密了 Bob 的 DES 密钥。在另一种情况下,她使用了错误的密钥,只是产生了一堆毫无意义的比特,看起来像一个随机的 DES 密钥。由于她不知道正确的明文,所以她不知道哪个是正确的。
(4) Alice 加密她的两份消息,每一份用一个不同的在步骤 (3) 中产生的 DES 密钥 (一个真实的和一个毫无意义的),并将两份消息都发送给 Bob。
(5) Bob 收到一份用正确 DES 密钥加密的消息和一份用无意义 DES 密钥加密的消息。当 Bob 用他的 DES 密钥解密每一份消息时,他能读其中之一,另一份在他看起来是毫无意义的。
现在,Bob 有了 Alice 的两份消息中的一份,而 Alice 不知道他能读懂哪一份。遗憾的是,如果协议到此为止,Alice 可能进行欺骗。另一个步骤必不可少。
(6) 在协议完成并且知道了两种可能的传输结果后,Alice 必须将她的私钥给 Bob,以便他能验证她没有进行欺骗。毕竟,她可以用步骤 (4) 中的两个密钥加密同一消息。这时 Bob 就可以弄清楚第二份消息。
因为 Alice 无法知道两个 DES 密钥中的哪一个是真的,所以这个协议能防止 Alice 的攻击。她加密两份消息,但 Bob 只能恢复出其中的一个 - 直到步骤 (6)。它同样能防止 Bob 的攻击,因为在步骤 (6) 之前,他没有办法得到 Alice 的私钥来确定加密另一份消息的 DES 密钥。
在第六步中,Bob 能否知道两份消息?
是的,在第六步中,Bob 可以知道两份消息。 因为在第四步中,Alice 用两个不同的 DES 密钥分别加密了两份消息,并发送给 Bob。Bob 已经成功解密了其中一份消息,而在第六步中,Alice 将她的私钥给了 Bob,以便他验证她没有欺骗。Bob 现在可以用 Alice 的私钥解密另一份消息,从而得到两份消息的内容。
原文地址: http://www.cveoy.top/t/topic/fZ0P 著作权归作者所有。请勿转载和采集!