Algorithm 安全数据加密和验证

Algorithm 安全数据加密和验证,algorithm,security,encryption,Algorithm,Security,Encryption,想象一个玩家的游戏,它包括许多测试。完成所有测试后,玩家可以选择将结果上传到服务器——获得最佳结果的玩家将赢得大奖。服务器需要能够验证结果数据,以查看它是否被黑客攻击,甚至被垃圾邮件攻击。关于如何有力地实施这一点,有什么想法吗 基本上你不能。即使使用加密、代码混淆或其他方法也不行。“永远不要相信客户” 确保不涉及任何操作的唯一方法是在服务器上拥有每一点游戏逻辑,并且只向用户公开一个GUI。然后,您可以将玩家发出的命令(击键、点击按钮等)发送到服务器,在那里验证它们(即使这不是那么容易!),处理所

想象一个玩家的游戏,它包括许多测试。完成所有测试后,玩家可以选择将结果上传到服务器——获得最佳结果的玩家将赢得大奖。服务器需要能够验证结果数据,以查看它是否被黑客攻击,甚至被垃圾邮件攻击。关于如何有力地实施这一点,有什么想法吗

基本上你不能。即使使用加密、代码混淆或其他方法也不行。“永远不要相信客户”

确保不涉及任何操作的唯一方法是在服务器上拥有每一点游戏逻辑,并且只向用户公开一个GUI。然后,您可以将玩家发出的命令(击键、点击按钮等)发送到服务器,在那里验证它们(即使这不是那么容易!),处理所有必要的游戏逻辑并返回结果

当然,如果你的游戏涉及任何与时间有关的事情,这是不可行的,因为对于每个玩家的动作,都会有一个延迟,直到玩家得到结果并看到效果为止


对于大多数游戏来说,所有这些都是多余的,你只需确保它们难以操作。

基本上你不能。即使使用加密、代码混淆或其他方法也不行。“永远不要相信客户”

确保不涉及任何操作的唯一方法是在服务器上拥有每一点游戏逻辑,并且只向用户公开一个GUI。然后,您可以将玩家发出的命令(击键、点击按钮等)发送到服务器,在那里验证它们(即使这不是那么容易!),处理所有必要的游戏逻辑并返回结果

当然,如果你的游戏涉及任何与时间有关的事情,这是不可行的,因为对于每个玩家的动作,都会有一个延迟,直到玩家得到结果并看到效果为止


对于大多数游戏来说,所有这些都是多余的,你只需确保它们很难操作。

反黑客工具是可用的,它们可以无限地使服务器和客户端之间的通信复杂化,混淆内存和例程,在每次运行时修改自己,等等

问题是,大多数反黑客工具通常都会被黑客攻击,如果奖金足够大,你的可能也会被黑客攻击。甚至rootkit也可以扎根。更不用说这种行为看起来很像一种病毒,它会给很多人敲响警钟,最终可能会让很多以前的顾客感到沮丧


如果它是一个像iPhone一样有围墙的花园,我相信有工具可以确保手机不会被越狱,我不确定他们是否可以被愚弄,但这仍然留下了一个问题,即任何人都可以对通信进行解码,并完全从其他内容上传自己的信息。

反黑客工具可用,可以无限地使服务器和客户端之间的通信复杂化,混淆内存和例程,在每次运行时修改自己,等等

问题是,大多数反黑客工具通常都会被黑客攻击,如果奖金足够大,你的可能也会被黑客攻击。甚至rootkit也可以扎根。更不用说这种行为看起来很像一种病毒,它会给很多人敲响警钟,最终可能会让很多以前的顾客感到沮丧


如果它是一个像iPhone一样有围墙的花园,我相信有工具可以确保手机不会被越狱,我不确定他们是否可以被愚弄,但这仍然存在一个问题,即任何人都可以解码通信并完全从其他内容上传自己的信息。

要详细说明为什么除非游戏运行服务器端,否则它不会工作:如果你让应用程序能够将可信数据发送回服务器,然后你把应用程序交给玩家,您赋予玩家将可信数据发送回服务器的能力。因此,你通过授权不信任的玩家向你发送可信数据来打击他们,这显然是行不通的。要详细说明为什么除非游戏运行服务器端,否则它不会起作用:如果你让应用程序能够将可信数据发送回服务器,然后你把应用程序交给玩家,您赋予玩家将可信数据发送回服务器的能力。因此,你通过授权不信任的玩家向你发送可信数据来打击他们,这显然是行不通的。好吧,但如果我们要务实一点,把我们的目标设定为仅仅吓阻意志坚定的黑客(意识到任何拥有足够工具和专业知识的人都不可避免地能够绕过任何安全措施),那么如何进行呢?一个限制是保存的结果不能完全加密-游戏需要能够将它们重新加载。我可能会附加任意长度和格式的数据块。某种密钥,用于识别结果中的数据,该数据是由特定用户在特定日期使用结果中描述的参数有效生成的。好吧,但如果我们要务实,并将我们的目标设定为简单地阻止适度确定的黑客(认识到任何拥有足够工具和专业知识的人都将不可避免地能够绕过任何安全措施),那么该如何进行呢?一个限制是保存的结果不能完全加密-游戏需要能够重新加载它们。我可能会附加一个任意长度和格式的数据块。某种密钥,用于识别结果中的数据,该数据是由特定用户在特定日期使用para有效生成的结果中描述的仪表。