原文链接:A cartoon intro to DNS over HTTPS

HTTP简要课程

当一个人解释浏览器如何下载一个网页的时候,他们常常会这么说:

  1. 你的浏览器向服务器发送一个GET请求。
  2. 服务器返回一个包含HTML的文件响应。

这个系统就叫HTTP。

但是这个图有点过于简化了。你的浏览器不直接与服务器通信。可能是由于他们往往相离甚远。

一般,服务器可能距你几千英里以外。这之间可能没有直连你电脑和服务器的线路。

所以这个请求从浏览器到服务端,会经过许多人的手。响应返回回来的时候也会如此。

我把这个比喻为同学们在课堂上传递纸条。纸条的外面会写要传给谁,然后写的人把它交给附近的人,然后拿到纸条的这个人又把纸条传给他附近的人——这些人不一定是最终的接收方,而是这个传递路线上的经手者。

这里的问题在于,这条路径上的所有人都可以打开这个纸条然后读里面的内容。而且你事先无法知道这个纸条会经过哪些人手中。

可能其中的某人会做一些坏事...

比如把里面的内容公之于众

或者改变里面的内容

为了防止这些问题,一个新的、安全的HTTP版本出现了,叫做HTTPS。什么是HTTPS?就好比在每张纸条外面加了个锁。

浏览器和服务端都知道怎么处理这把锁,但是中间的那些人并不知道。

有了这个,即使信息被多人传递,只有你和网站能够看到信息的内容。

这解决了很多的安全问题。但是仍然有很多在浏览器和服务端之间传递信息是没有被加密的。这意味着中间的人仍然能够发现你在做什么。

一个数据会被暴露的地方是在与服务端建立连接的时候。当你发送初始信息给服务端的时候,你也发送了服务器名字(某些领域叫Server Name Indication)。这使得在一台机器上运行多个网站成为可能,因为通过这个名字它知道你请求的是哪一个。这个初始请求是建立加密连接的一环,但是这个初始请求它本身是不加密的。

另外一个信息暴露的地方是在DNS。所以,什么是DNS?

DNS:域名系统

在上面传纸条的比喻中,我说了接收方的名字会被写在纸条的外面,这在HTTP请求中也是如此...这个名字用来表明这个纸条要去哪。

但事实上你无法使用名字告诉他们纸条要去哪。这之前的路由都不知道你说的是谁。然而,你需要告诉他们的是IP地址。这中间的路由才知道你要把消息发往哪。

这里就有一个问题。如果你是网站的运营方,你不会想你的用户去记住你的IP地址。你会想给你的网站取一个上口的名字...好记的名字。

这就是为什么我们需要域名系统(DNS)。你的浏览器使用DNS把网站名字转换成IP地址。这个过程——把域名转成IP地址——叫做域名解析。

然后浏览器怎么知道如何去做这件事呢?

一个选项是你可以有一个很长的列表,像浏览器中的电话簿。但是当一个新的网站上线,或者迁移到新的服务器去,很难使你的列表保持更新。

所以与其用一个列表保存所有的域名,我们有许多互相关联的更小的列表。这使得他们能被单独地管理。

为了得到域名对应的IP地址,你需要找到包含这个域名的列表。这个过程就像寻宝游戏一样。

对于维基百科的英文版本网站en.wikipedia.org的寻宝是怎么样的?

我们把这个域名分成几部分:

有了这三部分,我们可以找到包含这个IP地址的列表。然而,我们在找寻的过程中需要一些帮助。这个帮我们找寻到宝藏(IP地址)的东西叫解析器(resolver)

首先,解析器会请求根DNS。它知道一些不同的根域名服务器,所以它会给其中的一个发送请求。解析器询问根DNS可以去哪找到更多关于.org顶级域名下的地址信息。

这个根DNS会给出一个知道.org下相关地址信息的服务器地址。

解析器会告诉告诉操作系统en.wikipedia.org的IP地址。

这个过程叫做递归解析(recursive resolution),因为你从一个服务器得到一个ip地址后,你需要回去向这个ip地址的服务器发起另一个相似的请求。

我说过我们需要一个解析器帮我们完成这一系列请求。但是浏览器是如何找到这个解析器的呢?一般,浏览器会委托操作系统去获得一个解析器。

那么操作系统是如何知道该采用哪个解析器呢?这里有两种方式。

你可以配置你的计算机去使用一个你信任的解析器。但是基本没多少人这么做。

人们大多使用默认配置。默认地,操作系统会使用当前网络提供的解析器。当计算器连接到网络并获得IP地址后,网络也会推荐一个解析器供使用。

这意味着你使用的解析器一天之内会变更好几次。如果你下午决定去一家咖啡店上网,那么你可能使用了一个与上午在家不同的解析器。当然如果你配置了你信任的解析器也是一样的,因为在dns协议里没有安全可言。

DNS是怎么被利用的

所以这个系统(DNS System)是如何让用户陷入一个弱势地位呢?

通常解析器会告诉DNS服务器你在查询的域名是什么。然而这个请求有时会包含你的整个IP地址。就算不是完整的IP地址,越多越多的请求会带上你的大部分IP地址,这能和其他的信息结合起来察觉出你的身份。

这意味着你询问过的每一个服务器都能知道你访问的网站是什么。不仅如此,还意味着你与服务器之间的所有中间节点也能看到你的请求。

这里有两种对用户的数据造成威胁的方式。主要是跟踪(tracking)和欺骗(spoofing)

跟踪(tracking)

就像我上面说的,很容易通过IP地址得知是谁在访问这个网站。这意味着DNS服务器和路径上的中间人——叫做on-path routers——能够建立一份你的画像。他们可以记录你访问的所有网站。

