为什么自签名的 https 不如未加密的 http 可信?

信息安全 tls 验证 Web应用程序 证书 证书颁发机构
2021-09-06 18:06:52

估计 2014 年至少有 50% 的网络流量可以被拦截,这并不牵强。

但是,对主动拦截攻击的估计可能要低一个数量级——可能远低于 0.5%,而且很明显,其中大部分是由政府完成的,无论如何政府都可能控制证书颁发机构,所以拥有可信 CA 链的价值值得怀疑。

由于大多数流量只是被动拦截,这意味着在 99.9% 的情况下,未经身份验证的加密将使您摆脱监视并保护您的隐私权,为什么浏览器供应商和 https 行业仍然有效地提倡不进行 http 加密像我这样的网络爱好者的自签名 https 证书?


我在十几个自托管域上的电子邮件是免费加密的(SMTP STARTTLS),不需要每 X 个月安装任何新证书,也没有给我发电子邮件的人收到任何警告。

(同样有效地使用 ssh 不需要我向任何人汇出任何款项。)

为什么我的非商业网站和网络资产不能这样做?

4个回答

由于大多数流量只是被动拦截,这意味着无需身份验证的加密将使您摆脱监视......

如果您在同一个 (W)LAN 内,通常很容易主动拦截流量,例如通过 ARP 欺骗或类似技术。而且,对于能够在更广泛的互联网上被动拦截流量的各方,通常也可以以某种方式更改或重定向它(如 DNS 欺骗),甚至还有 ISP 会修改流量以注入广告等。

人们已经很难理解普通 HTTP(无加密)、“简单”HTTPS 和“更好”的 HTTPS(例如扩展验证证书)之间的区别。您在这里提出的是另一个安全级别,它比不加密略好,但比简单的 HTTPS 差得多,因为盲目信任您获得的任何对等证书会使您容易受到中间人攻击。

当然,如果只有少数人使用给定的服务,您可以使用自签名证书或类似技术。但在这种情况下,您必须在带外验证证书或公钥,例如通过其他方式获取证书或公钥的指纹,并根据连接提供的指纹进行检查。如果您有自己的邮件服务器或使用您控制的主机进行 ssh,则此方法有效。但是,由于您通常没有用于带外验证的既定且安全的基础架构,因此这不适用于更多的受众。

目前,我们只指定了两种协议:普通 HTTP 和需要有效证书的 HTTPS。如果我们简单地说“HTTPS 现在可以使用自签名证书”,那么您的浏览器将无法区分您尝试访问的站点是否具有自签名证书,因为它应该具有自签名证书,或者因为您受到了攻击。因此,它会降低安全性。

我们可以定义一个新的 URL 方案,例如 httpe,其中需要自签名证书。需要所有浏览器在有用之前实现它。

仅将 HTTPS 用作指南,并且在遇到自签名证书时根本不显示挂锁图标,这将非常危险:想象您的 Web 应用程序将机密数据发送到 https URL - 如果安全连接,您不希望这些请求通过无法成立。因此,即使我们愿意,离开 https = 加密和认证也是行不通的。

我们还可以在实际请求之前询问 HTTP 服务器是否支持机会加密,如果他们说支持,则升级到 TLS,同时仍然显示 HTTP URL。类似的东西实际上是在此处此处为 HTTP 2 提出的。

附带说明,StartSSL 为非商业/非敏感用途提供免费证书(此限制隐藏在他们的政策中,第 3.1.2.1 节)。

同意@SteffenUllrich 的观点,就其本身而言,实际上可以防御的威胁模型很少。如果使用不受信任的 HTTPS,几乎所有可以被动嗅探的情况也可以被主动嗅探。顺便说一句,将这个方案与 Moxie Marlinspikes 收敛 ( www.convergence.io ) 之类的东西一起使用会很有效,它试图用更强大的东西替换当前的 CA 模型。这会让我感觉更舒服,尽管我认为它有其自身的缺陷(这些缺陷与当前的 CA 基础设施相比相形见绌,而当前的 CA 基础设施在很大程度上是完全不足的)。

为了回答您的问题,自签名比普通 HTTP 更好,但安全性收益实际上非常小,因为无法验证客户端连接到的服务器的身份。

这是您的声明,IMO 自签名或 CA 过期签名证书仍然比没有证书更值得信赖(HTTP)。

最安全的安全协议: 1. HSTS 2. HTTPS 3. HTTP

谁签署了您的证书与它的安全性无关?这完全取决于谁能解密它。

加密由身份验证、不可否认性、完整性和机密性定义。

任何人都可以创建自签名证书,但不保证不可否认性(可以是假身份)。

从理论上讲,这比签名证书更不可信。CA 证书(签名)在理论上更安全,但很容易被规避:cf SSLStrip 或 SSLSnif http://www.thoughtcrime.org/software/sslsniff/

HTTP(S) 是一种无状态协议,您可以操作 POST、GET、PUT 帧并制作 cookie。HTTPS 提供加密,而 HTTP 不提供,当涉及到携带关键信息时,无论证书(CA 签名、过期、自签名)如何,仍然比完全不加密更可取。

这是您可能感兴趣的替代方案:http : //convergence.io/