随着互联网快速发展,互联网用户对信息安全越来越重视,与此同时一些无耻之徒以某种名义盗取用户个人信息以及利用各种手段组织信息交流.
最近学习发现一篇通俗易懂的文章介绍如何利用Doh技术保护隐私

首先快速了解一下http protocol
当我们在浏览器访问一个URL地址时,通常是这样处理的
- Browser 会创建一个get request to server
- 服务器收到request 正常会返回response,即html内容

** 上面的图非常简化的示意了HTTP的访问html的访问流程 **
但是通常我们访问服务器上的网页内容的经由路径没那么简单,有可能像下面的图列

其实这有点像我们上学时传纸条

随之带来的问题就是,在传递过程中所有经手的同学都可以看到传递的纸条内容,甚至可以修改它,同时也不知道纸条到底经过了哪些同学传递


因为上面👆这些问题,就有了一种安全的方式来加密传递信息 HTTPS protocol

通过https + tls 给我们传递信息加上锁,只有拥有钥匙的接收者才能打开.这样即使经过多个路由器也只有你和服务器知道信息内容,这解决了很多安全问题.但是浏览器和服务器之间仍然有未加密的消息,这就意味着仍然有一些无耻之徒打着维护公共利益的幌子偷窥你的信息,分析你的行为.
到底还有哪些信息会被不法分子利用呢?
** 就是当客户端与服务器建立连接时的信息存在被监听的风险 **
这就是传统DNS protocol
DNS
the Domain Name System
通过上面的形象🌰,可以看出收件人必须写在信封外面才能被送达,对于http也是如此

但是在http 或https 路由是不知道客户点或服务器名称的,必须通过IP 地址才能将信息传递,这就产生一个问题,用户不希望记住那些没有规律可言的IP地址,二是希望通过记住名称来找到对方,这就产生了域名命名系统的需求(DNS)
那么 DNS具体是怎么工作的能


👆图就是所谓的域名解析

- TLD(top-level domain) 顶级域名知道所有二级域名的地址


直到最后解析到服务器域名地址.
👆这个过程就是DNS递归解析,但是在域名递归解析过程中,浏览器如何找到DNS解析器能,通常是由操作系统决定的

那么,操作系统如何确定使用哪个DNS解析服务呢?
一般会有两种方式
- 你可以配置自己信任的DNS解析服务,少数人呢会设置或者部分公司会要求设置
- 而大多数人采用系统默认方式

这样就意味着你的DNS解析器每天每刻都可能会发生变化
How can DNS be exploited?

那么这个系统是如何让用户变得脆弱的呢
通常,解析器会告诉每个DNS服务器您要寻找的域。 该请求有时包括您的完整IP地址。 或者,如果不是您的完整IP地址,则请求会越来越多地包含您的大多数IP地址,可以轻松地将其与其他信息结合以找出您的身份。
这意味着您请求帮助解决域名解析的每个服务器都能看到您要查找的站点。但更重要的是,这还意味着任何访问这些服务器的人都可以看到您的请求。这个系统通过几种方式将用户数据置于风险之中。两个主要的风险是跟踪和欺骗。
- Tracking
就像上面说的那样,很容易获得全部或部分IP地址信息,并弄清楚谁在要求该网站。 这意味着DNS服务器以及该DNS服务器路径上的任何人(称为“路经路由器”)都可以创建您的配置文件。 他们可以创建他们查看过的所有网站的记录。

- Spoofing
如果DNS服务器与客户端之间路径上任何一个人篡改了目标🔙结果,就会导致client收不到正确的相应.这也是那些所谓红门之后控制浮尸的惯用伎俩

那么如何通过TTR和DoH解决以上问题呢
通过可信赖的递归解析服务和 DoH 解决👇3个问题
- 终止非可信DNS resolver 篡改服务器响应
- 路径DNS resolver 可能会track 后 tamper
- DNS server 可能会跟踪你的DNS请求

解决方式
- 弃用不可信DNS resolver
- 防止在HTTPS上使用DNS进行路径上的窃听和篡改。
- 传输尽可能少的数据,以保护用户不被去匿名化
具体实施
使用可信DNS resolver
可以在Cloudflare.搭建
通过https 传递DNS信息包
Transmit as little data as possible to protect users from deanonymization
通过这些修复程序,我们减少了可以查看您正在访问哪些网站的人数。 但这并不能完全消除数据泄漏。 </br> 在执行DNS查找以找到IP地址之后,您仍然需要在该地址连接到Web服务器。 为此,您发送一个初始请求。 该请求包括服务器名称指示,其中指示您要连接到服务器上的哪个站点。 并且此请求是未加密的。 </br> 这意味着您的ISP仍然可以找出您要访问的站点,因为它就在服务器名称指示中。 另外,将初始请求从浏览器传递到Web服务器的路由器也可以看到该信息。 </br> 但是,一旦与网络服务器建立连接,则所有内容都会被加密。 整洁的是,此加密连接可以用于该服务器上托管的任何站点,而不仅仅是您最初请求的站点。 </br> 有时称为HTTP / 2连接合并,或简称为连接重用。 当您打开与支持该服务器的服务器的连接时,该服务器将告诉您它托管的其他站点。 然后,您可以使用该现有的加密连接访问那些其他站点。 </br> 为什么有帮助? 您无需启动新的连接即可访问其他网站。 这意味着您无需发送未加密的初始请求,其服务器名称指示即可表明您正在访问哪个网站。 这意味着您可以访问同一服务器上的任何其他站点,而无需向ISP和路径路由器透露您正在寻找的站点。 </br> 随着CDN的兴起,单个服务器正在为越来越多的独立站点提供服务。 而且,由于可以打开多个合并的连接,因此可以一次连接到多个共享服务器或CDN,从而访问不同服务器上的所有站点而不会泄漏数据。 这意味着作为隐私保护盾将越来越有效。
当前 Firefox已经支持DoH
Firefox Nightly