2011-06-28 77 views
4

我正在创建Air(AS3)项目。它将拥有自己的保护系统。从服务器到应用程序和后面的所有数据都被加密。我使用在服务器端脚本和应用程序中注册的密钥。如果黑客反编译应用程序,它可以找出秘密密钥。密钥是字符串(常量)。我不想为我的应用程序混淆。秘密密钥的隐藏值Air app

如何隐藏此密钥?我只能混淆它吗?我可以用秘密数据混淆单独的AS3类,然后在需要时从主代码访问它吗?

+0

你怎么加密 - 与MD5/sha1或类似?你发送什么样的数据? – Chris

+0

BASE64。传输数据以验证许可证密钥。 – Astraport

回答

1

如果黑客完全反编译你的应用程序,你的秘密可以很容易地被追踪出来,不管它的存储是如何混淆的。
如果您想保持最低限度的混淆,则需要混淆使用密钥的每个区域。如果它从“不可编译的”区域走出,它就消失了。

3

如果您不想让某人反编译应用程序并找到密钥,那么最好的办法就是不要将密钥放入应用程序中。而是强制他们通过TLS/SSL向服务器进行身份验证,以获取在每个客户端基础上运行时协商的密钥。

一旦对称密钥被协商,那么你可以使用它来加密/解密你的数据传输。当然,这就提出了一个问题,为什么不首先使用SSL?这使您可以在客户端和服务器之间进行端到端的加密。

当然,当应用程序在系统上运行时,攻击者仍然可以从RAM中获取解密密钥。因此,他们可以在他们运行的应用程序和服务器之间解密数据,但无法解密其他应用程序用户传输的数据(因为他们每个人都有不同的密钥)。

您无法以任何方式将密钥放入应用程序,攻击者永远无法找到该密钥。你的应用需要找到并使用它;你的应用程序这样做的过程将导致攻击者。所以不要把它放在那里。