公钥加密如何工作

时间:2010-05-18 00:24:41

标签: cryptography rsa public-key

我对RSA的理解是Alice可以创建公钥和私钥组合,然后将公钥发送给Bob。然后,Bob可以使用公钥加密某些内容,Alice将使用公钥和私钥组合来解密它。

然而,Alice如何加密要发送给Bob的东西?鲍勃将如何解密?我问,因为我很好奇当我登录银行网站时,我的银行会向我发送数据,例如我的在线报表。我的浏览器如何解密该信息?我没有私钥。

8 个答案:

答案 0 :(得分:9)

基本上,程序是:

  1. 客户端连接到服务器并要求提供服务器的证书。证书包含公钥和有关服务器标识的信息。
  2. 假设客户对服务器的身份感到满意,它会生成一个随机数 P 并使用服务器的公钥对其进行加密。
  3. 只有服务器可以解密 P (使用它的私钥 - 不与任何人共享),因此当客户端将加密的随机数发送到服务器时,服务器会对其进行解密。
  4. 客户端和服务器都使用 P 生成对称密钥以用于对称加密算法,只知道客户端和服务器知道 P的值用于生成密钥。

答案 1 :(得分:4)

Alice will use the public and private key combo to decrypt it

Alice会用她的私钥解密它。

However, how can Alice encrypt something to be sent over to Bob? How would Bob decrypt it?

Alice需要Bob的公钥才能向他发送内容。 通常,公钥加密用于身份验证,不可否认性(如签名)和对称密钥的分发(加密/解密长消息的速度更快)。

答案 2 :(得分:3)

很简单,你需要一把钥匙。

SSL / TLS通过在连接设置期间创建对称会话密钥来解决此问题。公钥加密用于建立该会话密钥,然后将其用于双向数据通信。 Read more about TLS

答案 3 :(得分:2)

我没有创建这个,但有人和我分享了这个视频,这有助于理论更有意义。一如既往的细节(实施)中的魔鬼。

http://www.youtube.com/watch?v=YEBfamv-_do

答案 4 :(得分:2)

总的来说,在准备Microsoft C#认证的同时,我一直在努力理解公钥密码学以及PKI的其他元素,如数字签名和证书。

我在cgi.com上以简洁详细的PDF形式发现了一个解释。我知道这是回到好老的爱丽丝和鲍勃!但它的图表和笔记确实为我解决了问题,最后也有一些发人深省的问题。绝对推荐它。

访问http://www.cgi.com/files/white-papers/cgi_whpr_35_pki_e.pdf

答案 5 :(得分:0)

在这种情况下,Alice会使用Bob的公钥来加密数据,然后Bob会用他的私钥对其进行解密。

实质上,公钥加密数据,私钥解密该数据。由于每个用户都有公钥和私钥,因此您可以安全地将数据发送给任何其他用户。

答案 6 :(得分:0)

  

然而,Alice如何加密要发送给Bob的东西?鲍勃将如何解密?我问,因为我很好奇当我登录银行网站时,我的银行会向我发送数据,例如我的在线报表。我的浏览器如何解密该信息?我没有私钥。

这是你错的地方;你有私钥。作为握手过程的一部分,每一方都生成两个密钥:公钥和私钥。客户端将其公钥发送给服务器,服务器将使用它来加密发送到客户端的所有数据。同样,服务器生成两个密钥并将其公钥发送给客户端,客户端将使用它来加密发送到服务器的所有数据。

在许多情况下,非对称密钥算法仅用于交换另一个密钥,用于对称算法。

答案 7 :(得分:0)

如果您连接到银行的网站,它会运行大量加密操作。最重要的是你使用银行的公钥向银行发送一条信息,因为在每个SSL(https)连接服务器发送给客户端它的公钥作为证书打包。

证书和全球PKI的使用很重要。你要确定,如果你给银行你的银行销,那另一边真的是你的银行而不是其他人。这将得到解决,因为在每台计算机上都有知名组织(如VeriSign)的少量公钥,银行不仅会向您发送服务器公钥,还会向您发送证书。证书是由VeriSign签署的一条消息,例如“这个公钥真的来自银行XYZ”。因此,您拥有VeriSign的公钥,您可以先验证该银行的服务器证书是否正确。所以你可以肯定,你真正与银行沟通