不经意传输:如何安全地发送多条消息并确保接收方只收到部分消息
不经意传输在下面的协议中,Alice将发送给Bob两份消息中的一份。Bob将收到其中一条消息,并且Alice不知道是哪一份。 (1) Alice 产生两个公钥/私钥密钥对,或总共四个密钥。她把两个公开密钥发送给 Bob。 (2) Bob 选择一个对称算法 (如DES) 密钥。他选择Alice的一个公开密钥,并用它加密他的 DES 密钥。他把这个加密的密钥发送给Alice,且不告诉她他用的是她的哪一个公开密加密的 DES 密钥。 (3) Alice 解密 Bob 的密钥两次,每次用一个她的私钥来解密 Bob 的密钥。在一种情况下,她使用了正确的密钥并成功地解密 Bob 的 DES 密钥。在另一种情况下,她使用了错误的密钥,只是产生了一堆毫无意义而看上去又像一个随机 DES 密钥的比特。由于她不知道正确的明文,故她不知道哪个是正确的。 (4) Alice 加密她的两份消息,每一份用一个不同的在上一步中产生的 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 密钥。 根据上面的例子回答,传输 n 条消息时,接收方得到其中的 m 条的协议是什么样的? 如果要传输 n 条消息时,接收方得到其中的 m 条,可以采用类似上述协议的方法,但需要产生更多的密钥对和使用更复杂的加密方式。具体步骤如下:
-
发送方 Alice 产生 2n 个公钥/私钥密钥对,即每条消息有两个公钥/私钥密钥对。她把其中的 2m 个公开密钥发送给接收方 Bob。
-
Bob 选择一个对称算法 (如 AES) 密钥,并选择其中 m 个公开密钥,分别用它们加密他的 AES 密钥。他把这些加密的密钥发送给 Alice,但不告诉她哪些公开密钥被用来加密哪些 AES 密钥。
-
Alice 解密 Bob 的密钥,每个用一个她的私钥来解密 Bob 的密钥。在 m 个情况下,她使用了正确的密钥并成功地解密 Bob 的 AES 密钥。在另外 n-m 个情况下,她使用了错误的密钥,只是产生了一堆毫无意义而看上去又像一个随机 AES 密钥的比特。由于她不知道正确的明文,所以她不知道哪些 AES 密钥是正确的。
-
Alice 加密她的 n 条消息,每条用一个不同的在上一步中产生的 AES 密钥 (m 个真的和 n-m 个毫无意义的),并把所有的消息都发送给 Bob。
-
Bob 收到 m 条用正确 AES 密钥加密的消息及 n-m 条用无意义 AES 密钥加密的消息。当 Bob 用他的 AES 密钥解密每条消息时,他能读出其中 m 条,另外 n-m 条在他看起来是毫无意义的。
-
在协议完成,并且知道了两种可能传输的结果后,Alice 必须把她的 2n 个私钥给 Bob,以便他能验证她没有进行欺骗。毕竟,她可以用第 4 步中的 2n 个密钥加密同一消息。这时 Bob 就可以弄清楚所有未被正确解密的消息。
因为 Alice 无法知道哪些 AES 密钥是真的,所以这个协议能够防止 Alice 的攻击。她加密 n 条消息,但 Bob 只能恢复出其中的 m 条 - 直到第 6 步。它同样能防止 Bob 的攻击,因为在第 6 步之前,他没有办法得到 Alice 的私钥来确定加密另外 n-m 条消息的 AES 密钥。
原文地址: https://www.cveoy.top/t/topic/oIyx 著作权归作者所有。请勿转载和采集!