

ODNS:保护DNS隐私的新标准
source link: https://my.oschina.net/u/4888052/blog/4816768
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

最近,Cloudflare在官方博客上宣布,他们和Apple、Fastly公司的工程师一起合作,开始支持一种新提议的DNS标准——ODNS。这种新标准声称能够保护用户在执行DNS请求时的隐私。在介绍ODNS之前,我们需要先回顾一下现在域名系统的架构。
域名系统的特点是分级、去中心化。一共分为了递归解析器、权威域名服务器、顶级域名服务器、根服务器四个等级。

当用户发起DNS请求时,会经历以下流程:
- 用户本机的解析器(Stub Resolver)向递归解析器(Recursive Resolver)发起请求。
- 如果递归解析器缓存了该域名,直接返回结果。如果没有缓存,则向根服务器请求。
- 根服务器向递归解析器返回顶级域服务器的地址。递归解析器向顶级域名服务器请求。
- 顶级域名服务器返回权威域名服务器的地址。递归解析器向权威域名服务器发起请求。
- 递归解析器收到权威域名服务器解析后的IP地址,返回给本机解析器。
在传统的DNS协议中,请求和响应都是明文的,也就是说,在发起请求的各个阶段,中间的操作者都能够看到一些信息。其中,递归解析器能够看到是谁请求了什么域名。由ISP提供的DNS服务器是递归解析器,被发现通常会收集大量个人信息,出售给广告商以获利。另外,明文的域名请求也使得政府的监管成为了可能。一旦请求恶意的网站,监管机构就能够切断对该网站的访问。
加密的域名请求
域名系统遇到的问题和HTTP非常类似。自然而然地,给DNS请求加密的标准被提了出来,一共有三种:DNS-over-TLS、DNS-over-DTLS、DNS-over-HTTPS。它们的目的都是通过一种公钥加密算法给DNS请求加密,从而防止用户的隐私被ISP侵犯。但是,这也带来了相同的问题,作为DNS请求操作者的公司就是值得信任的吗,比如Cloudflare和Google?这个方案不过是把信任从ISP放到了提供加密DNS请求服务的提供者上。
ODNS基本流程
为了解决上面DOT等标准无法解决的隐私问题,ODNS被提了出来。ODNS是Oblivious DNS的简写,由普林斯顿大学的Paul Schmitt、Anne Edumundson等人于2018年提出,未来将会形成一份IETF的标准。
ODNS的基本思想是在递归解析器和其它域名服务器之间加入一个服务器——ODNS服务器,由ODNS服务器去完成域名的递归解析。原来的递归解析器这时充当的是一个代理。ODNS的协议不仅能够保证递归解析器只能够知道是谁发起了请求,但不知道请求了什么,还能够保证ODNS服务器只知道请求的内容,但不知道是谁发起了这次请求。换句话说,处理DNS请求的各个节点服务器都没有办法把请求者和请求的内容联系起来,因此,保护了用户的隐私。

