如何安全地存储RSA私钥以在Java应用程序中使用它?

时间:2014-11-29 00:44:19

标签: java security key rsa keystore

我想存储我的RSA私钥,该应用程序用于在发送到服务器之前对其数据进行安全签名,以便窃取密钥比仅从app文件夹中复制更难。

我知道Java KeyStore可以用来存储密钥并通过运行时加载它们,但是如何在没有密码的情况下从KeyStore加载密钥?

例如,我已经加载了一个密钥" mykey"进入KeyStore,我签了App.jar。我想自动从KeyStore加载运行时的密钥,而不指定KeyStore的密码,如果请求它的应用程序已签名。

也许,我不能正确理解KeyStore的原则。但任务是签署发送到服务器的数据并安全地存储密钥。 (该应用程序是一个POS应用程序,所以它应该自动加载,没有启动时给出的任何密码。)

1 个答案:

答案 0 :(得分:0)

正如其他人所指出的那样,你无法真正阻止拥有应用程序(因此拥有私钥)的人提取私钥。您可以对密钥进行模糊处理,这可能是合理的,具体取决于您要完成的任务。在这种情况下,您可以在代码中的各个位置隐藏密钥密码,并使用您提到的KeyStore。这不是很安全,但它可能对你的目的来说“足够好”。

分发给最终用户的任何密钥都不能被视为秘密。

更重要的是,如果您的服务器信任任何客户端代码(无论是否已签名),您的服务器可能存在安全问题。您必须找到一种不同的方式来强制执行安全属性,而不是信任客户端。