【翻译】卡通图解DNS,你的信息怎么被泄露的?
原文链接:A cartoon intro to DNS over HTTPS
HTTP简要课程
当一个人解释浏览器如何下载一个网页的时候,他们常常会这么说:
- 你的浏览器向服务器发送一个GET请求。
- 服务器返回一个包含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,你的信息怎么被泄露的?相关推荐
- 北京大学软微学院计算机辅助翻译,北京大学软件与微电子学院计算机辅助翻译CAT考研:招生录取信息、备考信息、专业课考研攻略...
北京大学软件与微电子学院计算机辅助翻译CAT考研:招生录取信息.备考信息.专业课考研攻略 最新分数线: 最新解析: 2018年: 报名人数是17年的二倍还多,达到178人报考:缺考人数28人,单科总分 ...
- 网安:haveibeenpwned(社工库)查看信息是否被泄露
网安:haveibeenpwned(社工库)查看信息是否被泄露 Have I Been Pwned: Check if your email has been compromised in a dat ...
- 多人上传文件公共网盘_上传网盘的信息也会泄露?个人隐私照片被多人传看,太过分了...
原标题:上传网盘的信息也会泄露?个人隐私照片被多人传看,太过分了 关于百度网盘泄露隐私的事件已经不是第一次了,2017年就曾发生过一次非常严重的隐私泄露事件.在那次泄露的事件中,大量私人信息,包括身份 ...
- 【翻译大老外的文】信息平台与数据科学的兴起
原标题:Information Platforms and the Rise of the Data Scientist 原作者:Jeff Hammerbacher /* 作者简介: 杰夫·哈默巴赫, ...
- 权威dns服务器存储信息,权威域名服务器
权威域名服务器 内容精选 换一换 本帖最后由知足常乐于2017-11-2513:02编辑DNS的查询过程有两种类型:递归查询和迭代查询.递归查询用于主机向本地域名服务器的查询.主机向本地域名服务器发出 ...
- 翻译: 详细图解Transformer多头自注意力机制 Attention Is All You Need
1. 前言 The Transformer--一个使用注意力来提高这些模型的训练速度的模型.Transformer 在特定任务中的表现优于谷歌神经机器翻译模型.然而,最大的好处来自于 The Tran ...
- 图解 DNS服务器解析过程
- 超详图解DNS域名解析全过程
- 如何看你的信息有没有泄露
本知识是在B站上学习总结的,原视频链接:https://b23.tv/BV1G64y1c7Gn 检查信息是否泄露的工具 点这里跳转 或者搜索:https://monitor.firefox.com/ ...
最新文章
- 利用机器学习进行DNS隐蔽通道检测——数据收集,利用iodine进行DNS隐蔽通道样本收集...
- 从一个提问引发到你是怎么看待编程语言是一种工具这句话的?【笔记自用】
- 什么是Spring Data?
- LOG4J原理以及配置的研究
- 在a标签中写ajax,ajax请求后的数据渲染到页面中,a链接失效
- 其实Go 1.17 就支持泛型了,具体该怎么用呢?
- 1.11 为什么使用卷积?
- 08.树:2_二叉树
- 毕设题目:Matlab图像融合
- jsp中对jstl一些标签的引用方式
- H3C交换机定时重启配置方法
- 手机怎么用外嵌字幕_iphone 12发布 ! “预购、定金、尾款、换手机”用英语怎么说?...
- python并发编程gevent模块以及猴子补丁学习
- 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
- Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans,报错解决
- Android语音播报、后台播报、语音识别
- MYSQL 那点破事,索引、SQL调优、事务、B+树、分表 ....
- 电磁场与电磁波实验(MATLAB版)
- 连续系统的复频域分析 matlab,实验七连续信号与系统复频域分析的MATLAB实现1
- 信息化发展时代,美云智数走进企业成为企业的大数据管家
热门文章
- Proxy 补充学习笔记
- python中如何调用函数_我写了一个函数,如何在python中调用
- qtimer不触发原因_迷你世界:触发器玩法多,教你摆表情就能拥有满格血量
- Syntax error, parameterized types are only available if source level is 1.5 or greater
- django 函数装饰器 变为 类装饰器
- Android开发系列之创建自定义控件
- About SCCM 2012 UDA(User Device Affinity)
- 【深入JavaScript】3.JavaScript继承的实现总结
- MFC添加自定义消息及处理函数
- c++中创建类型测试