ODNS请求的流程如下:
- 当客户端请求域名时,本地解析器生成对称会话密钥,使用这个密钥加密域名,生成字符串s1。之后再使用ODNS服务器的公钥加密会话密钥,生成字符串s2。把整个加密后的字符串和ODNS的域名拼接在一起,形成一个新的域名请求——{s1}{s2}.odns。
- 发送域名请求给递归解析器,递归解析器把域名发送给权威域名服务器查找特定的odns域名。
- ODNS解析器收到请求的域名,解密出会话密钥,再用会话密钥解密出真正想要请求的域名。
- ODNS解析器按照递归解析器的流程解析该域名,从其它服务器获得响应。
- ODNS解析器把响应加密后返回给客户端的递归解析器。
- 递归解析器把已经加了密的响应内容返回给本机解析器。
在上述流程中,ODNS解析器既是一个权威域名服务器,又是一个递归解析器。在接收ODNS后缀形式的域名请求时,它是权威域名服务器。在返回ODNS后缀形式的域名请求响应时,它是一个递归解析器。根域名服务器、其它权威域名服务器只能够看到ODNS发起了请求,但不知道背后真正发起请求的人是谁。客户端的递归解析器只能够看到客户端发起了请求,也不知道客户端到底请求了什么。而ODNS解析器虽然知道请求的内容是什么,但是它只能够看到客户端的递归解析器的地址,看不到客户端的真实地址。所以,在DNS的解析流程中,没有任何一个服务器能够同时看到请求者和请求的内容,除非递归解析器和ODNS是同一个服务器。
任播(anycast)是一种路由策略,可以选择若干目的节点中的一个作为数据报文的目的地,也即是一对多个中的一个,相比之下,多播(multicast)是一对多的。ODNS使用任播来实现ODNS解析服务器的复制,从而提高可用性和性能。在地理位置上,可以优先由离用户最近的ODNS解析服务器提供服务。当其中一个节点下线后,还有其它的节点提供服务。
ODNS的问题
尽管ODNS为用户带来了一定程度上的隐私保证,但它也引入了新的问题,这些问题中最重要的是性能问题。ODNS的加密和协议交互相比原有的会有额外的性能开销。同时,每一次请求都使用不同的对称密钥,会造成递归解析器的缓存失效,也就是说,即使请求相同的域名,但是递归解析器看到的是不同的内容,因此都会向ODNS发起解析请求。缓存失效带来了两个结果,一个是请求时间增加,另一个是网络中的流量会增多。
另外,ODNS的隐私保证是建立在一个前提之上——ODNS解析服务器的提供者和递归解析器的提供者不能是同一个人,或者说,他们没有共谋。在现实中,这样的假设可能很容易就被打破。
ODoH(Oblivious DNS over HTTPS)
文章最开头提到Cloudflare和Apple等公司开始支持这一新标准。它们基于这个新标准,设计、提出了ODNS的一种具体实现——ODoH,并部署到了现实环境中进行测试,以衡量它对网络的实际影响。另外,Cloudflare还开源了分别用Rust、Go语言编写的ODoH库,使用这个库可以实现ODoH的客户端、服务器程序。
[1]《Improving DNS Privacy with Oblivious DoH in 1.1.1.1》. https://blog.cloudflare.com/oblivious-dns/ (见于 12月 15, 2020).
[2]P. Schmitt, A. Edmundson, A. Mankin和N. Feamster, 《Oblivious DNS: Practical Privacy for DNS Queries》, Proceedings on Privacy Enhancing Technologies, 卷 2019, 期 2, 页 228–244, 4月 2019, doi: 10/ghn828.
[3]《[2011.10121] Oblivious DNS over HTTPS (ODoH): A Practical Privacy Enhancement to DNS》. https://arxiv.org/abs/2011.10121 (见于 12月 20, 2020).
[4]《Cloudflare and Apple design a new privacy-friendly internet protocol | TechCrunch》. https://techcrunch.com/2020/12/08/cloudflare-and-apple-design-a-new-privacy-friendly-internet-protocol (见于 12月 19, 2020).
[5]《cloudflare/odoh-rs: Oblivious DoH library in Rust》. https://github.com/cloudflare/odoh-rs/ (见于 12月 20, 2020).
Recommend
-
50
连月来 Facebook 泄漏用户数据丑闻的发酵,以及欧盟 GDPR的正式施行,让人们在数字生活中更加重视对个人隐私的保护。在这样的背景下,一贯重视隐私保护的苹果在今年的 WWDC 上也进一步提高了新系统对隐私的保护。正值 iOS 12 和 macOS Mo...
-
52
-
55
北京时间7月8日消息,华为公司创始人兼CEO任正非此前曾谈到过他是如何受到苹果公司启发的。现在,他又表示,苹果在用户隐私上的立场同样鼓舞着他。任正非在接受采访时称,华为不会把用户数据提供给政府,因为你怎么可能从“五金店”里要“水”呢?
-
38
我们当然知道隐私保护很重要,但是我以为区块链技术其实是放大了隐私保护的需求,并没有有效地解决这个问题。隐私保护里面有多少是区块链技术的功劳,就看我们往区块链这个概念里塞多少东西了。 思考 这一年,我看过不少...
-
50
图片来源:视觉中国 记者 | 田思奇 “其他国家也可能会对美国的科技公司做出类似的反应。而这对所有人都不利。” 数周以来...
-
4
1 Byte树莓派:用 Pi-hole 来保护隐私和过滤广告2020-04-22我家里的局域网除了电脑、iPad、电视、PS4 等常见设备外,最主要的额外配...
-
10
2020-05-26 h...
-
12
保护用户隐私?为修补漏洞,苹果紧急更新操作系统 2021年04月09日08:05 参考消息 我有话说(0人参与) 收藏本文 ...
-
6
不要保存命令到history中 Bash shell默认会将输入过的命令保存在 $HISTFILE 指代的文件中 保存的数量由 $HISTSIZE 来决定。 若 $HISTCONTROL 中的值是 ignorespace 或 ig...
-
10
“虚拟号码”升级 保护用户隐私 来源:光明网2021-06-07 13:31 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK