个性化阅读
专注于IT技术分析

保持加密,确保安全:使用ESNI,DoH和DoT

本文概述

保护互联网隐私的最新进展包括加密的TLS服务器名称指示(ESNI)和形式为HTTPS上的DNS(DoH)形式的加密DNS, 这两种数据收集者都认为这是有争议的。

因此, 这里快速浏览了它们存在的原因, 它们是什么的详细信息以及它们工作原理的技术。

DNS需要正常运行

拆分隧道虚拟专用网(VPN)连接, Web代理自动发现(WPAD)协议, 零配置多播DNS(mDNS), 实时黑名单(RBL)和许多其他广泛部署的技术会在DNS不起作用时中断。 t正确操作。

打破互联网谋取名利

早在2003年, 互联网用户就了解了DNS在全球范围内的重要性, 当时该公司随后运行.com顶级域名(TLD), 该公司选择停止发布NXDOMAIN响应。相反, 他们冒充任何不存在的域, 以尝试投放更多广告, 出售更多域并最终产生更多收入。出乎意料的连锁效应导致了ICANN安全与稳定咨询委员会(SSAC)的公开辩论和报告。该项目确实已关闭, 但从技术角度来看, 该漏洞仍然存在。

NXDOMAIN vs劫持版本。正确的NXDOMAIN响应指示站点不存在。被劫持的版本会自动生成一个网页,并显示一条消息,例如:"恭喜!www.example.com正在出售。"

在2008年晚些时候, 当一些最大的ISP最终引入了针对几乎所有网站的跨站点脚本攻击的各种途径时, 公开地操纵DNS牟利的另一种尝试。由于漏洞的性质, 甚至可以利用托管在专用网络上并且无法从Internet访问的网站。

发现的问题不在于核心互联网协议, 而是由于某些DNS功能的不当获利而加剧的问题。互联网系统协会(ISC)的Paul Vixie

尽管协议本身并不是问题的真正原因, 但这些协议也不能阻止不良行为者滥用系统。因此, 从技术角度来看, 该漏洞仍然存在。

中断互联网进行监视和检查

2016年, 据观察, 伊朗的ISP正在操纵DNS。这次, 他们没有注入广告, 而是阻止访问Internet上前10, 000个域中的139个电子邮件服务器。目前尚不清楚这是否是针对这些特定域的拒绝服务的有意政策(类似于中国享誉世界的审查制度), 或者仅仅是任何系统在拦截DNS查询方面的不良技术实施的一个例子。

该图显示了作为中国监视和审查系统一部分的防火墙(GFW)执行的DNS侦听。 GFW注入器位于递归解析器和权威名称服务器之间。

也可以看看:

  • 你的ISP是否正在劫持你的DNS流量?
  • 我的ISP使用深度数据包检查;他们能观察到什么?

不知道为什么要截获DNS很重要:即使我们抛弃了有关全面监视和审查的道德和法律问题, 从本质上讲, 用于执行此操作的技术也不符合标准, 并且很可能会干扰你正常, 日常, 合理和合法地使用互联网。

但是从技术角度来看, 该漏洞仍然存在。

出于恶意目的破坏互联网

当然, 不仅仅是商业实体和政府都试图以自己的方式拦截互联网流量。有许多犯罪分子试图劫持连接的例子, 通常是为了窃取用户数据或诱使用户泄露重要的访问凭据。最显着的是, DNS缓存中毒已被用于将用户定向到网络钓鱼站点, 部署勒索软件, 部署僵尸网络, 拒绝对特定网站的服务等等。

DNS缓存中毒攻击的示例。攻击者声称自己是权威的名称服务器,并向DNS服务器提供了错误的IP地址,然后DNS服务器将其传播给查找该域的用户。

TLS泄漏谁连接到谁

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

TLS步骤

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

非对称加密图

当客户端使用此密钥发送消息时, 只有拥有关联私钥的服务器才能读取该消息。结果, 任何拦截或监听连接的人都被锁定, 无法阅读内容。

但是, 初始交换仍然是在没有加密的情况下进行的, 这意味着观察者将始终知道服务器的身份。

域前沿

