Skip to content

前言 | DNS加密

什么是DNS?

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

为什么要加密DNS?

传统的DNS查询和响应以明文形式在网络中传输,这使得黑客和恶意第三方可以轻易地拦截和篡改这些信息,实施DNS劫持,将用户重定向到假冒网站或植入恶意软件。加密DNS通过对查询和响应进行加密,确保数据在传输过程中不被窃听或篡改,有效抵御此类攻击。

DNS的传输协议

DNS over UDP/TCP/53 (Do53)

从1983年起源到最近,DNS主要回答UDP端口53上的查询。此类查询包括从客户端以单个UDP数据包发送的明文请求,响应为从服务器以单个UDP数据包发送的明文回复。当应答的长度超过512字节并且客户端和服务器都支持DNS扩展机制(EDNS)时,可能会使用更大的UDP数据包。DNS-over-UDP的使用受到限制,其中包括缺乏传输层加密、身份验证、可靠传递和消息长度。1989年,RFC 1123为DNS查询、回复,特别是区域传输指定了可选的TCP传输。通过长响应的分段,TCP允许更长的响应、可靠的传递和重用客户端和服务器之间的长期连接。

DNS over TLS(DoT)

加密DNS的IETF标准于2016年出现,利用传输层安全(TLS)来保护整个连接,而不仅仅是DNS有效负载。DoT服务器侦听TCP端口853。RFC 7858指定可以支持机会加密和认证加密,但没有强制服务器或客户端认证。

DNS over QUIC(DoQ)

互联网工程任务组的RFC 9250描述了DNS over QUIC。

DNS over HTTPS(DoH)

2018年引入了DNS查询传输的竞争标准,通过HTTPS隧道传输DNS查询数据(进而通过TLS传输HTTP)。DoH被推广为对网络更友好的DNS替代方案,因为与DNSCrypt一样,它在TCP端口443上传输,因此看起来类似于网络流量,尽管它们在实践中很容易区分。DoH因相对于DoT降低用户匿名性而受到广泛批评。

Oblivious DNS 和 Oblivious DoH

Oblivious DNS(ODNS)是由普林斯顿大学和芝加哥大学的研究人员发明和实施的,作为未加密DNS的扩展,在DoH本身被标准化和广泛部署之前。Apple和Cloudflare随后将该技术部署在DoH环境中,称为Oblivious DoH(ODoH)。ODoH将入口/出口分离(在ODNS中发明)与DoH的HTTPS隧道和TLS传输层加密结合在一个协议中。

DNS over Tor

与其他Internet协议一样,DNS可以通过VPN和隧道运行。DNS-over-Tor自2019年以来已经变得足够普遍以保证其自己经常使用的首字母缩略词的一种用途。Oblivious DNS的隐私效果可以通过使用预先存在的入口和出口节点的Tor网络以及TLS提供的传输层加密来获得。

DNSCrypt

DNSCrypt协议于2011年在IETF标准框架之外开发,在递归解析器的下游侧引入了DNS加密,其中客户端使用服务器的公钥加密查询有效负载,这些公钥在DNS中发布(而不是依赖于第三方方证书颁发机构),进而可能受到DNSSEC签名的保护。DNSCrypt使用TCP或UDP端口443,与HTTPS加密的网络流量相同的端口。这不仅引入了关于查询内容的隐私,而且还引入了防火墙穿越能力的重要衡量标准。在2019年,DNSCrypt进一步扩展以支持“匿名”模式,类似于提议的“Oblivious DNS”,其中入口节点接收已使用不同服务器的公钥加密的查询,并将其转发给该服务器服务器充当出口节点,执行递归解析。创建用户/查询对的隐私,因为入口节点不知道查询的内容,而出口节点不知道客户端的身份。DNSCrypt于2011年12月由OpenDNS首次在生产环境中实现。有几个免费和开源软件实现额外集成了ODoH。它适用于各种操作系统,包括Unix、Apple iOS、Linux、Android和MS Windows。