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



非对称加密算法中有两个密钥

  • 公钥和
  • 私钥

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

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

我正在使用JAVA,所以如果你的例子包含JAVA代码,这对我来说是好的,或者如果有任何图形信息,这将非常好。

谢谢!

如果客户端以前没有见过服务器,所以他不知道期望得到什么公钥,则必须使用第三方中介来验证所涉及的身份。在P2P场景中,你有所谓的"密钥签名方",人们通过面对面的会议交换公钥。

如果人们已经认识彼此,那么,即使通过一个不安全的通道,你也可以使用像Diffie-Hellman这样的算法来交换你的身份,你可以根据你已经知道的那个人的身份信息来验证你的身份。

在常见的HTTPS场景中,客户机可能还不知道服务器,但是服务器提供一个证书,由相互信任的第三方验证,该证书承认客户机的身份。例如,Paypal可能会给你一个证书,上面写着"VeriSign同意我是我所说的那个人",如果你信任VeriSign,这个所谓的"信任网络"意味着你会相信Paypal是他们所说的那个人。

在您的客户机-服务器场景中,服务器需要它的私钥和公钥——公钥用于加密返回给客户端的消息,私钥用于解密客户端发送给它的消息。

服务器通常不知道用户是谁(从密码学上讲),客户端可能会为它发送的每个请求生成一个新的证书和公共/私有密钥对。这篇IBM文章详细介绍了一种改变这种情况的方法。在通常的HTTPS场景中,最终发生的是私钥和公钥加密的混合;你可以在这篇相关的文章中了解更多。

祝你好运!

最新更新