Total Pageviews

Tuesday, 14 January 2020

DNS over TLS和DNS over HTTPS的区别是什么?

虽然它们听起来是一样的,但却有一个主要的区别,这引起了激烈的争论。

DNS over TLS和DNS over HTTPS听起来像是同一个事物的不同说法。但它们实际上完成的是同样的事情——加密DNS请求——但是有一个很大的区别:它们使用的端口。

对于听起来如此简单的事情,却存在着两种看法完全不同的阵营,而每一方对哪一个更好都有着根深蒂固的信念,尽管这似乎很愚蠢,但却是很危险的。一方是社会意识更强的,更加以用户为导向的,他们的主要兴趣点是隐私和人权。而另一方则更为务实,其中甚至包括一个DNS架构师,他认为,网络管理员需要能够看到和分析DNS活动。

有很多东西需要解释,但这是值得深入研究的,以便让你能够更好地看出DNS与TLS(DoT)和DNS over HTTPS(DoH)之间的区别,以及为什么这一讨论是十分重要的。

什么是DNS?为什么它需要TLS或HTTPS

DNS代表的是域名系统。最好也是最老套的比喻,就是电话簿。当大多数人在网上冲浪时,他们不会输入实际的IP地址——而是输入统一资源定位器(URL)。DNS服务器之后会获取该URL并找到它解析到的IP地址。
例如,当你想要访问xyz.com时,你会输入xyz.com,然后DNS服务器就会获取该URL并找到与之关联的IP地址。但是让人们记住ip地址是毫无意义的,因此URL无处不在(谷歌正试图消灭这个URL)。

如果你想要知道你正在访问的网站的IP地址,这在Windows和Mac上是很容易实现的。Windows用户只需要在搜索栏中输入“cmd”打开命令提示符,然后输入:
tracert anydomain.com
对苹果用户来说,这也是很简单的。在Mac的搜索栏中,键入“网络实用程序(Network Utility)”,然后点击打开它。然后导航到Traceroute选项卡,并在跟踪字段中输入域名:
一直以来,DNS请求都是通过UDP或TCP协议进行的——这意味着它们是以明文形式发送的。

正如我们将要讨论的,这可能是个问题。

我们为什么需要加密DNS请求?

如果你生活在美国、英国或澳大利亚,你会很容易认为你享有的权利和自由是理所当然的。从更广泛的范围来看,我们对隐私的关注是微不足道的。上周,约5000万脸书用户的数据遭到了泄露,而我就是其中幸运的一个:

尽管这非常令人讨厌,但我们会嘲笑它是第一世界问题。尽管存在一些可怕的异常情况,但对我们大多数人来说,最糟糕的是身份盗窃。这可不是闹着玩的,但它也不是会对你的生命或自由构成威胁的事。除了儿童色情和毒品,在美国、英国和大部分西方国家,没有什么东西是你不能接触的。

对世界其他地区来说,情况更是如此。中国的互联网是出了名的受限制(谷歌目前正在开发一个经过秘密审查的搜索引擎)。俄罗斯、朝鲜、伊朗、沙特阿拉伯——仅举几个大国的例子——是数十个限制本国公民使用互联网的国家之一。
自由之家(Freedom House)的数据显示,全世界只有不到四分之一的互联网用户生活在互联网被定义为是自由的国家。自由地访问互联网是人的权利,而不是可以讨价还价的事情。36%的互联网用户生活在互联网完全受限的国家,另有28%生活在互联网部分受限的国家。

真见鬼,几个星期前,整个埃塞俄比亚的互联网都被关闭了,以试图平息当时看来可能会发生的军事政变

当你的互联网历史记录可能导致你被司法机关拘留,或者受到伤害,甚至被杀死时,能够混淆那些DNS请求可能就是生死攸关的问题。这听起来可能有点夸张,但不需要大量的研究就可以知道,那些因互联网使用情况而被贴上异见人士标签的普通人会遇到什么问题。

这就是为什么,对于参与这场辩论的各方来说,这是一个人权问题——一个可能挑起相当大情绪的问题。

没有人认为DNS请求不应该被加密,争论的焦点是如何最好地做到这一点。

