11分钟阅读

保持加密,保持安全:与ESNI,DOH和DOT一起使用

Brian是一个系统管理员和网络工程师,然后转到软件开发,以便自动化自己的工作。

保护互联网隐私的最新进展包括加密的TLS服务器名称指示(ESNI)和以HTTPS(DOH)的DNS形式加密DNS,两者都被认为是 非常争议 by data collectors.

所以这是一个快速看他们存在的原因,了解他们所在的细节,以及他们如何工作背后的技术。

DNS需要运作 正确

分裂隧道 虚拟专用网络(VPN)连接,Web代理 自动发现 (WPAD)协议, 零配置 组播DNS(MDN), 即时的 黑名单(RBL),以及DNS无法正常运行时,许多其他广泛部署的技术突破。

打破互联网获取利润和名声

As far back as 2003, internet users learned about the importance of DNS on a global scale when the company which then ran the .com top-level domain (TLD) chose to stop issuing NXDOMAIN responses. They instead 冒充 任何不存在的域都试图满足更多广告,销售更多域,最终会产生更多的收入。意想不到的敲击效应导致了公开辩论和 ICANN安全和稳定咨询委员会(SSAC)的局部报告。这个项目确实关闭但从技术角度来看,漏洞持续存在。

NXDOMAIN与劫持版本。适当的NXDOMAIN响应表示网站不会'T存在。劫持版本改为自动生成一个网页,留言,如图所示"恭喜! www.example.com是出售。"

2008年后,当一些最大的ISP结束时,一些最大的ISPS向字面引入了各种途径时,将公开呼吁进行利润的DNS进行盈利的另一项尝试 任何 网站。由于漏洞的性质,甚至可以利用私人网络上托管并无法从互联网无法访问的网站。

发现的问题不是核心互联网协议,而是由某些DNS功能的不当货币化恶化的问题。

Paul Vixie. ,互联网系统联盟(ISC)

尽管如此,协议本身并不是问题的原因,但也是如此,这些协议不会阻止糟糕的演员滥用系统。因此,从技术角度来看,漏洞持续存在。

打破互联网进行监视和审查

2016年,观察到伊朗的ISP正在操纵DNS。这次,而不是注射广告,他们是 阻止访问前10,000个域中139的电子邮件服务器 在网上。如果这是对这些特定领域的有意拒绝服务的有意政策,那就不清楚 - 类似于 中国世界着名的审查 - 或许只是一个糟糕的技术实现的例子,无论是如何拦截DNS查询。

显示DNS拦截作为伟大的防火墙(GFW)作为中国的一部分执行'S监测和审查系统。 GFW注射器位于递归解析器和权威名称服务器之间。

不知道为什么DNS被截获很重要:即使我们抛开了关于毯子监视和审查的道德和法律问题,该技术常常通过其非常自然 - 而不是标准符合标准,并且可以很好地干扰您的正常,每天,合理和合法使用互联网。

然而,从技术的角度来看,漏洞持续存在。

为了讽刺的目的打破互联网

当然,这不仅仅是商业实体和各国政府,试图为自己的手段拦截互联网流量。有许多试图劫持联系的罪犯的例子,通常是为了窃取用户数据或欺骗用户来揭示重要的访问凭据。最突出的, DNS缓存中毒 已被用来指导用户到网络钓鱼网站, 部署ransomware., 部署僵尸网络, 拒绝服务到特定网站, 以及更多。

DNS缓存中毒攻击的示例。攻击者声称是权威名称服务器,并将假IP地址给DNS服务器给出,然后将其传播给查找该域的用户。

TLS泄漏谁连接到谁

传输层安全性(TLS)是HTTPS后面的技术,我们所有人都依赖的HTTP的安全版本。建立TLS连接需要许多步骤,在此期间,服务器通过呈现证书来证明其身份,并交换新的加密密钥。

 TLS步骤

具有服务器使用证书证明其身份是一个非常重要的步骤,因为证书的一部分是不对称的公共加密密钥。

不对称加密例证

当客户端使用此键发送消息时,只有拥有相关私钥的服务器只能读取消息。因此,任何拦截或侦听连接的人都被锁定并无法读取内容。

但是,初始交换仍然在清除时进行,而不会加密,这意味着观察者将始终知道服务器的身份。

域名前身

一些 防审型型工具 使用称为的技术围绕TLS泄漏围绕TLS泄漏工作了一段时间 域名前身。这挖掘了一旦建立了HTTPS连接,大多数大型托管提供商都不会检查每个主机名是否呈现 HTTP请求 匹配TLS握手中使用的。在隐私工具方面,这被视为一个有用的功能,允许与隐藏的网站进行秘密通信。对于托管提供商和数据收集器,这被视为滥用规范所实施的方式。

域名前身

这本身就是一种漏洞,因此已由几个主要托管提供商修复, 包括AWS..

通过改变标准来解决问题:加密SNI(ESNI)

