微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。