HTTPS的弱点。 第二部分

任何系统都有其自身的优点和缺点。 关于HTTPS弱点的第一部分引起了一个模棱两可的反应,即“这些不是弱点,本来就是这样的”。 第一部分说:

  1. 关于无法为用户提供完全的机密性和隐私性(您仍然可以跟踪和禁止用户访问的资源)
  2. 证书是通过开放渠道传输的,通常包含比当前资源更多的信息(例如,bing.com证书包含有关72种其他资源的信息,包括处女座,测试,测试版环境)

我将继续称其为设计“弱点”。 在本文中,我们将讨论另一个弱点- 集中化

HTTPS基于SSL和TLS协议(为简单起见,我们简称为SSL-尽管SSL和TLS在OSI堆栈的不同级别上起作用)。 因此,谈到弱点,我们将牢记SSL协议的集中化。

理论


从加密协议的理论开始。 现代加密技术的问题不是加密本身,而是密钥的处理方法:如何安全地存储,传输,创建和销毁密钥。

SSL的基础是非对称加密 ,它由两个密钥的存在决定-如果一个密钥被加密,则只有第二个可以解密,反之亦然。

非对称加密的主要功能是身份验证 ,而不是完全加密-对于此算法,这是相当耗费资源且昂贵的操作。 快速高效的加密是对称算法的特权,该对称算法使用相同的密钥进行加密和解密。

密钥之一始终留在一侧以确认其身份,这被称为private 。 公开密钥可供所有人使用。

想象一下,鲍里斯(Boris)和安雅(Anya)住在未来的村庄。 将来,不同大小的按键已经更加严格,而大脑的功能与现代不相称,但是假设方法仍然相同。

鲍里斯(Boris)和安雅(Anya)希望自己的恋爱通讯保密,因此对他们而言,最主要的是安全地交换信息。

在最简单的情况下,鲍里斯(Boris)向安娜发送了一条消息:“让我们谈谈。” Anya生成两对非对称加密密钥-私有Pr1和公共P1。 “来吧,”安雅说,“我是安雅,这是我的公钥,这是我所知道的对称加密算法。” 鲍里斯(Boris)生成对称密钥S1,并使用公共密钥Ani P1(S1)对其进行加密。 现在,即使鲍里斯本人也将无法解密S1,因为只有Anya可以使用她的私钥来解密消息。 最后,鲍里斯(Boris)和阿妮(Ani)具有对称的会话密钥,以“确保”彼此之间的可靠传输,并防止父母阅读其信件。

图片

我没有特别减少这种消息传递,实际上,我们用单向身份验证描述了SSL握手[1]。 鲍里斯以双向方式生成自己的密钥对,并将公钥转让给安雅。

我们已经可以得出的重要结论。 SSL协议的三个主要功能(身份验证,加密,完整性)中,最重要的是身份验证。

一切都很好,直到一个邮递员出现了,因为生活使他生气,他对阅读别人的信很贪婪,而且还很聪明。 在鲍里斯(Boris)和安雅(Anya)之间,出现了一个问题,即现在如何保证邮递员将无法阅读其邮件。 答案是没有办法。 邮递员可以生成自己的密钥对,可以从Ani“秘密地”向Boris公开他的密钥,组织两个加密通道并从容地阅读信件。

图片

只有通过保证P1密钥属于Ana的某个第三方的存在,才能解决这一难题。 想象一下,一个村庄委员会出现在村庄中,该委员会维护着居民的公共钥匙登记册。 Anya可以拿起她的护照和她的公共密钥P1,去那里并要求注册。 鲍里斯(Boris)从阿妮(Ani)收到P1时,可以去同一个村委会并检查登记册。 如果密钥不匹配,您可以开始对邮递员犯罪,并责怪他所有认真的人,尽管他可以拒绝。 但是问题仍在解决。

图片

当然,鲍里斯不是Camilpho,每次都拖着村委会的票。 因此,可以通过村委会本身进行相同的身份验证。 乡村委员会现在称自己为认证中心(CA),并拥有自己的密钥对P10和Pr10。 当安雅带着护照和她的公钥到达时,CA发出类似卡片的信息,说明这是安雅,她拥有公钥P1,其他一些信息,直到护照号码,并为她添加另一个字段签名:从卡中获取所有信息,从中删除哈希,并使用其私钥对其进行加密,并将其称为数字签名。 没有散​​列也可以做,但是签名太大。 CA现在将此卡称为证书。

现在,为了与安雅交换爱的讯息,安雅不仅给了他名字和公钥,还给了她证书。 鲍里斯(Boris)只需要去一次村委会,并要求他们提供公钥。 该密钥可以解密的任何信息都是村委会加密的优先考虑的信息。 邮递员根本不知道该怎么办,他被存在的真空所掩盖,只剩下一件事-试图拿起村委会的私钥,使生活回到平方。

图片

