在Android中存储敏感信息的安全方式

时间:2013-06-14 12:23:52

标签: android security encryption drm

有谁知道在应用程序中存储敏感信息的最安全方法是什么?因为如果想要该信息的人拥有root电话,则使用内部存储和共享首选项很容易受到攻击。

案例是我有一些需要存储在手机内部(而不是服务器上)的激活码,以便与服务器端进行进一步的通信和身份验证,该代码需要受到保护,不能供其他应用和用户使用甚至在根电话上也是如此。此外,用户不会受到额外验证的困扰(他在进入应用程序时输入PIN码并将该代码发送到服务器端进行身份验证)。

最重要的是,是否有一种安全存储方式的安全方式,即使在有根的手机上也能保持隐藏状态?

1 个答案:

答案 0 :(得分:0)

不幸的是,评论者是正确的。没有办法保证100%的安全性,激活码不能被黑客入侵。微软花费了数百万美元,而且还有盗版的Windows副本,因为在一天结束时你无法控制客户端上的代码。如果您赋予客户端解密或以其他方式访问此存储的身份验证代码的能力(无需转到服务器),则有人可以对应用程序进行反向工程以撤消保护。即使您从服务器检索解密密钥也是如此。

执行此操作的最佳方式取决于您的使用案例,但这里有一些想法:

  1. 让客户端将“激活码”提交给服务器,如果您认为它被盗,可以将其列入黑名单。这就是Windows的工作原理。如果您想使用激活码而不打扰用户,这是您唯一的选择。

  2. 让用户注册一个帐户并让应用程序每次运行时重新提交用户的凭据。这样,如果您怀疑存在盗版行为,则可以停用用户帐户。

  3. 让服务器提供解密密钥。这并不能保证激活码保持安全,但它可以阻止潜在的逆向工程师。

  4. 完全放弃整个DRM的想法,并将注意力集中在制作好产品上。研究表明,音乐公司已经证明放弃DRM对购买产品的人数没有影响。