在玩家通过身份验证后,他会收到一个随机的唯一身份识别令牌。他发送的每个数据包都包含令牌。典型的消息是:
token sequence_number commands
问题在于,如果有人看到一个小包,那么这个人就可以充当玩家,并将所有玩家的硬币交给其他人。或者阅读播放器的消息,或者做任何窃取个人信息的事情。
所以我认为加密是必需的。但我发现有很多人主张反对它,有人甚至说过,它是完全的偏执狂" (https://gamedev.stackexchange.com/a/25551/33993)。
有没有办法避免没有加密的MITM攻击?如果没有,是否避免不必要?
答案 0 :(得分:4)
链接的问题是,“只有这是游戏中的购买/微交易 - 然后才能使用像HTTPS那样经过尝试和尝试的东西。”
Https被认为足以支持MITM。
我的意思是:是的!你应该通过Https发送你的流量!
它将对性能产生影响,但(显然)已经进行了大量的努力来优化它。建立Https连接会产生很多成本。对于正在进行的游戏连接,您应该能够保持打开状态,并且会降低性能影响。
正如评论者所提到的,Https使用TLS进行加密。您也可以使用TLS构建自己的TCP甚至UDP协议,但是现在我建议如果可能的话,使用无聊的旧TCP / Https。所有的平台都有适合它的API,有方法可以实现它的实时性,并且它可能是最简单的家用路由器和放大器。防火墙,当你向别人解释时,这并不足为奇。
有关使用http / https进行实时的示例,请参阅pusher和socket.io以及long polling。
答案 1 :(得分:1)
不加密通信信道的MITM保护很困难。您可以使用消息验证代码(MAC)来保护关键组件不被更改。但是您仍然需要一个共享密钥,必须通过不同的通道或使用加密(HTTPS)进行交换。
您可能需要查看有关如何通过未加密频道安全地交换数据的Hawk authentication scheme。
答案 2 :(得分:0)
典型加密(例如:HTTPS)不足以抵御MITM(http://en.wikipedia.org/wiki/Man-in-the-middle_attack)攻击。维基页面有一个简单的例子,说明MITM如何能够破解加密。有一些复杂的方法来击败MITM,但它们对于网络游戏来说通常是过度杀伤。
要回答您的问题,加密并不能抵御MITM,但有必要实施加密,因为它更多地涉及在通过互联网时保护敏感信息(例如密码,会话密钥等)。否则,任何在网络上收听的人都将能够以纯文本形式查看这些信息。