但是生活不会停滞不前。 鲍里斯(Boris)在附近的一个村庄有另一个女友,然后是另一个。 他必须将其他村委会的密钥添加到他信任的理事会中,然后开始使用证书颁发机构的公钥保存其注册表。 然后,它达到了国家和超国家的规模。 有太多签署证书的组织,它们开始合并为层次结构。 出现根证书颁发机构,该证书颁发机构不签署凡人证书,而是在检查中间中心证书(中间证书颁发机构)后对其进行签名。 现在Boris仅存储根证书的公共密钥就足够了。 从Ani,他不仅收到她的证书之一,而且还收到中间中心的证书,以便进一步检查根中心。

图片

问题领域


该系统变得更加复杂和集中 ,从那时起,邮递员又有了机会。

一方面,Boris最初只有一小部分根证书颁发机构(Windows在安装过程中规定了约50个根证书颁发机构)。 另一方面,他很难每次都跟随整个认证中心链。 最有可能的是,由于某些原因,他将不再核实他自己村庄的Ani证书是否表明另一个国家的认证中心。 他相信自己的根中心列表占99.9%。 邮递员可以走最残酷的道路,并以某种方式(社会工程学,渗透黑客)在鲍里斯(Boris)注册表中注册其伪造的根证书颁发机构。

图片

PS。 渗透测试者(如我)和攻击者都积极使用这种添加伪造的根中心证书的方法。 为了进行渗透测试并使用这种方法,我最喜欢的工具是ZapProxy(免费和开源),它将生成一个根中心证书(需要手动安装),然后立即用“相似”证书替换该证书。 这样,您不仅可以查看流量​​,还可以将其停止,更改并进一步发送。 因此,如果您的系统上的验证未在服务器上重复进行,那么您肯定有问题。

PPS 在这种情况下提出的第二个问题涉及阿妮(Ani)以及她的证书中显示一个无法理解的中心。 Anya付了钱,并希望Boris能够认出她。 当只能在某个证书和某些证书颁发机构中信任该应用程序时,可以使用SSL Pinning [3]解决此问题。 这对于高风险应用程序尤其有用。 对于浏览器,这更为复杂,而对于使用一种或两种服务的移动应用程序而言,则更加容易。 为了进行实验,我在Android设备上放置了一个伪造的证书,指示流量应通过ZapProxy进行传输,该应用程序会在我的计算机的网络上停留,并查看有多少应用程序使用此机制。 几乎没人能看到并使用几乎所有流行的应用程序代替流量。

所以,回到我们的邮递员那里。 政府不得不欣赏他的热情,并赋予他具有更高权力的秘密特工身份。 尽管根证书颁发机构的私钥存储在七个锁,自燃磁盘,多级保护下-甚至邮递员的权威也可能不足以与他们进行协商,以向其提供私钥以即时生成伪造的有效证书(尽管一切皆有可能)。 他找到了一种更简单的方法。 他去了自己的村庄委员会,该委员会处于最低级别的认证中心的层次中,然后压迫或贿赂该村庄委员会以将其证书签署为中间认证中心的证书。 现在,他不仅可以听鲍里斯(Boris)的声音,而且可以听任何原理的声音。 该人员最有可能甚至不会注意到任何东西,浏览器将不会发出任何警告。

图片

这是一个已知的问题,人类也在努力解决这一问题。 如果发现了这些伪造的证书,受害的中间和根中心,则应将这些证书标记为已撤销和受害(已撤销的证书)。 这意味着,除了存储根证书之外,鲍里斯还需要将其与吊销证书的在线列表进行同步-此机制是通过CRL(证书吊销列表)和在线证书状态协议(OCSP)协议[4]来实现的,顺便说一下,它们可以根据未受保护的频道。 当我们开始积极使用Dhound [5]控制输出流量时,我们注意到端口80上的周期性请求。 如果您在防火墙级别禁止此类请求,则某些功能将停止工作,例如,发送邮件。 吊销证书的问题在于已经有大量的吊销证书:2013年,吊销证书的数量约为300万[6],仅2018年就有23,000吊销Symantec证书[7]。 Chrome于几年前关闭了对已撤销证书进行完整验证的默认功能[8],以提高页面加载速度。 事实证明,如果发现我们的邮递员,则进一步阻止其行动的过程将很漫长,而且并非总是成功。

结论


现代SSL系统是部分封闭和集中的 ,这绝对是其缺点之一。 只要是这样,“这个世界上有权力的人”总是会从中受益,而不会把个人隐私放在首位。 尽管如此,他们自己的加密算法仍将在国家一级创建,以试图将其他国家与本国公民隔离开来,并自己完成。 关键节点的妥协可能导致整个系统瘫痪。 系统日益增加的熵和复杂性将越来越多地导致其不稳定状态,并最终导致系统死亡。

哪个出路? 从封闭的集中式SSL系统过渡到更加透明和分布式的系统,从本质上讲,该系统将无法为任何一方带来优势。 也许这将是一个类似于实现开放式区块链的解决方案。

PS。 SSL协议具有本文未提及的更复杂的细微差别。 但是信息水平足以揭示他的弱点之一。 还有其他弱点吗? 在以下文章中,我们将介绍。


CISSP的Denis Koloshko发布

Source: https://habr.com/ru/post/zh-CN413163/


All Articles