我正在按照说明in the official Android documentation在我的应用中实施备份。我正在备份的信息可能很敏感,所以我想根据上述文件中的建议加密它:
您应该始终谨慎使用备份来存储敏感数据,例如用户名和密码。
在需要时生成随机密钥并存储它的recommended approach to ciphering user data在备份情况下没有帮助,因为如果我正在恢复备份,则生成的密钥可能已丢失(或者必须包含在备份中)。同样,我不能使用任何设备标识符(例如IMEI)来生成确定性密钥,因为备份可能合法地恢复到不同的设备上。
要求用户提供密码来保护密钥可以跨设备工作,但onRestore
完全在后台完成。要从用户那里获取密码,我必须将密文保存到存储器,在下次启动主要活动时记下密码,然后提示用户。除了那个faff之外,我真的不相信用户会输入一次密码,再也不会再次使用它,直到恢复发生,可能在几年之后,然后能够记住它。我不会!然后就没有办法恢复备份了,我可能根本没有实现备份。
似乎唯一合理的选择是拥有一个存储在我的APK中的固定密钥,但我相信我不必在此解释为什么它不会提供任何额外的安全性。我会考虑如果我只是将秘密存储到内部存储器中,但任何能够在设备上安装狡猾的备份传输或非法访问备份服务器的人都不会因为必须反编译或检查应用程序而感到不便。 / p>
有人能为我提供更好的选择吗?