安全保存RSA公钥/私钥

3
我创建并使用RSA公钥/私钥来加密/解密一些消息。我将它们作为字符串存储到共享首选项中,需要时再从字符串创建。一切都运行得很完美,但是将我的私钥作为字符串存储在共享首选项中是否安全?通过这个问题,我了解到:

SharedPreferences MODE_PRIVATE security

有人可以访问我的共享首选项,并从字符串生成我的私钥。我该怎么做才能在保存它时使我的私钥更安全?


1
您的标题询问公钥,但您的问题询问私钥。您不需要安全地存储公钥。它是公开的。只有私钥需要安全存储。简单的答案是使用 java.security.Keystore. - user207421
1个回答

3
这完全取决于私钥/公钥对的敏感级别。我认为将它们存储在sharedpreferences中不是个坏主意。您的密钥对相对于应用程序目录进行存储,并且具有系统保护,以防止外部访问。但是,正如“shared”Preferences所暗示的那样,您的密钥对在应用程序组件之间共享。因此,如果您需要更好的保护,请考虑将密钥对存储在KeyStore类中。目前来说,这是密钥对保护的最佳解决方案。它提供了基于密码的密钥保护。
更新:这里有一篇关于Android keystore和keychain使用的很棒的文章here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接