如何在非对称加密算法中分发公钥?

时间:2011-08-08 13:52:00

标签: java encryption encryption-asymmetric

非对称加密算法有两个关键

  • 公钥和
  • 私钥

对于客户端和服务器的概念,它需要服务器端的公钥来解密客户端的消息。

所以我的问题是我们如何在客户端和服务器之间共享公钥?

我正在使用JAVA,所以如果您的示例包含java代码,这对我来说没问题,或者如果有任何图片信息,这将非常正常。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果客户端之前没有遇到过服务器,那么他不知道期望什么公钥,就必须使用第三方中介来验证所涉及的身份。在P2P场景中,您拥有所谓的“key signing parties”,人们通过面对面的方式交换公钥。

如果人们已经彼此认识,那么,即使通过不安全的渠道,您也可以使用Diffie-Hellman之类的算法来交换您的身份,您可以根据已有的有关该人身份的信息进行验证。

在常见的HTTPS方案中,客户端可能还不知道服务器,但服务器提供证书,由相互信任的第三方验证,以确认其身份。例如,Paypal可能会向您出示一份证书,上面写着“VeriSign同意我就是我说的那个人。”如果您信任VeriSign,这个“信任网”就像它所说的那样意味着您会相信Paypal就是他们所说的人他们是。

在客户端 - 服务器方案中,服务器需要私钥和公钥 - 公钥用于加密返回客户端的消息,私钥用于解密客户端发送到的消息他。

服务器通常不知道用户是谁(以加密方式说),客户端可以为其发送的每个请求创建新证书和公钥/私钥对。 this IBM article详细介绍了更改此方法的方法。在通常的HTTPS场景中最终发生的是私钥和公钥加密的混合;您可以在this related SO post中了解更多相关内容。

祝你好运!