我经常听到有人说,如果你通过 HTTPS 登录到一个网站——银行、GMail 等等,你传输的信息是安全的,不会被第三方窥探。我一直对这怎么可能有点困惑。
当然,我非常了解(我认为)加密的概念,如果不知道加密密钥,人们将很难破解加密。但是,我的理解是,当建立 HTTPS 连接时,在建立加密连接之前,所涉及的各种计算机之间会“讨论”加密密钥。选择加密密钥可能涉及许多因素,我知道这与可能来自其他服务器的 SSL 证书有关。我不知道确切的机制。
但是,在我看来,如果必须在加密过程开始之前在服务器和客户端之间协商加密密钥,那么任何有权访问网络流量的攻击者也将能够监视密钥的协商,并且会因此知道用于建立加密的密钥。如果它是真的,这将使加密变得无用。
显然情况并非如此,因为如果是,HTTPS 就没有任何价值,而且人们普遍认为 HTTPS 是一种相当有效的安全措施。但是,我不明白为什么它不是真的。简而言之:客户端和服务器如何在不向任何观察者透露加密密钥的情况下通过 HTTPS 建立加密连接?