如何存储RSA私钥,公钥

时间:2017-07-18 10:24:50

标签: android encryption rsa private-key

我正在开发一个Android消息传递应用程序。当用户注册rsa私钥和公钥时,使用这些密钥和aes消息进行加密和解密。

私钥存储在服务器中的电话和公钥中。如果用户重置或卸载应用程序,则所有密钥都将丢失,因此无法解密旧邮件。

当用户卸载应用程序时,如何检索旧私钥而不将其存储在服务器中?

2 个答案:

答案 0 :(得分:1)

有多种方法可以在Android中保留数据。数据库,SavedInstanceState,SharePreferences和文件。在用户取消安装应用程序后,只有文件仍然存在。将其保存在文件中是您唯一的选择。

答案 1 :(得分:1)

您是否使用Android Keystore存储密钥或使用自己的文件存储?

Android密钥库

使用Android Keystore无法恢复密钥,因为它们只能由创建密钥的应用程序使用,如果有重大更改则会被丢弃。

我猜您使用RSA密钥协商AES对称加密密钥。因此,您需要备份AES加密密钥(例如在服务器中...),并建立恢复密钥的机制,如常见的“记住密码”实用程序

自定义密钥存储

如果您将密钥存储到没有AndroidKeystore的设备中,您可以定义自己的机制来恢复密钥。例如,使用密码加密密钥并将密钥存储到设备的公共目录中。然后可以恢复密钥,提示用户输入密码

注意:考虑每种情况下的安全风险。例如,服务器中的非加密AES密钥意味着恶意服务器可以解密消息。或者弱恢复密钥机制会降低系统的整体安全级别