我正在开发一个Android消息传递应用程序。当用户注册rsa私钥和公钥时,使用这些密钥和aes消息进行加密和解密。
私钥存储在服务器中的电话和公钥中。如果用户重置或卸载应用程序,则所有密钥都将丢失,因此无法解密旧邮件。
当用户卸载应用程序时,如何检索旧私钥而不将其存储在服务器中?
答案 0 :(得分:1)
有多种方法可以在Android中保留数据。数据库,SavedInstanceState,SharePreferences和文件。在用户取消安装应用程序后,只有文件仍然存在。将其保存在文件中是您唯一的选择。
答案 1 :(得分:1)
您是否使用Android Keystore存储密钥或使用自己的文件存储?
Android密钥库
使用Android Keystore无法恢复密钥,因为它们只能由创建密钥的应用程序使用,如果有重大更改则会被丢弃。
我猜您使用RSA密钥协商AES对称加密密钥。因此,您需要备份AES加密密钥(例如在服务器中...),并建立恢复密钥的机制,如常见的“记住密码”实用程序
自定义密钥存储
如果您将密钥存储到没有AndroidKeystore的设备中,您可以定义自己的机制来恢复密钥。例如,使用密码加密密钥并将密钥存储到设备的公共目录中。然后可以恢复密钥,提示用户输入密码
注意:考虑每种情况下的安全风险。例如,服务器中的非加密AES密钥意味着恶意服务器可以解密消息。或者弱恢复密钥机制会降低系统的整体安全级别