...我在这里已经阅读了一些讨论了各种方法的线程,并且只是在寻找对我们提出的建议解决方案的一些反馈.在其中一个帖子中发布了一条评论,推荐了一个听起来很棒的公钥/私钥,这就是我们的想法......
客户端 - 1.密钥存储在Flash swf内部,使用第三方工具加密.2.高分与高分值一起散列(EX:md5('ourSecretKey'+ 200))3.此值通过AMF发送到服务器上的PHP脚本,以及高分(200)
服务器端 - 1.服务器接收数据并哈希传递的高分(200)+密钥(存储在服务器以及Flash中的'ourSecretKey')并检查传递的哈希,如果值是匹配的,则允许输入得分高,否则失败.
我知道这不是一个万无一失的解决方案,但这是否可以接受?我的意思是,对于一个简单的在线Flash游戏,这是否足够安全?思考?
先感谢您!
对于一个荒谬的短值(即:值<64个字符),由于彩虹表攻击,MD5作为哈希变得无效,并且由于您发送的值将通过线路共享,他们所要做的就是暴力破解共享秘密(他们有一个已知的产品可以使用)
因此,那不是公钥私钥.它的共同秘密.
此外,请记住,这个共享秘密将在您发送给用户的Flash文件中,这些日子并且被轻易地拆解,然后您的"秘密"不再是秘密.
您需要一个具有正确加密签名的更具挑战性的响应机制,其中为服务器中的每个游戏分配新的签名密钥,并且不能使用相同的签名密钥提交多个分数.(为了额外的保护;))
用户开始游戏.请求签名密钥.(符号密钥由他们无法访问的另一个密钥生成).
分数用签名密钥签名,然后发送
您使用发送的密钥验证标志的值.
您丢弃发送给他们的签名密钥.
但是,您仍然遇到无法阻止实际评分系统被篡改的问题.足够聪明的人可以对SWF对象进行反向工程,并注入新的代码,只需将分数设置为所选值即可.