【问题标题】:How to distribute public key in asymmetric encryption algorithms?如何在非对称加密算法中分发公钥?
【发布时间】:2011-08-08 13:51:59
【问题描述】:

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

  • 公钥和
  • 私钥

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

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

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

谢谢!

【问题讨论】:

  • 我想你的意思是服务器上的 private 密钥解密客户端的消息,对吧?为什么不直接安装 SSL 证书?

标签: java encryption encryption-asymmetric


【解决方案1】:

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

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

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

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

服务器通常不知道用户是谁(从密码学上讲),客户端可能会为它发送的每个请求制作一个新的证书和公钥/私钥对。 this IBM article 中详细介绍了一种更改方法。在通常的 HTTPS 场景中最终发生的是私钥和公钥加密的混合;您可以在this related SO post 阅读更多相关信息。

祝你好运!

【讨论】:

  • 这就是解释。
  • @Federico Lebrón 你能给我一些链接吗?
  • 链接到什么,具体来说? (请注意,我帖子中的彩色文字都是链接,“密钥签名方”、“Diffie-Hellman”、“this IBM article”和“this related SO post”)。如果你愿意,这里有一个使用 Diffie Hellman in Java 的密钥交换实现。
猜你喜欢
  • 2019-12-29
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多