【翻譯】卡通圖解DNS,你的信息怎麼被泄露的?

原文連接:A cartoon intro to DNS over HTTPS瀏覽器

HTTP簡要課程

當一我的解釋瀏覽器如何下載一個網頁的時候,他們經常會這麼說:安全

  1. 你的瀏覽器向服務器發送一個GET請求。
  2. 服務器返回一個包含HTML的文件響應。

這個系統就叫HTTP。服務器

可是這個圖有點過於簡化了。你的瀏覽器不直接與服務器通訊。多是因爲他們每每相離甚遠。網絡

通常,服務器可能距你幾千英里之外。這之間可能沒有直連你電腦和服務器的線路。網站

因此這個請求從瀏覽器到服務端,會通過許多人的手。響應返回回來的時候也會如此。加密

我把這個比喻爲同窗們在課堂上傳遞紙條。紙條的外面會寫要傳給誰,而後寫的人把它交給附近的人,而後拿到紙條的這我的又把紙條傳給他附近的人——這些人不必定是最終的接收方,而是這個傳遞路線上的經手者。操作系統

這裏的問題在於,這條路徑上的全部人均可以打開這個紙條而後讀裏面的內容。並且你事先沒法知道這個紙條會通過哪些人手中。翻譯

可能其中的某人會作一些壞事...3d

好比把裏面的內容公之於衆code

或者改變裏面的內容

爲了防止這些問題,一個新的、安全的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),請查看原文

相關文章
相關標籤/搜索