我们现在正在开发一个相当企业级的应用程序,并且要求所有数据都在本地磁盘上加密。目前,执行此操作的方法是使用登录时输入的用户名/密码来构建加密密钥。这些值总是保存在内存中,因此有人很难破解(不是不可能,但很难)。
现在应用程序需要使用SSO登录。根据提供程序的不同,实现会有所不同,但我们可以假设我们可以设想由我们的服务器或使用AccountManager提供的值生成的某些唯一值,或者更奇特的东西。无论如何,我们需要一种方法来从未保存在磁盘上的源值构建加密密钥。如上所述,那些当前是用户名/密码,对于SSO,可能是以另一种方式生成的。
如果我们总是在线,我们可以依靠服务器将该值保存在数据库中并在登录时返回。但是,此应用程序也应该能够脱机运行(当然,在您完成初始登录之后)。
有什么想法?我曾经探索过只加密整个磁盘,但是我们无法真正强制用户这样做,如果已经有很多数据,那就需要很长时间。
有没有办法将这些值保存在操作系统中某些不易读取的地方,即使是root用户?例如,如果我们有锁屏,是否有某种方法可以使用锁屏密码来保存加密数据?我的理解是,这是用于磁盘加密的方法,在iOS上有类似的东西。我已经在很多地方读过4位数的代码并不是非常安全,但它会非常好,而且比我们现在的要好得多。
还有其他想法吗?我觉得我错过了一些明显的东西。
提前致谢。