加密应用程序数据的正确方法

Correct method of encrypting application data

只是一个关于应用数据加密使用的快速问题。

假设您有一个移动应用程序,这个应用程序需要存储一些潜在的敏感数据。在这种情况下,需要隐藏的公司 IP 地址列表。

显而易见的答案是使用用户密码的哈希值进行加密。但是在这种情况下,用户帐户是可选的,因此密码可能不存在。下一个加密商店数据的最佳方法是什么?

我的第一个猜测(可能也是最不安全的猜测)是应用程序中内置的密钥,但这里的问题是可能会发现密码已恢复的不同攻击的风险。

下一个猜测是找到某种设备标识符,可以用作密码生成器的种子。又是一个有缺陷的方法。

最后的想法是安全地随机生成密码并使用上述方法之一加密存储。

我的思路是正确的还是偏离了方向?

我对密码算法有一定的了解,但找到合适的应用程序让我摸不着头脑。任何帮助将不胜感激。

谢谢

下一个猜测是找到某种设备标识符,可以用作密码生成器的种子。再次看起来像一个有缺陷的。 --- ?

您可以使用 ANDROID_ID 的散列或 UUID 代替密码

对其进行加密

你对此有何看法?

重点是:只要您的数据驻留在移动设备上,最终您就会受到限制。从这个意义上说:如果您需要以安全可靠的方式存储信息,那么您应该考虑 "server side" 解决方案。

如果这不可能,下一个最好的办法是让您的应用程序询问用户一个不同的密码 - 然后将其用作您问题中概述的密钥.您肯定不想要适用于所有 users/devices 的 单个 通用密钥。

但是,当然 - 要求用户每次想使用该应用程序时都输入一个特殊密码将不是您的用户会喜欢的解决方案。因此,您将不得不 提供 用户以某种方式存储该密码 - 这再次增加了潜在攻击的范围。

长话短说:如果没有 "remote" 服务,您只需在 "user experience" 和 "enough security" 之间取得平衡。根据您的用户群,您必须确定对这些人来说什么更重要——安全还是方便。