一些反检查类型的工具使用称为域前沿的技术来解决TLS中的此漏洞一段时间。这利用了以下事实:一旦建立了HTTPS连接, 大多数大型主机提供商就不会检查每个HTTP请求中显示的主机名是否与TLS握手中使用的主机名匹配。在隐私工具方面, 这被视为有用的功能, 允许与隐藏站点进行秘密通信。对于托管提供商和数据收集者, 这被视为滥用了实施规范的方式。

域前沿

这本身就是一个漏洞, 因此已被包括AWS在内的一些主要托管提供商修复。

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

ESNI背后的想法是通过加密所有消息(包括初始的客户端Hello消息)来防止TLS泄漏任何数据。这使所有观察者完全看不到服务器要提供的服务器证书。

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

但是, 由于规范尚未最终确定, 因此其确切的细节仍在不断变化。尽管如此, Mozilla Firefox和Cloudflare已将ESNI的实现投入生产。

保护和加密DNS

要使ESNI密钥不被拦截就可以交付, 请务必防止DNS篡改。

自1993年以来, 互联网社区就一直在尝试保护DNS。 IETF指出, 早期的解决问题会议讨论了:

  1. 防止DNS数据泄露给未授权方
  2. 确保数据完整性
  3. 数据来源认证

这些会议产生了1997年的域名系统安全扩展(DNSSEC)标准。由于设计团队做出了明确决定, 将所有数据公开威胁明确排除在范围之外, 因此该标准选择解决其中三个问题。

这样, DNSSEC意味着用户可以相信, 他们的DNS查询的答案就是域所有者希望的答案。在ESNI的背景下, 这意味着我们知道我们收到的密钥尚未被篡改, 并且值得庆幸的是, 在使用DNSSEC时, 上面提到的许多漏洞都消失了。但是, 它不能确保隐私, 因此仍然容易受到监视和检查系统引入的问题的影响。

不幸的是, 由于它与”不安全的DNS”完全向后兼容, 并且很难正确实施, 因此DNSSEC的采用率非常低。许多域所有者在尝试配置它的过程中都放弃了, 正如在野外看到的许多无效和半设置配置所证明的那样。

截至2018年9月,Cloudflare数据已成功配置DNSSEC。.be,.app,.nl和.io域显示最高成功率,范围为60-80%; .com,.net和.org的范围是50-60%;而最严重的违规者似乎是.co域名,其比例刚刚超过20%。

资料来源:Cloudflare

通过HTTPS的DNS(DoH)

要使ESNI密钥在观察者不知道用户试图访问哪个站点的情况下交付, 请务必防止DNS窃听。因此, 说加密的DNS(例如使用DoH)是一件好事, 这是很合逻辑且可以理解的。但是, 就目前而言, DNS尚未加密。

Mozilla, Google, APNIC, Cloudflare, Microsoft和其他公司采取了一些措施来更改此设置。

DoH过程。来自客户端的请求和响应在整个路由中都是加密的,不受ISP读取或过滤。

理想的加密用户体验

想要利用上述技术的用户在处理加密的实际UX详细信息时可能会遇到很长的要求。他们可能希望避免以下行为:

  • 被迫使用特定的DNS服务提供商(无论其质量如何)或被选择为看不见或难以找到
  • 设备上对DNS的处理方式各不相同(例如Firefox可以找到Safari无法找到的内容)
  • 设备上的所有应用必须在其内部创建自己的安全DNS实施
  • 必须多次手动配置DNS
  • 必须选择隐私和安全
  • 未经用户同意, 应用会退回到不安全的操作

注重隐私的用户会希望:

  • 不受任何人监视的隐私
  • 保护他们免受他们不同意的定向广告
  • 保护他们自己发布的内容(例如在个人网站上), 防止其在传播给其他观众的途中被更改或操纵
  • 确保自己发布的内容的观看者不会因为访问内容而遇到麻烦
  • 继续拥有在自己的网络上控制DNS的选项(因为有时水平分割DNS有助于将内部资源限制在内部用户范围内)
  • 在DNS级别(例如Quad9, CleanBrowsing和OpenDNS Family Shield)选择加入或至少选择退出过滤的功能
  • 简单, 轻松的配置(即DHCP)
  • 被要求同意使用不加密的DNS
  • 保护不仅针对浏览器流量, 而且针对所有类型的流量, 例如电子邮件, Slack, VoIP, SSH, VPN等。

当前的加密工作

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

