密码学:点对点游戏断开保护

时间:2011-02-07 19:07:39

标签: authentication cryptography

这更像是一个加密/算法而不是一个编程问题,所以如果这里不合适,请随时告诉我去其他地方。

我想知道是否存在“断开连接问题”的解决方案:两个对等方A和B互相通话,对于任何一个对等方来断开连接应该是一种冒犯。是否有可能证明断线是由特定方引起的?

当然,如果两者用直接线连接,那么就没有办法为失去连接定义责任方。因此,我们必须包括一些环境网络,并将与第三个“仲裁者”节点失去连接的一方定义为断开连接。但是,如果A想要断开连接,他可以选择性地仅阻止与B的连接,同时保持与仲裁员的通信。

是否存在加密解决方案,A和B通过该解决方案持续交换Keepalive,并将其转发给仲裁员,以确保始终可以判断谁故意断开连接?

2 个答案:

答案 0 :(得分:1)

我认为这样的协议是不可能的。

让我们说你有连接

     arbiter
       /\
      /  \
     /    \
    /      \
   /        \
 peerA --- peerB

现在其中一个同行切断了peerA-peerB链接。

在断开连接之前,可能存在所有可能的情况。 (A发送数据到B,或B接收或B-> A或第三。)

由于没有更多的A< - > B链接你无法分辨谁断开连接。双方都可以声称

a)他们发送最后一个包
b)他们没有收到包

重点是当A< - > B链接消失时,你无法分辨谁破坏它,因为它可能甚至是中间的第三方。

我想到的一个实际解决方案是,一旦发生这种情况,您就会重新路由来自仲裁者的所有流量,仲裁者现在充当代理。在此期间,双方都会向对方发送跟踪路径并将结果发送给仲裁者。即使这个失败并且骗子实施伪造ICMP数据包,这种作弊方法也行不通,他们迟早会放弃这种作弊方法。在最坏的情况下,您将不得不重新路由一些流量并充当路由器,但您可能能够统计地跟踪作弊者并对其采取适当的行动。

答案 1 :(得分:0)

我不是专家,但由于这里的一切都很安静,我想我会指出我会从哪里开始。可能我写的东西并不好,但至少它会让球滚动。

在我看来,检测断开连接通常与检测错误是同一类问题。 (可能没有“断开信号”,因此我们试图检测何时拔出插头)。我觉得这属于嘈杂的信道编码理论的主题。我不是这方面的专家,但我有一本关于这个主题的好书。

David MacKay的

  

信息论,推理和   学习算法。

可以在作者website上免费在线观看(经出版商许可),这样您就可以在不付钱的情况下判断自己是否有用。

对于这个特殊问题,您可能需要查找Repeat Accumulate代码(第49章 - 在此之前您不需要阅读48章)。您发送要发送的信号的每个位的重复,但是使用随机(但固定)密钥对它们进行置换。然后你可以对置换信号进行校验和。

因此,如果中央服务器为每个用户使用不同的密钥 - 我会认为他们可以检测到谁引入了断开中间信号的错误(例如通过拔出插头)。

这就是我的开始 - 但我不是专家。

汤姆