这些数据是十分有价值的。很多人和公司会花很多钱来知道你浏览了些什么。

于是你的数据就被收集和贩卖了。因为网络给你的解析器可能根本靠不住。

即使你信任你的网络推荐的解析器。那也仅限于你在家的时候。如我前面提到的,当你去咖啡店或酒店等的时候,你可能使用了一个不同的解析器。谁知道它会怎么处理你的数据。

在没有得到你同意的情况下收集和贩卖你的数据,这个系统还有一种更危险的利用方式。

欺骗(Spoofing)

说到欺骗,指的是你到DNS服务器之前的某人改变了返回的结果。欺骗者可能会告诉你你访问网站的假地址。这会阻止你访问真的网站同时引导你进入了诈骗网站。

比如,你实体超市进行购物。你想要在某宝某东查询某件商品的价格,看是否能在网上更便宜的买到。

但如果你连接的是超市的Wifi,你可能就用了他们的解析器。这个解析器可能劫持了你的电商的请求,然后欺骗你说网站不可访问。

此篇只翻译了文章中的教程部分,若想进一步了解Mozilla提出的安全解决方案Trusted Recursive Resolver (TRR) and DNS over HTTPS (DoH),请查看原文

【翻译】卡通图解DNS,你的信息怎么被泄露的?相关推荐

  1. 北京大学软微学院计算机辅助翻译,北京大学软件与微电子学院计算机辅助翻译CAT考研:招生录取信息、备考信息、专业课考研攻略...

    北京大学软件与微电子学院计算机辅助翻译CAT考研:招生录取信息.备考信息.专业课考研攻略 最新分数线: 最新解析: 2018年: 报名人数是17年的二倍还多,达到178人报考:缺考人数28人,单科总分 ...

  2. 网安:haveibeenpwned(社工库)查看信息是否被泄露

    网安:haveibeenpwned(社工库)查看信息是否被泄露 Have I Been Pwned: Check if your email has been compromised in a dat ...

  3. 多人上传文件公共网盘_上传网盘的信息也会泄露?个人隐私照片被多人传看,太过分了...

    原标题:上传网盘的信息也会泄露?个人隐私照片被多人传看,太过分了 关于百度网盘泄露隐私的事件已经不是第一次了,2017年就曾发生过一次非常严重的隐私泄露事件.在那次泄露的事件中,大量私人信息,包括身份 ...

  4. 【翻译大老外的文】信息平台与数据科学的兴起

    原标题:Information Platforms and the Rise of the Data Scientist 原作者:Jeff Hammerbacher /* 作者简介: 杰夫·哈默巴赫, ...

  5. 权威dns服务器存储信息,权威域名服务器

    权威域名服务器 内容精选 换一换 本帖最后由知足常乐于2017-11-2513:02编辑DNS的查询过程有两种类型:递归查询和迭代查询.递归查询用于主机向本地域名服务器的查询.主机向本地域名服务器发出 ...

  6. 翻译: 详细图解Transformer多头自注意力机制 Attention Is All You Need

    1. 前言 The Transformer--一个使用注意力来提高这些模型的训练速度的模型.Transformer 在特定任务中的表现优于谷歌神经机器翻译模型.然而,最大的好处来自于 The Tran ...

  7. 图解 DNS服务器解析过程

  8. 超详图解DNS域名解析全过程

  9. 如何看你的信息有没有泄露

    本知识是在B站上学习总结的,原视频链接:https://b23.tv/BV1G64y1c7Gn 检查信息是否泄露的工具 点这里跳转 或者搜索:https://monitor.firefox.com/ ...

最新文章

  1. 利用机器学习进行DNS隐蔽通道检测——数据收集,利用iodine进行DNS隐蔽通道样本收集...
  2. 从一个提问引发到你是怎么看待编程语言是一种工具这句话的?【笔记自用】
  3. 什么是Spring Data?
  4. LOG4J原理以及配置的研究
  5. 在a标签中写ajax,ajax请求后的数据渲染到页面中,a链接失效
  6. 其实Go 1.17 就支持泛型了,具体该怎么用呢?
  7. 1.11 为什么使用卷积?
  8. 08.树:2_二叉树
  9. 毕设题目:Matlab图像融合
  10. jsp中对jstl一些标签的引用方式
  11. H3C交换机定时重启配置方法
  12. 手机怎么用外嵌字幕_iphone 12发布 ! “预购、定金、尾款、换手机”用英语怎么说?...
  13. python并发编程gevent模块以及猴子补丁学习
  14. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
  15. Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans,报错解决
  16. Android语音播报、后台播报、语音识别
  17. MYSQL 那点破事,索引、SQL调优、事务、B+树、分表 ....
  18. 电磁场与电磁波实验(MATLAB版)
  19. 连续系统的复频域分析 matlab,实验七连续信号与系统复频域分析的MATLAB实现1
  20. 信息化发展时代,美云智数走进企业成为企业的大数据管家

热门文章

  1. Proxy 补充学习笔记
  2. python中如何调用函数_我写了一个函数,如何在python中调用
  3. qtimer不触发原因_迷你世界:触发器玩法多,教你摆表情就能拥有满格血量
  4. Syntax error, parameterized types are only available if source level is 1.5 or greater
  5. django 函数装饰器 变为 类装饰器
  6. Android开发系列之创建自定义控件
  7. About SCCM 2012 UDA(User Device Affinity)
  8. 【深入JavaScript】3.JavaScript继承的实现总结
  9. MFC添加自定义消息及处理函数
  10. c++中创建类型测试