在移动应用程序中保护AES密钥

时间:2013-04-27 10:52:12

标签: android iphone aes

我已经阅读了许多有关AES,CommonCryptor,salt和MAC的帖子和资源,以寻找我在移动软件库发布时遇到的问题的解决方案。我想使用自定义URL方案通过HTML和JavaScript将加密的字符串传递到我的iPhone和Android应用程序,并使用字符串作为参数。 HTML文件将在我的网站上创建,然后分发给用户以存储在他们的Web服务器上。

根据我的阅读,我会在将HTML文件分发给用户之前使用密钥加密HTML文件中的字符串。然后相同的密钥将存储在库中并用于解密字符串。但如果有人反编译我的应用程序,他们就会拥有密钥并能够解密存储在分布式HTML文件中的字符串。我知道库可以很容易地反编译,但提供字符串以及代码实际上是放弃它。而真正的危险是,人们可以使用HTML文件在我的图书馆的黑客版本中触发恶意行为。

我真的不想打电话到我的网站获取密钥或盐,我不确定会提供任何保护。随机盐与库中的密钥一起存储会起作用吗?

我愿意花时间研究,编码和测试这个,但首先我想知道使用AES,CommonCryptor,salt或MAC是否可行。如果我们在这里解决它,那么所有人都可以使用它作为解决这个问题的方法。

谢谢

1 个答案:

答案 0 :(得分:0)

编译自己的openssl和crypro静态库,并将这两个静态模块包含到您自己的本机.so模块中。不要使用内部Android SSL。

以一些受保护的方式深入内部的密钥(简单的解决方案是使用一些浮点数和一些非平凡的散列)。解密本机代码中的加密消息。在本机代码中确定消息是否正常。不要使用普通布尔值返回Java。

每当黑客想要破解你的代码时,他就必须反编译~800K的本机代码。