那么,DNS over TLS和DNS over HTTPS的区别是什么?

虽然这两种标准都对DNS请求进行了加密,但是DNS over TLS相对于DNS over HTTPS有一些重要的区别。IETF将DNS over HTTPS定义为了RFC 8484,将DNS over TLS定义为了RFC 7858和RFC 8310。

通过TLS加密和身份验证,DNS over TLS使用了TCP作为基本的连接协议。而DNS over HTTPS则使用的是HTTPS和HTTP/2进行连接。

这是一个重要的区别,因为它会影响使用的端口。DNS over TLS有自己的端口853。DNS over HTTPS则使用的是端口443,这是标准的HTTPS流量端口。

虽然拥有专用的端口听起来像是一种优势,但在某些情况下,实际上恰恰相反。尽管DNS over HTTPS可以隐藏在加密流量中,但是DNS over TLS请求全都来自一个唯一的端口,任何网络级别的人都可以很容易地看到它们,甚至可以阻止它们。

当然,请求本身——它的内容或响应——是加密的。所以你不知道被请求的是什么,但是它们知道你在使用DNS over TLS。至少这会引起怀疑。这就有点像在美国拿第五名一样。它只会让人觉得你隐藏了什么东西,在很多国家,这对你来说不是一个好事情。

关于DNS over TLS的案例

国际互联网名人堂入选者Paul Vixie是一名DNS架构师。在这个问题上,他的意见很有分量。上周末,Cloudflare的加密负责人Nick Sullivan在Twitter发送了一个有关RFC 8484(DNS Over HTTPS)的推文,Paul Vixie随后转发了该条推文并表达了自己的反对意见:

“RFC 8484会给互联网安全带来隐患。抱歉向您泼了冷水。就像一群鸭子一样,囚犯们找到了庇护所。”

就我个人而言,在众多的鸭子中,我更偏爱野鸭,但无论如何,Vixie的反对更多的是站在一个经验丰富的安全老兵的立场,而不是站在一个尽责的人权活动家的角度上来看的。这些在人权方面造成了弊端,但同样识别DoT请求的能力,却是有利于安全的。

这和HTTPS检查没什么区别。从表面上看,拦截HTTPS连接听起来像是一个坏主意,而且信息安全社区中肯定有一些人特别关注安全问题,他们会认为这种做法削弱了安全性。但也有企业网络管理员和安全人员不愿意放弃检查流量的能力,因为失去这一可视性是导致Equifax漏洞的部分原因。攻击者喜欢隐藏在加密流量中,最近的Magecart攻击就再次使用了这一点。

DNS over TLS有更多细微的差别,这从网络健康的角度来看是有用的。另一方面,DNS over HTTPS……

Vixie在推特上写道:“DoH是企业和其他私有网络的过顶旁路。但是DNS是控制平面的一部分,网络运营商必须能够监视和过滤它。使用DoT,永远不要使用DoH。”。

Vixie认为,DNS over HTTPS删除了一个有助于流量检查的关键区分符。它还使阻截其他网站变得更加困难,因为你必须阻截所有的HTTPS通信,而不是仅仅关闭来自特定端口的DNS请求。

从人权的角度来看,这是好事;从网络安全的角度来看,这又是坏事。

更好的标准是什么,DNS over HTTPS还是DNS over TLS?

这就是这场辩论想要决定的!双方都有正当的理由。无所益处的是,人身攻击分散了人们对有价值对话的注意力。

鉴于这是一个人权问题,各种情绪一定会爆发,但重要的是要记住,DNS over TLS更有利于网络安全,但可能会带来一些隐私方面的担忧,而支持这一方的人则不在乎这一点,因为他们是冷漠的或者缺乏同情心,他们只是从不同的角度来看待的这一问题。

有时,从定性的角度与从人权甚至道德的角度看什么是最好的是不一致的。对于许多在DNS over TLS阵营的人来说,这与现实世界中的隐私问题无关,而是因为他们认为DNS over HTTPS是一个低于DNS over TLS的标准。

这不是为了尊重他们的社会良知而工作,而是为了设计一个最有效的标准。

没有人反对隐私,即使并不是每个人都在为同样的事情而斗争。