Mozilla的解决方案只是一个开始, 但远非理想。他们只是保护Firefox。默认设置是覆盖操作系统设置, 以便他们选择提供程序(Cloudflare), 而不必这样说, 并且它默默地退回到不安全的状态(在加密DNS被阻止等情况下)。

Google的解决方案是一种更好的方法。他们正在保护适用于所有应用程序的Android 9+。 (我不确定他们对Chrome OS的计划, 但我怀疑它正在制定中。)他们还在所有平台上保护Chrome, 但是只有在将主机平台配置为使用支持安全性的提供程序时, 它才会触发安全性。就用户选择而言, 这很好, 但并不理想, 因为它默默地退回到不安全的状态。

所有其他主要浏览器也都在实施支持。

在用户的理想情况下, 更广泛的软件和OS开发人员社区将:

  1. 停止在应用程序级别实施新的DNS安全功能
  2. 在操作系统级别开始实施它们
  3. 遵守操作系统级别的配置, 或征得用户同意

在操作系统级别实施加密的DNS, 我们可以继续遵循与DNS解析器当前相同的分布式模型。在自己的网络上运行自己的DNS服务器, 并能够确保该解析器的安全, 继续使用该选项很有意义, 就像使用集中式提供程序一样。

Linux和BSD已经具有此功能, 并且具有多种可用选项。不幸的是, 据我所知, 没有发行版默认启用它们。如果你需要将某些东西插入glibc中, 请查看nss-tls。

Google在Android 9+中的DNS-over-TLS实施也已经做到了。它通过测试DNS服务器的加密支持来起作用。如果有, 它将使用它。如果不是这样, 则与Chrome一样, 它会以不安全的方式继续运行, 而无需征得你的同意。

值得注意的是, 大多数网络都配置为使用不支持加密的DNS服务器, 因此Android内置的解决方案对于大多数用户而言仍然没有任何改变。在分散式不支持加密的情况下, 最好还是使用集中式加密DNS。

对于Apple和Microsoft风味设备, 在撰写本文时, 尚未正式支持对加密DNS的支持。随着Microsoft在2019年11月宣布他们打算支持加密DNS的打算, 希望Apple会很快效仿。

加密的DNS解决方法

有一些可以在本地运行的代理形式的变通办法。有了这些, 用户的计算机就会对自己说出非加密的DNS, 然后, 它向与其配置为使用的任何提供商说出加密的DNS。这不是理想的解决方案, 但是随着变通办法的发展, 它是不错的选择。

撰写本文的灵感来自DNSCrypt代理, 该代理非常稳定, 风吹草动, 并且是跨平台的。它支持较旧的DNSCrypt协议, 以及较新的TLS上的DNS(DoT)和HTTPS上的DNS(DoH)协议。

对于Windows用户, 有一个名为Simple DNSCrypt的安装程序和GUI, 它功能齐全且易于使用。

我建议这样做, 但要注意, 世界可能还没有准备好, 因此你可能需要不时禁用它(例如, 当你必须在自己喜欢的咖啡馆或局域网中使用俘虏门户时)派对)。

其他选择

此外, 还有Technitium DNS服务器, 该服务器支持加密的DNS, 是跨平台的(Windows, MacOS, ARM / Raspberry Pi上的Linux), 并具有漂亮的Web界面。之所以称为”其他”, 是因为它是一种全面的工具, 而不是针对此问题的解决方案。 (如果你想在家中运行Raspberry Pi DNS服务器, 这将是一个不错的选择。我很想听听在下面的评论中尝试过它的人的反馈。)

对于Android或iOS(iPhone, iPad等)设备, 还有1.1.1.1应用程序, 它将通过Cloudflare加密DNS服务强制所有DNS查询。我听说还有一些更灵活的应用程序, 例如Intra, 但我还没有花时间来测试它们。

当然, 你也可以同时在Firefox和Chrome中启用加密的DNS-请记住上述所有注意事项。

DNS可靠性:工作第一

互联网隐私技术存在很多争议。但是, 在实施安全性和隐私权措施时, 所关注的技术主要不是保密。这是关于确保可靠性并确保该技术能够继续正常运行, 而不管其他行为如何。但是, 我们需要注意的是, 就像没有隐私保护措施的技术很糟糕一样, 执行不当的保护措施只会使情况变得更糟。

赞(1)
未经允许不得转载:srcmini » 保持加密,确保安全:使用ESNI,DoH和DoT

评论 抢沙发

评论前必须登录!