我不是网络专家,所以我对互联网协议和 SSL 知之甚少。我的问题是因为不了解 https 的运作方式。
基本上,在 https 中,客户端和服务器会商定一个阶段,即加密算法和私钥,用于解密可能通过网络传输的任何加密信息,但这一切都是为了建立安全可靠的连接。但如果在建立安全连接之前发送私钥,那么如何防止黑客拦截此私钥,从而拦截任何加密的 https 请求?但由于黑客拥有私钥,因此数据很容易被解密,那么安全性何在?
这个问题一直困扰着我,感谢您的所有回答!
答案1
私钥永远不会通过网络发送,否则它将不再是私有的。服务器的私钥用于对服务器进行身份验证,而不是用于加密。对于实际加密,使用会话密钥,因此问题仍然是客户端和服务器如何在不让观察者知道的情况下就会话密钥达成一致。
将身份验证与密钥选择相结合的一种方法是,客户端选择一个随机会话密钥,并使用服务器的公钥对其进行加密。如果服务器可以解密,则它必须拥有相应的私钥,因此是正确的服务器,并且知道客户端选择的会话密钥。如果它没有正确的私钥,它将无法解密会话密钥,因此无法解密发送的数据。
这种方法的一个缺陷是,如果服务器私钥后来被人知道,那么之前记录的所有会话都可以被解密。因此,一种商定一个以后无法被发现的会话密钥的方法是Diffie-Hellman 密钥交换.这也被称为增强体质。
答案2
我们可能需要一个更了解 SSL 和 TLS 的人来权衡,但私钥的整个想法是它永远不会被发送。用私钥加密的数据只能用匹配的公钥解密,反之亦然。
看看协议部分维基百科上的 TLS 文章中提到,两端在协议设置期间小心地交换了足够的信息以建立加密连接。基本上,在任何时候都不会以明文形式发送任何加密密钥。