我们可以在没有证书的情况下使用 https 吗?

信息安全 加密 tls 证书 身份
2021-08-21 04:54:52

如果我从根本上误解了某些东西,我会提前道歉,但是是否可以在不求助于证书系统的情况下使用加密的通信协议(我想是 https)?

这个问题是关于 EFF/Mozilla 倡议“加密无处不在!” 我了解证书会验证 /identity/,但是使用经过验证的身份构建 https 协议是否可能和/或合理?最明显的例子是与自签名证书站点进行通信,但是在其他情况下,您可能更重视通信的加密而不是您正在通信的人的身份吗?

4个回答

可以在没有证书的情况下使用 SSL/TLS。这在TLS 标准中得到支持:“DH_anon”密码套件不涉及任何证书。但是您必须记住,这种未经身份验证的 TLS 对主动攻击者的攻击本质上是弱的,因为它们无法阻止客户端或服务器模拟(或同时阻止两者,这称为中间人攻击)。

由于 MitM 的固有漏洞,大多数 Web 浏览器会停用 DH_anon 密码套件。您可以使用自签名 SSL 证书获得相同的概念效果,即无需与任何 CA 对话即可自行生成。当然,同样的 Web 浏览器会显示“可怕的警告”,原因几乎相同。


从 EFF 的角度来看,其主要敌人是 NSA,广义的 DH_anon 密码套件是有意义的,因为已知 Evil Spy Agencies™ 更喜欢被动窃听(因为它不会留下任何犯罪痕迹)。被动窃听被 DH_anon 击败。然而,对于大多数其他人来说,最大的威胁不是政府的干预,而是试图将您与金钱分开的普通骗子,这些人会毫不犹豫地进行全面的中间人攻击,例如使用假 WiFi 接入点。

Let's Encrypt计划旨在使证书发行免费(如“没有钱”)和自动化,同时仍然保持一些努力来“验证”获得证书的人对指定域具有一定程度的控制权从外观上看(值得仔细检查),该系统依赖于 DNS,并暗示任何 DNS 攻击(例如DNS 欺骗)都可能以完全自动化的方式被利用到流氓证书颁发中,因此这一举措将是一种削弱当前的证书模型。另一方面,如果它说服更多的人使用 SSL,它有助于建立一个“更安全的世界”,至少从 NSA 是魔鬼的角度来看,重要的是击败被动窃听者。

无论如何,如果没有 Microsoft 和 Google 的支持(即在 IE 和 Chrome 中包含 Let's Encrypt 根 CA),该倡议不可能真正变成通用的 HTTPS。如果这意味着 70% 的用户会被他们的浏览器侮辱和吓跑,那么没有多少人会在他们的网站上激活 SSL。如果微软和谷歌不加入马车(我不相信他们会),那么 Let's Encrypt 系统将仍然是一种政治姿态,但不会普及(如果有人打扰,Mozilla 最终会放弃它)安装基于 DNS 的自动攻击)。


SSL 还有另一种完全不同的无证书模式;它被称为SRP是安全的,但与正常的 Web 浏览不同。SRP 确保关于共享密钥的相互客户端/服务器身份验证,并且它以保护共享密钥免受离线暴力破解的方式这样做——因此它可以容忍使用低熵共享密钥,即密码TLS-SRP 对于访问受密码保护的网络资源很有意义,而且它根本不涉及证书;然而,它对 MitM 和窃听是安全的。

不幸的是,Web 浏览器目前不支持 SRP。

SSL/TLS(HTTPS 的底层协议)提供了两个特性:

  • 加密,让任何人都无法被动地收听数据。加密是使用在对等点之间以某种方式共享的密钥完成的。
  • 识别,以便您确定与谁交谈。这通常通过证书完成。

虽然您可能在未识别的情况下进行了加密,但您的连接将受到主动攻击,而不是预期的对等方,您与另一方交谈,就像中间的一个人,然后可以解密和操作数据并将数据转发给原始对等方重新加密后。

没有身份证明不仅意味着没有证书,而且当您信任您获得的任何证书时,通常是自签名证书。

因此,虽然 TLS 本身可以在没有证书的情况下进行加密,但 HTTPS 需要证书,因为这是在此用例中正确识别的唯一方法。

通过 https 连接的数据使用发送方和接收方都知道的私钥加密。发送方使用私钥加密数据,接收方使用相同的密钥解密数据。

相同的密钥不再重复使用,以防止重放攻击。因此,必须在每个会话中使用唯一的密钥。

现在,问题是谁生成唯一密钥,以及我们如何在每个会话中共享这个唯一密钥。这是个问题,对吧?这个唯一的私钥是使用公钥基础设施共享的,证书是它不可或缺的一部分。通常,请求由客户端(在本例中为浏览器)发起。证书包含服务器的公钥信息,用于加密客户端生成的随机私钥。此数据只能通过服务器的私钥解密,该私钥只有服务器知道。一旦在客户端和服务器之间建立了私钥,它们就可以开始安全地通信,这本质上就是 https。

不,如果不使用 SSL 证书/公钥,您将无法使用HTTPS

使用 SSL 证书,服务器向客户端标识自己。

如果您拥有自签名证书,您将拥有 HTTPS,但现代浏览器不信任自签名证书。