基于隐私保护技术的DNS通信协议

域名系统(DNS)是互联网基础服务,是互联网访问的重要入口,域名隐私保护是 DNS安全的研究热点 。本文提出了一种基于用户数据报协议的DNS传输中用户隐私保护的加密方法:DNSDEA 。该方法采用PKI加密体系与DNS协议相融合,不仅解决了域名隐私保护问题,而且与传统DNS体系相兼容,保持了DNS系统的简单、高效的技术特点 。
 

基于隐私保护技术的DNS通信协议

文章插图
 
域名系统(domain name system,DNS)是互联网的重要基础服务之一,主要通过域名和互联网协议地址(IP)等互联网基础资源之间的映射与转换,实现标识和定位互联网上服务器和服务入口 。DNS是一个相对成熟的全球性分布式数据库,为互联网提供高效稳定的互联网标识解析服务 。
 
1983 年,Mockapetris提出 DNS 架构,随后该构架在不断地持续演进和优化 。在设计之初,域名系统在域名协议方面并没有考虑完备的安全机制 。1999年,DNS安全扩展协议(domain name system security extensions,DNSSEC)被提出,其能够有效降低中间人攻击的风险,保证 DNS传输数据的完整性,从而提升 DNS系统的安全服务能力 。2010年,互联网域名的根服务开始部署 DNSSEC服务,标志着域名服务开始向安全服务方向迈进,DNS 也从一个简单的名址转换服务向复杂的、可信的解析服务发展,传输层安全协议DANE(DNS-based authentication of named entities)就是基于 DNSSEC协议将数字证书通过 DNS服务进行发布,以确保证书来自特定的证书颁发机构 。
 
【基于隐私保护技术的DNS通信协议】随着互联网普及率的不断提高及其对生产生活的不断渗透,人们已经对互联网产生了越来越强的依赖性,当前的互联网已不仅是获取和分享信息的途径,而且已成为大多数传统行业业务系统的基础载体,因此隐私问题已经成为互联网亟待解决的一个重要问题 。DNS 主要采用用户数据报协议(user datagram protocol,UDP)协议明文传输方式进行名址转换,虽然DNSSEC协议提升了数据篡改难度,但是依然采用明文方式提供解析服务 。作为互联网基础服务,DNS 对于用户隐私保护依然表现出了脆弱性 。目前 DNS 有关安全的命题被真正解决得还较少,而其中的隐私问题也已成为行业关注的焦点问题并逐渐得到重视 。一方面,行业内采用查询最小化(query minimization)方法降低隐私窃取风险,使用数据最小化(data minimization)原理减少 DNS权威服务收集个人隐私信息;另一方面,针对 DNS解析服务过程中隐私泄露的问题,国际组织Internet Engineering Task Force(IETF)于2014年专门成立 The DNS PRIVate Exchange(DPRIVE)工作组讨论并制定 DNS 隐私保护协议,希望采用数据加密传输的方式实现 DNS隐私保护 。基于此背景,本文提出一种基于UDP的DNS传输中用户隐私保护的加密方法 。
 
研究现状
 
当前,绝大多数 DNS 服务和终端之间的数据交换(主要包含请求和反馈)采用明文、非加密的方式进行,这将导致用户隐私暴露在互联网通信中,其隐私方面的脆弱性将会被黑客所利用,例如黑客可以收集用户的访问痕迹(查询时间、访问内容、用户IP地址等)等信息分析用户习惯等 。针对这个问题,目前主要有以下两种方法保护DNS查询过程中的用户隐私 。
 
DNS数据报文加密
 
Dempsky 提出了 DNSCurve 方法,该方法基于现有 DNS 体系架构,使用Curve25519 在客户端和服务器端交换密钥以及提供认证和数据加密 。服务端的公钥存放在“NS”记录中发送给客户端,因此使用 DNSCurve加密DNS报文并不会带来额外查询延迟 。DNSCrypt是DNSCurve比较有名的一个实现,已在 OpenDNS的服务上得到广泛部署,用来解决终端用户的隐私保护问题 。类似的ConfidentialDNS也使用了 DNS的扩展机制为 DNS协议增加加密功能 。它提出一种新的资源记录类型“ENCRYPT”来传送 DNS服务器的公钥到客户端 。然后客户端使用服务器公钥加密 DNS 查询请求,以及用来加密 DNS响应的客户端公钥,从而实现对 DNS请求和反馈数据进行加密保护 。这两种方案虽然能有效解决DNS 明文传输所带来的脆弱性问题,但是需要在DNS通信两端都部署安装插件(或升级解析软件)实现DNS通信从明文到密文的目标,推广成本较大,所以目前使用并不广泛 。
 
DNS通信链路加密
 
TLS(transport layer security)是一种为网络通信提供数据保密以及完整性的安全协议,它在传输层对网络连接进行加密 。目前 TLS 最常见的一种应用是HTTPS协议,它使用公钥加密对网站进行认证,同时使用对称加密对数据传输进行加密 。TLS需要 TCP协议来保证信道的可靠传输,不能直接用来加密保护 UDP协议的数据,如果 DNS希望使用 TLS加密保护数据,就必须使用 TCP协议 。然而现状是绝大部分的 DNS查询使用 UDP协议,切换为 TCP协议是一个长期的过程,并且代价巨大 。因此,就现阶段来说,DNS-over-TLS并不是一个可行的隐私保护方案 。


推荐阅读