2

我们现在正在开发一个相当企业级的应用程序,任务是在本地磁盘上加密所有数据。目前,这样做的方法是使用登录时输入的用户名/密码来构建加密密钥。这些值始终保存在内存中,因此有人很难破解它(并非不可能,但很困难)。

现在应用程序需要使用 SSO 登录。根据提供者的不同,实现会有所不同,但可以说我们可以想象一些独特的值是由我们的服务器生成的,或者使用来自 AccountManager 的值,或者更奇特的东西. 不管它完成了,我们需要一种方法来从未保存在磁盘上的源值构建加密密钥。如上所述,这些当前是用户名/密码,对于 SSO,可能是以另一种方式生成的。

如果我们一直在线,我们可以依靠服务器将该值保存在数据库中并在登录时返回。但是,此应用程序也应该能够离线运行(当然,在您完成初始登录之后)。

有什么想法吗?我曾探索过只加密整个磁盘,但我们不能真正强制用户这样做,如果已经有大量数据,那将需要很长时间。

有没有办法将这些值保存在操作系统中不易读取的某个位置,即使使用 root 也是如此?例如,如果我们有一个锁屏,有没有办法使用锁屏密码来保存加密数据?据我了解,这是用于磁盘加密的方法,iOS 上也有类似的方法。我在很多地方读到 4 位代码并不是非常安全,但它会非常好,而且比我们现在拥有的要好得多。

还有其他想法吗?我觉得我错过了一些明显的东西。

提前致谢。

4

0 回答 0