如何将公钥交换到客户端。我已经通过使用私钥使用 RSA 算法加密了文档(文本文件),然后使用序列化将公钥作为 java.security.Key 对象存储在文件中。我想知道序列化公钥对象的完整性是否这是安全的选择或任何其他可用的选择。
问问题
2015 次
2 回答
2
公钥通常只是作为一段文本交换。然后将其导入密钥库。执行的确切方法取决于实现(我一直使用 PGP)。
我不会将密钥公开为 java.security.Key 的序列化形式,因为它不是真正的标准。其简单形式的关键是交换的标准形式。
将密钥公开为下载:它是公开的,因此入侵者无法通过下载您的密钥来做任何事情。唯一可能出错的是有人可以伪造您的服务器并托管不同的密钥。然后使用该密钥的私钥签名并声称是您。当然,如果您将其邮寄给某人,您可能会遇到同样的问题。但至少你会知道你把它寄给了谁。
最安全的方法是越界散布密钥。就像在 USB 棒上一样。
根据您的原因,我认为您可以承受风险。
于 2011-05-09T10:30:48.540 回答
0
乔里已经回答了安全方面的问题——我对此没有什么要补充的。
您可能遇到的主要问题是库版本之间的序列化表示发生变化,这是任何使用 Java 序列化的潜在问题。
当然还有其他方法可以做到。RSA 公钥应该具有您可以使用该getEncoded()
方法访问的行业标准编码。这为您提供了一个字节数组,您可以write
将其添加到FileOutputStream
. 所以这真的很容易。
于 2011-05-09T10:34:05.963 回答