【发布时间】:2009-05-08 02:01:11
【问题描述】:
假设您正在设计一款记录高分的 PC 游戏。除了保持本地分数外,还设置了一个全球高分服务器,游戏可以通过互联网访问该服务器。玩家应该能够在完成游戏后立即将他们的高分提交到全球高分列表,或者稍后从他们的本地高分列表中提交。这一定是一个普遍的问题;现代游戏机上的街机游戏通常具有这样的全球高分榜。
我的问题归结为:如何防止某人提交虚假的高分? 或者,换一种说法,全球高分服务器如何确定提交的分数确实是由通关游戏?
我越想这个,我就越觉得这可能是一个无法解决的问题。
验证消息是否来自某个来源的通常做法是让该来源对消息进行数字签名。在这种情况下,您当然可以这样做,但真正的问题是玩家拥有该软件,也拥有该软件的私钥。不管它多么模糊,它都可以被逆向工程,甚至只是从记忆中提取出来。
另一种选择是将玩家游戏的回放发送到高分服务器,该服务器将快速运行回放并验证提交的分数是否与回放的结果相匹配。这并不能解决问题,但如果您还必须制作一个非常复杂的回放来“证明”它,那么它肯定会使伪造高分变得更加困难。
这是一个有解决方案的问题,还是真的无法解决?家用游戏机开发人员是否使用了一些技术来防止这种漏洞利用,或者他们只是依靠控制台来防止未经授权的代码运行?
【问题讨论】:
-
虚假分数的存在是人们在既定规则之外玩的结果。所以,从某种意义上说,这是一个人的问题,而不是一个系统问题(或者可以在系统层面解决的问题)。
标签: security networking