encryption - Android Keystore 和“设置”应用程序的“清除数据”操作是否相关?
问题描述
我正在开发一个系统应用程序,我将一些敏感数据存储在 EncryptedSharedPreference 中。如果我清除 android Settings 应用程序的数据,我意识到我的应用程序无法按预期工作。发生这种情况是因为如果我尝试获取 EncryptedSharedPreferences 的实例,它会抛出 IOException。当我观察 encrypted_myapp_pref.xml 文件时,我可以看到该文件中存在所有加密值,并且该文件根本没有更改。
我读到 Jetpack Security 有两种类型的密钥 - 主密钥和子密钥:
MasterKey - 加密和解密所有子密钥,主密钥存储在 Android 密钥库中。 子密钥 - 所有用户数据和所有数据 + 子密钥的加密和解密都以加密格式存储在 EncryptedSharedPreferences 本身中。
我的理论是:当我们对设置应用程序进行“清除数据”时,它也会清除 Android Keystore 实例。所有使用sharedUserId="android.uid.system" + EncryptedSharedPreferences
. 但我没有找到任何支持我的理论的文件。
问题陈述:如果我们使用具有共享用户 ID 的系统应用程序并且如果我们清除设置应用程序的数据,在终止我们的应用程序并重新启动或设备重新启动时,我们的应用程序(任何系统应用程序)无法检索 EncryptedSharedPreferences 实例并失败带有 IOException。
解决方案
推荐阅读
- vba - 如何在 Microsoft Access 查询中自动执行 CTRL + H 函数?
- c# - 如何从代码更新 Blazor 静态布局
- sql - 无法使用 IBM DB2 LOAD 工具加载数据集
- apache-kafka-connect - Kinesis Kafka 连接器
- android - 当我清除APP缓存时,自动登录不起作用
- python - 更改读数大小 python 小部件
- python - 使用python将文件夹的内容放入zip
- html - 关闭下拉子菜单无法正常工作
- python - ValueError:未能找到可以处理输入的数据适配器
- javascript - JS中变量变化时调用不同的事件