繁体   English   中英

如何在Android上隐藏公钥?

[英]How to hide public key on android?

Android的安全手册指出,将公钥(用于Android市场)仅作为字符串保存并不安全,应该以某种方式将其隐藏/编码。 有人可以给我举个例子吗?

(我没有单独的服务器,因此无法将其存储在此处)

更新。 相信,这是非常常见的任务,与Android无关,但也与其他应用程序有关。

您链接到页面的相关文本为:

重要提示:为了保护您的公共密钥不受恶意用户和黑客的侵害,请勿将您的公共密钥作为整个文字字符串嵌入。 而是在运行时从片段中构造字符串,或使用位操作(例如,与其他字符串进行XOR)隐藏实际的密钥。 密钥本身不是秘密信息,但是您不想让黑客或恶意用户容易地用另一个密钥替换公共密钥。

这就是您几乎需要知道的所有内容。 知道您的公钥的人没有任何危害,这里的潜在危害是有人会用自己的程序替换您程序中的公钥,从而将应用内购买转移到自己的帐户中。

他们建议您通过将密钥存储在单独的片段中或将密钥与其他字符串进行XOR运算,使攻击者更加困难。 现在,他们不仅要把他们的密钥粘贴到您的密钥上,还必须弄清楚您正在对字符串进行什么转换,并使他们自己的密钥适合该模式。 这是更多的工作,可能会阻止临时攻击者,但不会阻止真正有决心的人。

如果您使用Keytool实用程序,这一切都为您完成。 您将在本地计算机上获得一个.keystore文件,其中包含用密码加密的私钥; 将该文件和密码保密,就可以保证安全。

http://developer.android.com/guide/publishing/app-signing.html

实际上,我相信Eclipse的Android插件甚至可以自动为您完成所有这些工作。

在公钥上,您可以对其进行哈希处理并将其另存为哈希值。 更好的方法是在需要将哈希值取回时,将哈希值添加到您知道的内容中。 可能类似于用户名或ESN。 看一下android.telephony.TelephonyManager.getDeviceId()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM