Android Keystore 和“设置”应用的“清除数据”操作是否相关?

问题描述

我正在开发一个系统应用程序,我将一些敏感数据存储在 EncryptedSharedPreference 中。我意识到如果我清除了 android 设置应用程序的数据,我的应用程序将无法按预期工作。 发生这种情况是因为如果我尝试获取 EncryptedSharedPreferences 的实例,它会抛出 IOException。当我观察 encrypted_myapp_pref.xml 文件时,我可以看到该文件中存在所有加密值,并且该文件根本没有更改。

我了解到 Jetpack Security 有两种类型的密钥 - 主密钥和子密钥:

MasterKey - 加密和解密所有子密钥,主密钥存储在 Android 密钥库中。 子密钥 - 所有用户数据的加密和解密以及所有数据 + 子密钥都以加密格式存储在 EncryptedSharedPreferences 本身中。

我的理论是:当我们对设置应用程序进行“清除数据”时,它也会清除 Android Keystore 实例。所有使用 sharedUserId="android.uid.system" + EncryptedSharedPreferences 的系统应用都使用相同的 android 密钥库实例。但是我没有找到任何支持我的理论的文件

问题说明:如果我们正在使用具有共享用户 ID 的系统应用程序,并且如果我们清除设置应用程序的数据,在终止我们的应用程序并重新启动或设备重新启动时,我们的应用程序(任何系统应用程序) 无法检索 EncryptedSharedPreferences 实例并因 IOException 而失败。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)