根据上面的例子,传输n条消息时,接收方得到其中的m条的协议可以是:

  1. 发送方产生2n个公钥/私钥密钥对,将其中的n个公钥发送给接收方。
  2. 接收方选择一个对称算法(如DES)密钥,并选择发送方的一个公钥将其加密。接收方将加密后的密钥发送给发送方,但不告诉发送方使用的是哪个公钥加密的。
  3. 发送方解密接收方的密钥n次,每次使用一个自己的私钥来解密接收方的密钥。在m种情况下,发送方使用了正确的密钥并成功地解密接收方的对称算法密钥。在(n-m)种情况下,发送方使用了错误的密钥,只是产生了一堆毫无意义而看上去又像一个随机对称算法密钥的比特。由于发送方不知道正确的明文,故发送方不知道哪个是正确的。
  4. 发送方加密n条消息,每条消息用一个不同的在上一步中产生的对称算法密钥(一个真的和一个毫无意义的),并将所有消息都发送给接收方。
  5. 接收方收到n条消息,其中m条用正确对称算法密钥加密,另外(n-m)条用无意义对称算法密钥加密。当接收方用他的对称算法密钥解密每条消息时,他能读取其中m条,另外(n-m)条在他看起来是毫无意义的。
  6. 在协议完成,并且知道了两种可能传输的结果后,发送方必须将她的私钥给接收方,以便接收方能验证她没有进行欺骗。毕竟,她可以用第4步中的n个密钥加密同一消息。这时接收方就可以弄清楚剩下的(n-m)条消息。

因为发送方无法知道n个对称算法密钥中的哪个是真的,故这个协议能防止发送方的攻击。她加密n条消息,但接收方只能恢复出其中的m条-直到第6步。它同样能防止接收方的攻击,因为在第6步之前,他没有办法得到发送方的私钥来确定加密另外(n-m)条消息的对称算法密钥。

不经意传输协议:发送n条消息,接收方获得m条

原文地址: https://www.cveoy.top/t/topic/oIzc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录