我对 RSA 的理解是,Alice 可以创建一个公钥和一个私钥组合,然后将公钥发送给 Bob。然后鲍勃可以使用公钥加密某些东西,而爱丽丝将使用公钥和私钥组合来解密它。
但是,爱丽丝如何加密要发送给鲍勃的东西?Bob 将如何解密它?我问是因为我很好奇当我登录我的银行网站时,我的银行如何向我发送我的在线报表等数据。我的浏览器如何解密这些信息?我没有私钥。
我对 RSA 的理解是,Alice 可以创建一个公钥和一个私钥组合,然后将公钥发送给 Bob。然后鲍勃可以使用公钥加密某些东西,而爱丽丝将使用公钥和私钥组合来解密它。
但是,爱丽丝如何加密要发送给鲍勃的东西?Bob 将如何解密它?我问是因为我很好奇当我登录我的银行网站时,我的银行如何向我发送我的在线报表等数据。我的浏览器如何解密这些信息?我没有私钥。
基本上,程序是:
Alice will use the public and private key combo to decrypt it
爱丽丝只会用她的私钥解密它。
However, how can Alice encrypt something to be sent over to Bob? How would Bob decrypt it?
Alice 需要 Bob 的公钥才能向他发送一些东西。通常,公钥加密用于身份验证、不可否认性(如签名)和对称密钥的分发(加密/解密长消息的速度更快)。
很简单,你需要一把钥匙。
SSL/TLS 通过在连接设置期间创建对称会话密钥来解决此问题。公钥加密用于建立此会话密钥,然后用于双向数据通信。阅读有关 TLS 的更多信息
我没有创建这个,但是有人与我分享了这个视频,它帮助这个理论变得更有意义。一如既往,魔鬼在细节中(实施)。
总的来说,在准备 Microsoft C# 认证时,我很长一段时间都在努力理解公钥密码学以及 PKI 的其他元素,例如数字签名和证书。
我在 cgi.com 上看到了一份简明详细的 PDF 格式的解释。我知道这又回到了好老爱丽丝和鲍勃身上!但它的图表和注释确实为我理清了问题,最后还有一些发人深省的问题。绝对推荐它。
访问http://www.cgi.com/files/white-papers/cgi_whpr_35_pki_e.pdf
但是,爱丽丝如何加密要发送给鲍勃的东西?Bob 将如何解密它?我问是因为我很好奇当我登录我的银行网站时,我的银行如何向我发送我的在线报表等数据。我的浏览器如何解密这些信息?我没有私钥。
这就是你错的地方;你确实有一个私钥。作为握手过程的一部分,每一方都会生成两个密钥:一个公钥和一个私钥。客户端将其公钥发送给服务器,服务器将使用它来加密发送给客户端的所有数据。同样,服务器生成两个密钥并将其公钥发送给客户端,客户端将使用它来加密发送到服务器的所有数据。
在很多场景下,非对称密钥算法只用于交换另一个密钥,即对称算法。
在这种情况下,Alice 将使用 Bob 的公钥来加密数据,然后 Bob 将使用他的私钥对其进行解密。
本质上,公钥加密数据,私钥解密数据。由于每个用户都有公钥和私钥,因此您可以安全地将数据发送给任何其他用户。
If you connect to the site of your bank it works a lot of cryptographic things. The most important is that you use public key of the bank to send a piece of information to the bank, because in every SSL (https) connection server send to client it's public key packed as a certificate.
证书和全球 PKI 的使用很重要。你要确定,如果你把你的银行密码给银行,另一边就是你的银行,而不是其他人。这将得到解决,因为在每台计算机上都有少量知名组织(如 VeriSign)的公钥,银行不仅向您发送他的服务器公钥,还向您发送证书。例如,证书是由 VeriSign 签名的消息,上面写着“此公钥确实来自 XYZ 银行”。因此,因为您拥有 VeriSign 的公钥,您可以首先验证该银行的服务器证书是否正确。因此,您可以确定,您确实与您的银行进行了沟通。