假设您正在设计一款能够追踪高分的PC游戏.除了保持本地分数之外,还设置了全局高分服务器,该服务器通过因特网访问该游戏.玩家应该能够在完成游戏后或之后从当地的高分榜中将他们的高分提交到全球高分榜.这一定是一个普遍的问题; 现代游戏机上的街机游戏通常具有这样的全球高分列表.
我的问题归结为:你怎么能阻止某人提交虚假的高分?或者,换句话说,全球高分服务器如何确保提交的分数真的是通过游戏运行产生的?
我越是想到这个,我就越认为它可能是一个无法解决的问题.
您通常要做的是验证源自某个源的消息是否使源对该消息进行数字签名.在这种情况下你当然可以这样做,但真正的问题是玩家通过拥有软件也拥有软件的私钥.无论它有多么模糊,它都可以进行逆向工程,甚至只是从内存中取出.
另一种选择是将玩家游戏的重放发送到高分服务器,这将快速运行重放并验证提交的分数是否与重放的结果相匹配.这并没有解决问题,但如果你还必须制作一个"证明"它的非常复杂的重播,它肯定会使得伪造高分更难.
这是一个有解决方案的问题,还是真的无法解决?家庭游戏控制台开发人员是否使用技术来防止这种攻击,或者他们只是依靠控制台来防止未经授权的代码运行?