如何防止多人游戏中的身份欺骗?


9

我正在考虑客户端欺骗IP地址,欺骗其他客户端他们是服务器。这样的东西。(对此我不太了解,因此,如果这是完全错误的,请纠正我。)

我应该怎么做才能防止这种情况?因为它是实时游戏,所以如果我要使用加密,我会使用快速而安全的东西,例如RC4。我应该使用服务器提供给客户端的密钥来加密数据包数据吗?

如果有什么不同,我正在使用UDP。

Answers:


8

一种可能的解决方案是使用TCP + TLS验证用户身份。然后,在同一通道内,使用Diffie-Hellman之类的工具协商对称密钥。最后,使用RC4之类的对称算法对每个UDP数据包进行加密。

如果使用SRP之类的技术,从技术上讲,您不需要使用TCP + TLS来协商对称密钥-只要记住干净的Diffie-Hellman容易受到MITM攻击

您甚至可以走得更远,并在UDP数据包中使用自定义SEQ字段(如果您使用某种形式的可靠UDP)来实现一种反模式加密形式-在其中您将SEQ号添加到每个数据包的协商密钥中;这使得发起已知明文攻击变得更加困难。

不要让您的服务器随意分发密钥-“欺骗”服务器可能很容易分发自己的密钥。破坏了整个加密方案的目的。唯一有保证的方法是使用TLS或使用共同知识(例如密码/哈希)。


您能确切描述一下将关闭哪些漏洞吗?我听说过IP欺骗之类的东西,但是我没有受过有关这一主题的教育
liamzebedee 2011年

@ LiamE-p GameDev不是关于安全性速成课程的地方;我也没有时间伸出援手。从本质上讲,SRP和TLS(两者)都应与您的网上银行网站一样安全-带有CTR模式的SRP更是如此。如果您需要更多说明,请访问Security SE网站。
乔纳森·迪金森

这绝对是安全SE的主题。我将标记一个mod以便将其迁移到那里。
罗里·阿尔索普

8

我有很长的(两年前)黑客技术背景,有史以来最难破解的数据包(以及我建议您使用的数据包)使用的是对称密钥加密方法,乔纳森·迪金森(Jonathan Dickinson)简要介绍了这种方法。正如他还提到的,您应该使用TCP + TLS。但是,他说了相反的顺序。

我曾经遇到过容易被程序员“防黑客”系统欺骗的时代,因为他们有一个足够奇怪的计数系统,我无需编程知识和第一年代数逻辑就可以破解它。只要选择适当的顺序方法,目标就应该完全按预期接收数据,这也意味着您应该使用TCP进行最安全的操作。

回到“我的经验”的轨道上,我发现一种系统表现出色。一种基于发送时间和预期时间的顺序方法。由于必须始终以正确的顺序接收数据包,因此欺骗数据包几乎是不可能的,因为在没有首先破解客户端程序的情况下,我永远无法预测何时将发送数据包以及何时期望(在一个数据包与另一个数据包之间)。

简短的答案

简而言之:每个数据包结构还将有一个时间戳,就像发送到毫秒时一样。这太简单了,检查一个时间是否在另一个时间之前/之后真的很容易。之所以说得这么好,是因为服务器仍然可以按欺骗顺序接收数据包,而没有时间进行身份验证。

显然,这不是唯一的顺序方法,也不是任何方法中最好的方法。我发现它只是效果很好的一种。与TCP + TLS结合使用,您应该不会出现太多问题。


游戏的问题是事情发生在毫秒级以下。
乔纳森·迪金森

@JonathanDickinson完全正确。但是使用UDP尤其是使用TCP时,应将航位推算算法用于亚毫秒甚至数毫秒的操作。那当然是为了提高速度,视觉效果以及一些幕后的东西。(主要与速度有关)
Joshua Hedges

6
我想这最终还是一场游戏,而不是死亡射线卫星控制系统。+1
乔纳森·迪金森

4

就我个人而言,我不会为时过早。即使您按照乔纳森(Jonathan)的建议对数据包进行加密,像我的兄弟这样的黑客也只会在数据包加密之前访问数据包。如果恶意用户想要进入,他们将找到出路。

既然这已经成为现实,独立开发人员可以通过多种方法将恶意用户可能造成的损害降至最低。您可能应该加密出站数据包,但这只会阻止某些类型的攻击,不要自欺欺人地认为它现在是“防黑客的”。要真正关闭黑客,请给客户端尽可能少的改变游戏规则的控制权。这些大型MMO之一曾经允许客户告诉服务器他们获得了多少XP。猜猜那里发生了什么?不要那样做 让客户端告诉服务器,他们想对生物使用某种超级法术,然后让服务器解决该动作,然后在生物死亡时添加XP。客户端应该是瘦的,笨拙的,可以发送和接收命令的终端,并且可以进行一些预测(如有必要)。游戏和响应由客户端发送的命令。

大型游戏公司除了使用VACPunkBuster外,还使用上述内容来防止已知的黑客继续破坏付费客户。这些安全措施的工作方式一直保密,但是我确实知道它们使用的一种方法:它们扫描当前正在运行的应用程序,并将其与已知黑客的列表进行比较。一旦发现作弊,您将无法加入VAC / PunkBuster安全服务器。

相关:服务器上的游戏逻辑!是好是坏?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.