观察正在建立的 HTTPS 连接的人怎么可能不知道如何解密呢?

信息安全 加密 tls 密码学 中间人 密钥交换
2021-08-21 09:04:22

我经常听到有人说,如果你通过 HTTPS 登录到一个网站——银行、GMail 等等,你传输的信息是安全的,不会被第三方窥探。我一直对这怎么可能有点困惑。

当然,我非常了解(我认为)加密的概念,如果不知道加密密钥,人们将很难破解加密。但是,我的理解是,当建立 HTTPS 连接时,在建立加密连接之前,所涉及的各种计算机之间会“讨论”加密密钥。选择加密密钥可能涉及许多因素,我知道这与可能来自其他服务器的 SSL 证书有关。我不知道确切的机制。

但是,在我看来,如果必须在加密过程开始之前在服务器和客户端之间协商加密密钥,那么任何有权访问网络流量的攻击者也将能够监视密钥的协商,并且会因此知道用于建立加密的密钥。如果它是真的,这将使加密变得无用。

显然情况并非如此,因为如果是,HTTPS 就没有任何价值,而且人们普遍认为 HTTPS 是一种相当有效的安全措施。但是,我不明白为什么它不是真的。简而言之:客户端和服务器如何在不向任何观察者透露加密密钥的情况下通过 HTTPS 建立加密连接?

4个回答

这就是公钥密码术的魔力。涉及数学。

最容易理解的非对称密钥交换方案是使用 RSA 的非对称加密。这是一个过于简单的描述:

n是一个大整数(比如 300 位);选择n使得它是两个大小相似的素数的乘积(我们称它们为pq)。然后我们将计算“模n ”:这意味着每当我们将两个整数相加或相乘时,我们将结果除以n并保留余数(必然在0n-1之间)。

给定x,计算x 3n很容易:将xx相乘,然后再与x相乘,然后除以n并保留余数。每个人都可以这样做。另一方面,给定x 3 modulo n,恢复x似乎过于困难(最知名的方法对于现有技术来说太昂贵了)——除非你知道pq,在这种情况下它又变得容易了。但是从n计算pq似乎也很难(这是被称为整数分解的问题)。

所以这就是服务器和客户端所做的事情:

  • 服务器有一个n并且知道相应的pq(它生成它们)。服务器将n发送给客户端。
  • 客户端选择一个随机x并计算x 3
  • 客户端向服务器发送x 3
  • 服务器使用其关于pq的知识来恢复x

此时,客户端和服务器都知道x但是窃听者只看到了nx 3他无法根据该信息重新计算pq和/或x所以x客户端和服务器之间的共享秘密。之后这是非常简单的对称加密,使用x作为密钥。

证书是服务器公钥 ( n )的容器。它用于阻止想要冒充服务器的主动攻击者:这样的攻击者拦截通信并发送n而不是服务器的n证书由证书颁发机构签名,以便客户端可以知道给定的n确实是来自他想与之交谈的服务器的真实n 。数字签名也使用非对称加密,尽管方式不同(例如,数字签名也有 RSA 的变体)。

这是一个非常简化的版本:

  1. 当客户端和服务器协商 HTTPS 时,服务器将其公钥发送给客户端。
  2. 客户端使用服务器的公钥加密它想要使用的会话加密密钥,并将该加密数据发送到服务器。
  3. 服务器使用其私钥解密该会话加密密钥,并开始使用它。
  4. 会话现在受到保护,因为只有客户端和服务器才能知道会话加密密钥。它从未以明文形式传输,也从未以任何方式被攻击者解密,所以只有他们知道。

,任何人都可以看到公钥,但这不允许他们解密用该公钥加密的“hey-let's-encrypt-using-this-from-now-on”数据包。只有服务器可以解密它,因为只有服务器拥有那个私钥。攻击者可以尝试伪造包含加密密钥的响应,但如果服务器使用该密钥建立会话,则真正的客户端不会说出它,因为它不是真正的客户端设置的密钥。

这就是非对称密钥加密的所有魔力。迷人的东西。

PS“真正简化”的意思是“修改细节以使其更易于理解”。维基百科“传输层安全”在技​​术细节上给出了更正确的答案,但我的目标是“易于理解”。

其他答案很好,但这里有一个可能更容易理解的物理类比:

想象一个锁箱,那种带有金属翻盖的锁箱,你可以在上面挂上挂锁来固定。想象一下,您放置挂锁的环足够大,可以容纳两个挂锁。要在不共享挂锁密钥的情况下安全地向另一方发送东西,您可以

  1. 把“东西”放进盒子里,然后用你的挂锁锁上。
  2. 将锁定的盒子发送给对方。
  3. 他们也把挂锁放在环上(这样上面就有两把锁),然后把双锁的盒子还给你
  4. 你取下挂锁,把现在单独上锁的盒子还给他们
  5. 他们卸下自己的锁并打开盒子。

通过加密,锁和钥匙是数学,但一般概念是这样模糊的。

已经提供的许多答案都忽略了 ISP 或 NSA 的拦截能力。看看AT&T 数据中心的641A 室据估计,美国各地已安装了 10 至 20 个此类设施。还可以看看One Wilshire大楼,260 个 ISP 的连接汇聚到一栋大楼中。该位置是拦截设施的主要位置。

事实上,ISP(或 NSA 在 ISP 中安装的设备)可以拦截和 MITM 攻击 SSL 连接,他们实际上可以很容易地做到这一点。

  • 您的 Web 浏览器或操作系统中安装了 500 多个受信任的证书。这意味着您隐式信任其证书已由该证书签名的任何网站。
  • NSA 通过秘密的 FISA 法庭命令可以强制在美国运营的任何证书颁发机构向他们提供根证书。法院命令包括一项特殊的保密条款,该条款迫使 CA 闭嘴,如果他们说出这件事,将面临监禁刑罚。然而,他们甚至可能不需要这样做,他们只需要说服浏览器供应商接受一个NSA 拥有的证书作为浏览器中的受信任证书。
  • 当您的流量通过 ISP 时,他们将网站的真实公钥替换为 NSA 自己的公钥,该公钥由受感染的证书颁发机构签名,从而执行 MITM 攻击。
  • 您的 Web 浏览器接受此虚假证书作为可信证书,并且您将用于交换的对称加密密钥传送回 NSA/ISP,后者保留其副本并将相同的密钥传递到网站。
  • 您与网站的会话将使用泄露的对称密钥实时解密。
  • 解密后的数据通过光纤线路发送到美国国家安全局总部和米德堡地下室的数据中心。这会扫描数据以查找可能指示各种类型威胁的数百或数千个关键字。任何关键字都会被标记为红色,以便分析师查看并优先考虑进一步的行动(如果有)。最终数据被发送到美国国家安全局的数据存储设施之一。新的存储设施是犹他州数据中心,它可能已经在线,因为它计划在上月底上线。

这是来自 nsawatch.org 的图表:

美国国家安全局监视章鱼