据我所知,SSL涉及公共-私钥对的使用。这是如何实现双向交流的?
假设我有一个服务器,我希望与之安全地通信。我连接到它,它提供给我一个包含它的公钥的证书(假设证书是有效的)。然后,我接受我的请求,并使用这个公钥加密它,并将得到的密文传输到服务器。这种通讯是安全的,不被窃听。但是服务器如何安全地返回我的结果呢?我缺少一个公钥/私钥对,而且没有证书。
发布于 2011-07-12 20:59:20
这并不完全正确。在SSL中,有两种情况发生:
SSL确实以一种方式使用公共/私有,因为X509证书用于标识连接的至少一端。这些证书使用非对称密钥对进行签名。
发布于 2011-08-14 21:00:42
如果您有一个方向的安全通信,则始终可以在两个方向上进行安全通信。发送方只需生成一个随机字符串,将其发送到另一端,然后他们就可以双向地使用该随机字符串作为密钥进行通信。
公钥对的唯一用途是身份验证,而不是加密。如果我想把我的信用卡信息发送给亚马逊,我想确保我真的在和亚马逊交谈,而不是其他人。由于Amazon不关心我是谁(因为我无论如何都会发送用户和密码),所以我没有理由需要一个公共私钥对或认证。
在任何一方都没有证书的情况下,我们仍然可以建立一个不受窃听的安全连接。但双方都不知道他们在和谁说话。
发布于 2011-07-13 04:00:39
本质上,客户端生成一个随机对称密钥,并使用服务器的公钥将其发送到服务器。客户端已经知道这个对称密钥,因此服务器不需要发回任何东西,从而消除了每个客户端都需要一个公钥的需要。
然后使用双方现在拥有的相同的随机密钥对请求进行加密,因此双向通信继续进行。
https://crypto.stackexchange.com/questions/32
复制相似问题