【问题标题】:exchange of public key as a serialized object将公钥交换为序列化对象
【发布时间】:2011-08-21 13:41:26
【问题描述】:

如何将公钥交换到客户端。我已经通过使用私钥使用 RSA 算法加密了文档(文本文件),然后使用序列化将公钥作为 java.security.Key 对象存储在文件中。我想知道序列化公钥对象的完整性是否这是安全的选择或任何其他可用的选择。

【问题讨论】:

    标签: java cryptography public-key public-key-encryption


    【解决方案1】:

    公钥通常只是作为一段文本交换。然后将其导入密钥库。确切的做法取决于实现(我一直使用 PGP)。

    我不会将密钥公开为 java.security.Key 的序列化形式,因为它不是真正的标准。其简单形式的关键是交换的标准形式。

    关于将密钥公开为下载:它是公开的,因此入侵者无法通过下载您的密钥来做任何事情。唯一可能出错的是有人可以伪造您的服务器并托管不同的密钥。然后使用该密钥的私钥签名并声称是您。当然,如果您将其邮寄给某人,您可能会遇到同样的问题。但至少你会知道你把它寄给了谁。

    最安全的方法是越界散布密钥。就像在 U 盘上一样。

    根据你的事业,我认为你可以承受风险。

    【讨论】:

      【解决方案2】:

      Joeri 已经回答了安全方面的问题 - 我对此没有什么要补充的。

      您可能遇到的主要问题是库版本之间的序列化表示发生变化,这是任何使用 Java 序列化的潜在问题。

      当然还有其他方法可以做到这一点。 RSA 公钥应具有行业标准编码,您可以使用getEncoded() 方法访问该编码。这为您提供了一个字节数组,您可以将其write 转换为FileOutputStream。所以真的很简单。

      【讨论】:

      猜你喜欢
      • 2016-11-10
      • 1970-01-01
      • 2014-08-08
      • 2015-10-19
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2020-11-26
      相关资源
      最近更新 更多