2

在玩家通过身份验证后,他会收到一个随机的、唯一的标识令牌。他发送的每个数据包都包含令牌。一个典型的消息是:

token sequence_number commands

问题是,如果有人看到一个包裹,这个人就可以扮演玩家的角色,例如将玩家的所有硬币交给其他人。或者阅读玩家的信息,或者做任何不窃取个人信息的事情。

所以我认为加密将是一项要求。但我发现很多人反对它,甚至有人说“这完全是偏执狂”(https://gamedev.stackexchange.com/a/25551/33993)。

有没有办法在不加密的情况下避免 MITM 攻击?如果没有,是否有必要避免它们?

4

3 回答 3

4

链接的问题说:“只有当它是游戏内购买/微交易时——然后为什么不使用像 HTTPS 这样经过验证的东西。”

Https被认为足以保护MITM。

我的意思是:是的!您应该在 Https 上发送流量!

它会对性能产生影响,但是(显然)已经付出了很多努力来优化它。很多成本发生在建立 Https 连接上。对于正在进行的游戏连接,您应该能够将其保持打开状态,这样会减少对性能的影响。

正如评论者所提到的,Https 使用TLS进行加密。您也可以使用 TLS 构建自己的 TCP 甚至 UDP 协议,但是这些天我建议如果可能的话,使用无聊的旧 TCP/Https。所有平台都有它的 API,有办法让它实时,它可能最容易与家庭路由器和防火墙一起使用,当你向其他人解释它时,这并不奇怪。

有关实时使用 http/https 的示例,请参阅pushersocket.io以及长轮询

于 2015-01-14T07:48:47.073 回答
1

不加密通信通道的 MITM 保护是困难的。您可以使用消息验证码 (MAC) 来保护关键组件不被更改。但是您仍然需要一个共享密钥,该密钥必须通过不同的通道或使用加密 (HTTPS) 进行交换。

您可能想查看Hawk 身份验证方案,了解如何通过未加密的通道安全地交换数据。

于 2015-01-14T21:41:42.730 回答
0

典型的加密(例如:HTTPS)不足以击败 MITM(http://en.wikipedia.org/wiki/Man-in-the-middle_attack)攻击。wiki 页面有一个简单的示例,说明 MITM 如何能够破解加密。有一些复杂的方法可以击败 MITM,但对于网页游戏来说它们通常是矫枉过正的。

要回答您的问题,加密并不能防御 MITM,但有必要实施加密,因为它更多地与保护通过 Internet 的敏感信息(例如密码、会话密钥等)有关。否则,任何在网络上收听的人都将能够以纯文本形式看到这些信息。

于 2015-02-11T09:16:30.137 回答