【问题标题】:how does public key cryptography work [duplicate]公钥密码学如何工作[重复]
【发布时间】:2011-02-20 16:27:22
【问题描述】:
我对 RSA 的理解是,Alice 可以创建公钥和私钥组合,然后将公钥发送给 Bob。然后 Bob 可以使用公钥加密某些东西,Alice 将使用公钥和私钥组合来解密它。
但是,Alice 如何加密要发送给 Bob 的东西? Bob 将如何解密它?我问是因为我很好奇当我登录我的银行网站时,我的银行如何向我发送我的在线报表等数据。我的浏览器如何解密这些信息?我没有私钥。
【问题讨论】:
标签:
cryptography
rsa
public-key
【解决方案1】:
基本上,程序是:
- 客户端连接到服务器并请求服务器的证书。证书包含公钥和有关服务器身份的信息。
- 假设客户端对服务器的身份感到满意,它会生成一个随机数 P 并使用服务器的公钥对其进行加密。
- 只有服务器可以解密 P(使用它的私钥 - 不与任何人共享),因此当客户端将加密的随机数发送到服务器时,服务器会对其进行解密。
- 客户端和服务器都使用 P 生成对称密钥以用于对称加密算法,在知道只有客户端和服务器知道 P 的值的情况下是安全的em> 用于生成密钥。
【解决方案2】:
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 的公钥才能向他发送一些东西。
通常,公钥加密用于身份验证、不可否认性(如签名)和对称密钥的分发(加密/解密长消息的速度更快)。
【解决方案6】:
但是,Alice 如何加密要发送给 Bob 的东西? Bob 将如何解密它?我问是因为我很好奇当我登录我的银行网站时,我的银行如何向我发送我的在线报表等数据。我的浏览器如何解密这些信息?我没有私钥。
这是你错的地方;你确实有一个私钥。作为握手过程的一部分,每一方都会生成两个密钥:一个公钥和一个私钥。客户端将其公钥发送给服务器,服务器将使用它来加密发送给客户端的所有数据。同样,服务器生成这两个密钥并将其公钥发送给客户端,客户端将使用它来加密发送到服务器的所有数据。
在很多场景中,非对称密钥算法仅用于交换另一个密钥,这是一个对称算法。
【解决方案7】:
在这种情况下,Alice 将使用 Bob 的公钥加密数据,然后 Bob 将使用他的私钥解密。
本质上,公钥加密数据,私钥解密数据。由于每个用户都有公钥和私钥,因此您可以安全地将数据发送给任何其他用户。
【解决方案8】:
如果您连接到您的银行网站,它会执行很多加密操作。最重要的是您使用银行的公钥向银行发送一条信息,因为在每个 SSL (https) 连接服务器中,它都将公钥打包为证书。
使用证书和全球 PKI 很重要。你要确定,如果你把你的银行密码给银行,另一边就是你的银行,而不是其他人。这将得到解决,因为在每台计算机上都有少量知名组织(如 VeriSign)的公钥,银行不仅向您发送他的服务器公钥,还向您发送证书。例如,证书是由 VeriSign 签名的消息,上面写着“此公钥确实来自 XYZ 银行”。因此,因为您拥有 VeriSign 的公钥,您可以首先验证该银行的服务器证书是否正确。所以您可以确定,您确实与您的银行沟通。