有没有办法在不加密的情况下避免MITM攻击?

问题描述 投票:0回答:3

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

token sequence_number commands

问题是,如果有人看到一个数据包,那么该人就可以充当玩家,并将玩家的所有硬币交给其他人。或者阅读玩家的消息,或者做任何除了窃取个人信息之外的事情。

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

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

network-programming mmo security udp
3个回答
4
投票

链接的问题说:“仅当它是游戏内购买/微交易时 - 那么为什么不使用像 HTTPS 这样经过验证的真实方法。”

https 被认为足以进行 MITM 保护。

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

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

正如评论者所提到的,Https 使用 TLS 进行加密。您也可以使用 TLS 构建自己的 TCP 甚至 UDP 协议,但现在我建议如果可能的话,使用无聊的旧 TCP/Https。所有平台都有 API,有多种方法可以使其实时,并且它在家庭路由器和防火墙上运行可能是最简单的,当您向其他人解释它时,这并不奇怪。

请参阅 pushersocket.io 以及 长轮询,了解使用 http/https 进行实时处理的示例。


1
投票

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

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


0
投票

典型的加密(例如:HTTPS)不足以抵御 MITM (http://en.wikipedia.org/wiki/Man-in-the-middle_attack) 攻击。维基页面有一个简单的示例,说明 MITM 如何破解加密。有多种复杂的方法可以击败 MITM,但对于网页游戏来说它们通常是杀伤力过大。

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

© www.soinside.com 2019 - 2024. All rights reserved.