繁体   English   中英

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

[英]Secure way to store sensitive information in Android

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

案例是我有某种激活码,需要将其存储在电话内的某个位置(而不是在服务器上),以便与服务器端进行进一步的通信和身份验证,该激活码需要保护并且对于其他应用程序和用户不可用,即使在有根电话。 而且,用户也不会被其他验证所困扰(他在进入应用程序时输入PIN码并将其发送到服务器端进行认证)。

最重要的是,是否存在一种安全的方式来存储某些东西,并确保即使在有根电话上也可以将其隐藏起来?

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

最好的方法取决于您的用例,但是这里有一些想法:

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

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

  3. 让服务器提供解密密钥。 这不能保证激活代码始终保持安全,但是对于潜在的反向工程师来说,这样做可以提高标准。

  4. 完全放弃整个DRM构想,而将注意力集中在制作优质产品上。 音乐公司的研究表明,删除DRM对购买产品的人数没有影响。

暂无
暂无

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

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