我即将把我的Android应用程序投放到市场上。我最近加密了我所有的服务器/客户端通信。我想知道的是,如果我的数据是使用专用密钥加密的,如果有人反编译我的代码并提取密钥,那么从一开始加密数据是否值得呢?当数据没有加密时,我的通信速度要快得多。由于这款游戏是一款动作游戏,lag将成为一个巨大的“有趣的杀手”,根据我的经验,它是令人沮丧的。我知道加密使应用程序更安全,它使游戏玩家和服务器更安全,但它造成了巨大的滞后。安全性是否值得在性能上进行扣除?当你的代码可以反编译的时候,使用加密还值得吗?我已经在使用Android Proguard了,但是如果有人真的想反编译我的代码,他们会花时间对所有这些垃圾进行分类。
发布于 2011-12-21 11:56:37
我认为,在这些假设下操作是安全的。
不能信任
不要相信客户发送给你的数据,对其进行检查和验证(例如,如果有人试图通过发送修改后的位置从一个地图角‘传送’到另一个地图角)。
只接受有效的数据。
禁止作弊。
加密是可以的,但当它不会损害游戏或游戏性时(在你的情况下是)。
发布于 2011-12-21 11:51:28
你把加密密钥放在客户端代码里了?好吧,这是没有价值的,另一方面,加密是完全值得的,问题是你选择了错误的方式。
发布于 2011-12-26 02:31:55
我可能会使用身份验证而不是加密(对您发送的所有数据进行散列,以便您可以在服务器端进行验证)。这将适用于普通的游戏信息,因为没有太多的保密需要。除非你发送的是私人用户信息,如姓名、年龄、信用卡信息等,否则我建议你使用比加密快得多的普通身份验证。你可以选择非常简单的哈希函数,或者如果你认为你的游戏真的激励人们去篡改它,那么你可以使用军用级别的哈希函数,比如SHA-256或更高版本。但是,无论您使用哪种散列方案,它都应该比实现适当的加密方案少得多的时间/资源消耗。
https://stackoverflow.com/questions/8584857
复制相似问题