写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。
今天,谷歌官方博客刊文宣布谷歌公共 DNS 服务器正式支持 DoH 加密,为用户提供便捷访问的同时也保护隐私。
谷歌称自八年前推出谷歌公共 DNS 服务器至今,网络环境已经发生很大变化,用户迫切需要保护自己的隐私。谷歌公共 DNS 的任务就是为全世界所有用户提高 DNS 的安全性和准确性,因此谷歌 DNS 开始支持 DoH 加密。
当前谷歌公共 DNS 已经完全接入 DoH 加密并最大限度的减少 TLS 开销,包括 TLS 1.3 和 TCP 协议快速打开等等。加密功能对查询速度有影响但是经过优化后影响已经很小很小,绝大多数用户不会感觉到加密后带来的延迟。
以下是小编整理的 DNS 加密以及 DoH 的相关知识,感谢 编程随想 博主的文章,文章地址在本文最后,感兴趣的朋友们可以进行了解。
为何 DNS 需要加密
设计 DNS 的时候,互联网基本上还是个玩具。那年头的互联网协议,压根儿都没考虑安全性,DNS 当然也不例外。所以 DNS 的交互过程全都是【明文】滴,既无法做到 “保密性”,也无法实现 “完整性”。
- 缺乏 “保密性” 就意味着——任何一个能【监视】你上网流量的人,都可以【看到】你查询了哪些域名。直接引发的问题就是隐私风险。
- 缺乏 “完整性” 就意味着——任何一个能【修改】你上网流量的人,都可以【篡改】你的查询结果。直接引发的问题就是 “DNS 欺骗”(也叫 “DNS 污染” 或 “DNS 缓存投毒”)。
为了解决传统 DNS 的这些弊端,后来诞生了好几个网络协议,以强化域名系统的安全性。上文提到的 DoH 正是最晚诞生、也最被看好的一个。
DoH 何许人也
DoH 即 “DNS over HTTPS”的简称,顾名思义,DNS over HTTPS 就是基于 HTTPS 隧道之上的域名协议。而 HTTPS 又是 “HTTP over TLS”。所以 DoH 相当于是【双重隧道】的协议。
DoH 最终依靠 TLS 实现了【保密性】与【完整性】。这么做的好处是,即使有人监视你的上网流量,也无法判断——哪些 TLS 流量是用于域名查询,哪些 TLS 用于网页传输。换句话说,DoT 协议的流量无法被【单独识别】出来。
此外,由于 DoH 是基于 HTTP 之上。而主流的编程语言都有成熟的 HTTP 协议封装库;再加上 HTTP 协议的使用本身很简单。因此,要想用各种主流编程语言开发一个 DoH 的客户端,是非常容易滴。
对 DoH 的讨论
浏览器支持
- Firefox 从 62 版本开始支持 DoH,具体参见 Mozilla 官方博客。地址:https://blog.nightly.mozilla.org/2018/06/01/improving-dns-privacy-in-firefox/
- Chrome/Chromium 从 66 版本开始支持 DoH。具体参见 Chromium 官网的 issue。地址:https://bugs.chromium.org/p/chromium/issues/detail?id=799753
虽然 Firefox 和 Chrome/Chromium 都已经开始支持 DoH,但大伙儿别急着用。
按照历史经验,刚加入的新功能,可能还不够稳定,没准儿还存在未曝光的安全漏洞。多等几个版本之后再说。
参考文章:
https://program-think.blogspot.com/2018/10/Comparison-of-DNS-Protocols.html