ESNI背后的想法是防止TL通过加密来泄漏任何数据 全部 of the messages, including the initial Client Hello message. This leaves any observer completely in the dark about what server certificate the server is presenting.

为此,客户端需要在连接之前需要加密密钥。因此,ESNI需要一组特定的ESNI加密密钥被放置在DNS中的SRV记录中。

然而,这的确切细节仍然在助焊剂中,如 规格 尚未完成。尽管如此,ESNI的实施已经投入生产 火狐浏览器 CloudFlare. .

保护和加密DNS

对于要在不被截获的情况下提供的ESNI键,可以保护DNS篡改是很重要的。

自从返回到1993年以来,互联网社区一直在努力保护DNS。 IETF注意到讨论的早期问题解决会议:

  1. 保护DNS数据的披露到未经授权的方
  2. 确保数据完整性
  3. 数据来源身份验证

这些会议导致了 域名系统安全扩展(DNSSEC) 标准在1997年。标准选择在其中三个问题中解决了两个问题,因为设计团队明确决定明确地统治数据披露的所有威胁。

因此,DNSSEC意味着用户可以 信任他们DNS查询的答案是域名所有者打算成为哪些域名。在ESNI的背景下,这意味着我们知道我们收到的关键是没有被篡改,而且谢天谢地,当DNSSEC正在使用时,上面提到的很多漏洞消失了。但是,它并不能确保隐私,因此仍然容易受到监督和审查系统引入的问题的影响。

不幸的是,由于它与“不安全的DNS”完全向后兼容,并且很难正确实施, 通过DNSSEC非常低。许多域名所有者通过尝试配置它来放弃,这可以通过野外看到的众多无效和半设置配置所证明。

从2018年9月的CloudFlare数据中成功的DNSSEC配置。.be,.app,.nl和.io域显示出最高的成功率,在60-80%的范围内; .com,.net和.org在50-60%的范围内;最严重的罪犯似乎是.co域名在20%以上。
来源:CloudFlare.

DNS over https(doh)

对于在没有观察者的情况下提供esni键,了解用户试图访问哪个网站,对DNS窃听的保护是很重要的。因此,这是非常符合的和理解的 加密DNS. (如DOH)是一件好事。然而,正如它今天所掌握的那样,DNS未加密。

有动作 Mozilla. , 谷歌 , APNIC. , CloudFlare. , 微软 , 和 其他 to change this.

多姆流程。来自客户端的请求和响应沿整个路由加密和aren'T由ISP读取或过滤。

理想的加密用户体验

想要利用上述技术的用户可能会在涉及使用加密的实际UX细节时具有相当长的要求列表。可能,他们希望避免喜欢:

  • 被迫使用特定的DNS服务提供商(无论它有多好)或选择是看不见的还是难以找到的
  • 设备上的每个应用程序在处理DNS时(例如, Firefox. 可以找到这个东西 苹果浏览器 cannot)
  • 设备上的所有应用程序 创建自己的安全DNS实现 within itself
  • 不得不 手动配置DNS. multiple times
  • 不得不选择隐私和 安全
  • 未经用户同意,应用程序倒回不安全的操作

隐私意识到的用户会想要:

  • 任何人都没有戒律监视的隐私
  • 保护他们没有同意的目标广告
  • 保护他们自己的已发布的内容(例如,在个人网站上)从被改变或操纵到其他观众
  • 保证,他们自己出版的内容的观众不会只是为了访问它而陷入困境
  • 继续选择在自己的网络上控制DNS(因为有时候, Split-Horizo​​ n DNS 很好地保持内部资源范围内容为内部用户)
  • 的能力 选择进入 , 或者至少 选择退出 ,在DNS级别过滤(例如, Quad9, 清洁拨音 , 和 Opendns家庭盾牌)
  • 容易,无声的配置(即, DHCP. )
  • 被要求同意在没有加密的情况下使用DNS
  • 保护不仅适用于浏览器流量,而且适用于所有类型的流量,例如电子邮件,松弛,VoIP,SSH,VPN等。

目前的加密工作

用户有哪些选项具有上述目标?

Mozilla. 的解决方案是一个开始,但远非理想。他们只是确保了 Firefox. ;默认是覆盖您的操作系统设置,支持他们选择提供商( CloudFlare. )不那样说,它默默地倒回不安全(在加密DNS被阻止等的情况下)

谷歌的解决方案是一种更好的方法。他们正在保证 Android 9+ - 适用于 全部 应用。 (我不确定他们的计划 铬合金 OS. ,但我怀疑它是在作品中。)他们也是保护 铬合金 在所有平台上,但它只会在主机平台配置为使用支持安全性的提供程序时触发安全性。这在用户选择方面是良好的,但不理想,因为它默默地倒回不安全。

所有其他主要浏览器也是如此 实施支持.

在用户的理想情况下,更广泛的软件和操作系统开发人员会:

  1. 停止在应用程序级别实现新的DNS安全功能
  2. 开始在OS级别实现它们
  3. 尊重OS级配置,或获取用户同意

在OS级别实现加密DNS,我们可以继续遵循我们目前为DNS解析器的分布式模型遵循相同的分布式模型。在自己的网络上运行自己的DNS服务器,并且能够使解析器安全地进行安全性,这是有道理的,继续是一个选项,应该使用集中式提供商。

Linux和BSD已经拥有此功能,可提供各种选项。不幸的是,默认情况下,没有发行版,据我所知,默认情况下。退房 NSS-TLS. 如果您想要插入Glibc的东西。

谷歌的DNS-over-TLS在Android 9+中的实现也已经这样做了。它通过测试DNS服务器进行加密支持。如果它有它,那么它将使用它。如果没有,那么 - 与Chrome一样 - 它以不安全的方式继续,而不提示同意。

值得注意的是,大多数网络都被配置为使用不支持加密的DNS服务器,因此构建的Android的解决方案尚未为大多数用户更改任何内容。如果在分散不支持加密的情况下,可以更好地返回到集中式加密DNS。

对于Apple和Microsoft风格设备,对加密DNS的支持尚未正式到达此撰写。和 微软在2019年11月宣布,他们的意图支持加密的DNS,希望苹果将很快跟进。

加密DNS解决方法

可以在本地运行的代理形式存在一些解决方法。有了这些,用户的计算机将非加密的DNS发言为自身,然后将加密DNS发言给它配置为使用的任何提供商。这不是一个理想的解决方案,而是作为替代方法,它是体面的。

写这篇文章的灵感是 DNSCRYPT代理,这是非常稳定的,有很多钟声和吹口哨,并且是 跨平台。它支持旧的 DNSCRYPT. 协议 ,以及更新 DNS over tls(dot)DNS over https(doh) protocols.

对于Windows用户,有一个 安装程序和GUI称为简单的DNSCRYPT,这是完整的,非常易于使用。

我推荐它,但要意识到世界可能还没有为你准备好了,你可能需要不时禁用它(例如,当你必须在你最喜欢的咖啡馆或局域网使用俘虏门户派对)。

其他选择

另外,有 Technitium DNS服务器 , 哪个 支持加密DNS.,是跨平台(Windows,MacOS,ARM / Raspberry PI上的Linux),并具有Slick Web界面。它在“其他”下,因为它更像是一个全方位的工具,而不是特定于此问题的解决方案。 (如果您想在家运行Raspberry PI DNS服务器可能是一个不错的选择。我有兴趣听取从下面评论中试用它的人的反馈。)

为您 安卓 或者 iOS(iPhone,iPad等) 设备,还有 1.1.1.1 应用程序,它将在CloudFlare加密DNS服务上强制所有DNS查询。我听说还有更灵活的应用程序,如 内外 ,但我还没有时间才能测试它们。

当然,您还可以在两者中启用加密的DNS Firefox. 铬合金 - 请记住上面讨论的所有警告。

DNS可靠性:作业编号

互联网隐私技术有很多争议。但是,在实施安全和隐私措施方面,有问题的技术并不是关于保密。这是为了确保可靠性和保证,尽管他人的行为,但是该技术继续正常运作。然而,我们需要注意的是,就像没有隐私保障的技术一样糟糕,所实施不良的保障措施只会使情况变得更糟。

理解基础知识

内容交付网络如何工作?

CDN通过从地理位置更靠近用户的位置,通过从地理位置更近于Origin服务器来提高网站性能并降低带宽成本。随着许多网站使用相同的CDN,它们还使数据收集器更难猜测正在访问哪个网站。

什么是esni?

加密服务器名称指示(ESNI)是TLS 1.3的扩展,这可以防止窃听者了解网站网络用户的域名。与加密DNS组合时,不可能知道用户正在访问的网站。

什么是加密的sni?

加密的SNI是TLS 1.3的扩展,这可以防止窃听者了解网站网络用户的域名。

什么是DNS加密?

DNS加密可确保只有您和DNS提供商知道正在执行的DNS查询,因此您正在访问哪些网站。此外,它强制了您选择的DNS提供商。因此,您可以选择提供与ISP不同的功能和保证的提供商,例如速度和隐私。

CloudFlare DNS加密吗?

CloudFlare DNS可在1.1.1.1提供,是由CDN提供商CloudFlare运行的免费公共DNS服务。它支持使用DNS通过HTTPS(DOH)和DNS OVER TLS(DOT)的加密。由于它使用现有的CDN,它可以提供非常快速的响应时间。

哪些服务可以使用SNI?

SNI是TLS的扩展,为单个IP地址提供对多个主机名的支持。 TLS最常见的使用是安全网站的HTTPS。但是,它存在于使用TL的所有协议中的安全性。

SNI如何工作?

TLS扩展SNI通过要求客户端发送其希望在建立加密之前安全地通信的服务的主机名来工作。更新版本的SNI称为ESNI允许此主机名加密,这保护隐私并有助于避免审查。