【每日一知】DNS over TLS
前言
2016年,RFC添加了DNS-over-TLS的标准,正式提出了DNS报文明文导致隐私问题。DNS-over-TLS,顾名思义类似于HTTP-over-TLS(HTTPS)。因此DNS-over-TLS其实就是“DNSS”,一种基于TLS来进行报文加密的DNS请求交互。区别于DNS传统的安全扩展标准DNSSEC,DNS-over-TLS更侧重于DNS交互报文的加密性,而DNSSEC更侧重于DNS交互报文的完整一致性。
RFC7858提出了DNS隐私的相关问题:
简介
DNS over TLS 是一项安全协议,它可以强制所有和DNS服务器相关的链接使用TLS。也就是说他可以让ISP(即DNS提供商)无法窥探访问数据信息。
什么是DNS over TLS?
TLS(传输层安全协议)的前身为SSL(安全套接层),从SSL3.0开始全面升级为TLS。TLS用于在两个通信应用程序之间提供保密性和数据完整性,最著名的用途即我们常见的HTTPS。
整个TLS传输的过程如下:
(1)TCP三次握手
(2)SSL的ClientHello和ServerHello和对应的秘钥交换KeyExchange
(3)Client和Server互相ChangeCipherSpec通知进入加密模式,此时可以进入数据传输状态
(4)应用数据传输过程
(5)应用数据传输完成,TCP两次挥手
抛开TCP连接和数据包文传输的部分,TLS握手部分将使用2个RTT。
因此,从RFC文档来看,DNS-over-TLS和HTTPS类似,使用了 TCP 853 作为传输端口来完成TLS握手,再执行普通的DNS请求/应答。因此在DNS-over-TLS的整个过程中,将使用至少4次RTT,这也将导致DNS的查询延时放大4倍。
DNS-over-TLS在技术上并没有特别领先的概念,只是把相对通用的传输层TLS协议用在了DNS上,这样做确实确保了数据的加密和一致性,但是对于DNS的性能也带来了很大的挑战。