2013-01-16 33 views
0

我将开发一个带有服务器/客户端模式的游戏。通过TCP套接字进行客户端和服务器通为了服务器的数据安全性,我们用一些密钥加密了我们的数据流。如何在Flash游戏中隐藏我的通信密钥?

但是,这里的问题,动作代码很容易与工具反编译。所以即使在混淆之后,密钥也不安全。如果你想花更多时间,你仍然可以恢复它。

我也检查了FlashCC项目,但是它将花费我们当stage3d组合。

那么反正有隐藏我的钥匙?

+0

不,没有。 – Marty

+0

你想保持通信安全吗?用户本人或网络上的第三方攻击者? –

+0

黑客玩家可以使用密钥将假消息发送到服务器来欺骗服务器逻辑并获得利润 – davyzhang

回答

0

我来结论是你不可能有100%不可破的瑞士法郎。你能做的唯一事情就是增加阻碍黑客的障碍。

正如评论中所说,最安全的方法是将整个游戏逻辑放在服务器上,让服务器自己计算分数(或其他敏感数据)。但取决于游戏类型,这可能是一个非常愚蠢的想法。

1

在套接字上使用非对称加密TLS或SSL。虽然Flash Player 11具有原生的SecureSocket它有一些问题,所以我建议你从TLSSocket as3cryptolibhere是官方as3crypto lib中的最后一个版本来自issues列表中的一些重要修复叉)

+0

感谢您的回答,但我认为非对称加密在这里无济于事。因为玩家仍然可以使用公钥来加密数据,而服务器端会接受它。 – davyzhang

+1

在非对称客户端中,使用服务器的公钥(来自证书)进行数据加密和解密只能在具有私钥的服务器上进行。您甚至可以在客户端上存储漏洞证书以使服务器失效,因为私钥仅存储在服务器中,所以它是安全的。 – fsbmain

+0

感谢您的解释。我了解客户端使用公钥进行加密。但问题是如果有人破坏客户端程序并获得公钥,那么他知道与服务器交谈的方式。私钥是安全的,但不能防止客户端使用公钥伪造软件包。 – davyzhang