MMORPG应该使用加密吗?

时间:2010-11-29 19:14:01

标签: encryption

首先, 那些成功的商业MMORPG使用加密进行游戏数据传输

我得到的印象是,许多开发人员倾向于使用加密,因为它无法防止作弊和制作私人服务器的逆向工程,但不能有效减少数量那些

加密也会影响性能,即使只是一点点。

良好的加密确实可以防止网络嗅探和中间人,对于MMORPG来说非常重要

如何保护聊天消息以解决隐私问题

你觉得怎么样?

PS:我说的是游戏数据,而不是用户/密码,auth信息需要加密。

7 个答案:

答案 0 :(得分:8)

加密是一种工具。确保该工具符合问题。

加密对于三件事情很有用:1)第三方无法查看数据,2)双方都是他们所说的人,3)数据未被修改。这些都不适用于此。请记住,客户端位于用户(攻击者)计算机上。如果他们修改客户端,它将很乐意签署&加密他们想要的任何消息。

要考虑的第二件事是客户端拥有密钥,因此您应该假设攻击者也拥有密钥。即使您使用非对称加密,客户端也有密钥来解密它收到的任何内容。如果您向客户端发送“私人数据”,攻击可以找到该密钥并对其进行解密。

一个好的MMORPG(为了让作弊变得困难)应该假设两件事: a)用户/攻击者可以看到发送给客户端的任何数据(因此不要向客户端发送您不希望用户看到的内容) b)攻击者可以向用户发送任何可能的命令(因此不要依赖客户端来保证安全)。

在大多数MMORPG中,客户端只不过是一个令人印象深刻的图形的哑终端。所有计算,错误检查和验证都发生在服务器端。客户不会确定您是否命中,也不会确定损坏程度。客户端只是告诉服务器“我是攻击项目382903128”。或其他一些行动(不是结果)。服务器验证播放器是否可以访问该选项,是否具有该项目,并且该命令此时有效。为了防止嗅探攻击,客户端仅获得用户无论如何都可以访问的数据。

答案 1 :(得分:5)

在任何安全环境中,您都需要考虑威胁情景的确切内容。

攻击者A可以访问运行游戏客户端的计算机,并希望编写一个机器人来自动执行其操作,以便轻松赢得战斗。

攻击者B正在窃听本地网络上的数据包,目的是

  • 窃取登录凭据以便免费玩游戏。
  • 监视玩家与玩家之间的私人聊天,或许是为了在游戏中获得优势,或者可能是为了在现实世界中勒索或骚扰。
  • 在命令流中插入额外的行为,例如说明以向攻击者赚钱的价格买卖物品。

加密对攻击者A没有影响(因为游戏客户端可以解密通信,攻击者也可以解密;必须在服务器上采取反措施)但是会击败攻击者B.

我不同意有关传输数据价值的其他一些答案。您与其他玩家的私人聊天与您的即时消息一样值得保护,而您的黄金和财产,通过几个小时的辛劳获得,应该得到一些保护免受攻击者,如果可能没有你的那么多银行账户中的美元。

答案 2 :(得分:2)

在90年代期间,Ever Quest使用了低级数据包加密。我深情地记得,因为曾经有一个侧面应用程序会嗅探数据包数据,并为您提供有关区域中每个人的区域范围信息。当他们添加数据包加密时,EQ团队瘫痪了一段时间,但这并没有阻止黑客社区,因为他们只是从客户端计算机上取出密钥。所以最后,它确实没有任何帮助。 至于那里的其他MMO,我没有看过分组数据来做出某种决定。

答案 3 :(得分:2)

您本身不需要加密。

考虑这个'数据包':

<USER_ID><COMMAND><MD5HASH>

MD5HASH是根据USER_ID + COMMAND +生成服务器和客户端知道的其他一些值生成的,但不是通过网络传输的(用户电子邮件或安全提供的某些令牌)在登录期间)。服务器可以重建用于散列的字符串并验证命令的真实性。如果某个中间人改变了COMMAND,则哈希将不匹配。

除了验证真实性之外,此方法还允许您检查是否收到了整个指令。 (你的'游戏数据包'可能分散在多个TCP / IP数据包中,有些可能会丢失等)。

这不会阻止在消息中窥探,但确实可以防止篡改。这是一场关注球员说什么的比赛?我的意思是,电子邮件是未加密的,没有人关心这些,而他们的内容比平均的游戏内聊天更有价值。

答案 4 :(得分:1)

如果加密实际上保护了有价值的数据,那么加密总是一件好事。这将是银行数据,邮件,即时消息和文件传输。不是因为我对我的ISP或网络提供商非常偏执,但如果你在一个开放的网络(例如,学校网络或公司网络),有人可能正在阅读嗅探网络流量,则存在特定的风险。

对于MMORPGS,我认为安全性和性能都没有好处,因为大多数数据都是基于会话的,而中间人攻击是不太可能的(因为,毕竟,为什么你想嗅闻并攻击这样的连接吗?)。

我要做的是将密码和登录凭据作为散列值传输(甚至只加密该部分),并保持连接的其余部分;因此,您不会受到加密导致的CPU占用和延迟的影响(特别是当服务器负载过重时)。

答案 5 :(得分:1)

至少登录应该加密,客户端应该根据白名单验证服务器的公钥,以防止中间人攻击。

加密游戏过程中传输的数据并不重要。

您需要区分具有完全不同目标的加密和混淆。
例如,SSL作为加密非常有用,但由于加密发生在已知的API中,因此无法用作混淆,并且当明文通过时截获明文是微不足道的进出这些API。
混淆需要混合到您自己的代码中,并且不需要加密安全。

答案 6 :(得分:0)

本地网络或Wi-Fi管理员需要加密,他们可能会嗅探您的流量/数据包并获取/更改游戏信息/密码。

Tipically(99.99999%)帐户被特洛伊木马攻击,而非数据包嗅探。因此在99.99999%的加密是没用的。

与Botting或Cheating相比,加密完全没用。对于那种情况,有特殊的力量,如 - 反作弊/ Bot系统。