當前位置:
首頁 > 最新 > 圖解基於HTTPS的DNS

圖解基於HTTPS的DNS

作者 | Lin Clark

譯者 | 胡紅星

本文主要介紹了如何通過基於 HTTPS 的 DNS 和可信遞歸解析器來保護用戶的數據

用戶面臨的隱私和安全隱患與日俱增。 在 Mozilla,我們密切關注這些威脅。 我們相信我們有責任盡全力保護 Firefox 用戶及其數據。

一些公司和組織想要秘密收集用戶數據並拿來出售。 這就是為什麼我們添加了跟蹤保護並創建了 Facebook 容器擴展。 接下來幾個月在保護用戶數據方面我們會採取更多的措施。

另外兩項要添加的保護措施:

基於 HTTPS 的 DNS,這是我們倡導的一項新的 IETF 標準方案

可信遞歸解析器,一種新的解決 DNS 安全的方案,該方案由我們與 Cloudflare 合作提供

通過這兩項舉措,逐漸解決了 35 年前創建的域名系統中一直存在的數據泄露問題。那麼來看看如何通過基於 HTTPS 的 DNS 和可信遞歸解析器來保護我們的用戶。

但首先,讓我們看看網頁是如何在互聯網中運作的。

如果你對 DNS 和 HTTPS 的工作原理已經非常了解,那麼可以跳至"基於 HTTPS 的 DNS 的好處"這部分。

什麼是 HTTP?

當我們解釋瀏覽器如何下載網頁時,通常會這樣解釋:

瀏覽器向伺服器發出 GET 請求。

伺服器發送一個響應,該響應是一個包含 HTML 的文件。

這個系統被稱為 HTTP。

但是這張圖有點過分簡化了。 瀏覽器不會直接與伺服器通話。因為瀏覽器和伺服器可能並不接近。

相反,伺服器可能遠在千里之外。 因此你的電腦和伺服器之間不可能存在直接連接。

從瀏覽器發出的請求需要經過很多次轉手才能到達伺服器。 對於從伺服器返回的響應也是如此。

這就好比課堂上傳遞紙條。 紙條會表明應該傳遞給誰。 寫下紙條的學生把紙條傳遞給相鄰的學生。 然後,這個學生又把紙條傳遞給他相鄰的學生 - 可能不是最終的接收者,但一定是到達接受者方向上的某個學生。

問題在於沿路的任何人都可以打開紙條。 而且沒有辦法事先確定紙條的傳遞路徑,所以不確定會有哪些人訪問到紙條。

紙條最後可能會落入想要幹壞事的人手上.....

就像對所有人公開了紙條的內容一樣。

或者改變響應。

為了解決這些問題,創建了一個新的安全版本的 HTTP,即 HTTPS。 使用 HTTPS,就像每條消息都上了一個鎖。

瀏覽器和伺服器都知道該鎖的組合,除此之外沒有任何人知道。

這樣,即使消息在多個路由器之間傳遞,只有你和網站能夠讀取到內容。

這解決了很多安全問題。 但是瀏覽器和伺服器之間仍然存在一些未加密的消息。 這意味著消息傳遞的路徑上仍然有人可以竊取你的消息。

在與伺服器建立連接的過程中,數據仍然有可能暴露。 當將初始消息發送到伺服器時,也會發送伺服器名稱(在名為「伺服器名稱指示」的欄位中)。 這讓運行了多個站點的伺服器仍然知道應該與誰通信。 此初始請求的一部分設置了加密,但初始請求本身未加密。

數據暴露的另一個地方是在 DNS 中。 但什麼是 DNS?

什麼是 DNS?

在上面的圖解中,紙條接收者的名字必須放在紙條外面。 對於 HTTP 請求也是如此......HTTP 請求需要指明目的地。

但是不能為 HTTP 請求使用名字。 沒有一個路由器會知道你在說什麼。 相反,必須使用 IP 地址。 通過 IP 地址中間的路由器就知道應該將請求往哪發。

這會導致問題。 你不會希望用戶必須記住網站的 IP 地址。 相反,你希望能夠給你的網站一個吸引人的名字...... 用戶可以記住的東西。

這就是我們擁有域名系統(DNS)的原因。 瀏覽器使用 DNS 將站點名稱轉換為 IP 地址。 這個將域名轉換為 IP 地址的過程,稱為域名解析。

瀏覽器是如何做到這一點?

一種選擇是擁有一個大名單,比如瀏覽器中的電話簿。 但是,隨著新的網站上線,或者當網站遷移到新的伺服器時,很難將該列表保持在最新狀態。

因此,不是有一個記錄所有域名的列表,而是有很多較小的列表,這些列表相互關聯。 這使他們能夠獨立管理。

為了獲得與域名相對應的 IP 地址,必須找到包含該域名的列表。 像尋寶一樣。

我們可以將這個域分成幾部分。

通過這些部分,我們可以搜索包含該網站 IP 地址的列表。 不過,我們需要一些幫助。 為我們尋找 IP 地址的工具稱叫解析器。

首先,解析器與一個稱為根 DNS 的伺服器通信。 它知道幾個不同的根 DNS 伺服器,因此它將請求發送給其中的一個。 解析器向根 DNS 伺服器詢問哪裡可以找到有關 org 頂級域名的更多信息。

根 DNS 將為解析器提供一個知道.org 地址的伺服器的地址。

下一個伺服器叫做 top-level domain 頂級域名伺服器 (TLD)。 TLD 伺服器知道所有以.org 結尾的二級域名。

TLD 名稱伺服器將告訴解析器詢問維基百科的名稱伺服器。

這個過程被稱為遞歸解析,因為你必須來回詢問不同的伺服器,基本上是同一個問題。

我們需要這樣的解析器來完成網路請求。 但瀏覽器如何找到這個解析器? 一般來說,它要求計算機的操作系統提供可用的解析器進行設置。

操作系統如何知道使用哪個解析器? 有兩種可能的方法。

你可以為你的計算機配置一個信任的解析器。 但很少有人這樣做。

相反,大多數人只是使用默認值。 默認情況下,操作系統將只使用網路告訴它的任何解析器。 當計算機連接到網路並獲取其 IP 地址時,網路會推薦一個解析器。

這意味著解析器每天可以更改多次。 例如前往咖啡店參加下午的工作會議,就可能與早上使用的解析器不同。 即使你配置了解析器,這也是正確的,因為 DNS 協議沒有安全性。

DNS 如何被利用?

那麼這個系統如何讓用戶安全變得脆弱?

通常解析器會告訴每個 DNS 伺服器你正在尋找哪個域名。 該請求有時會包含你的完整 IP 地址。 或者,如果不是完整的 IP 地址,請求中通常會包含你的大部分 IP 地址,這些 IP 地址可以輕鬆地與其他信息結合起來以找出你的身份。

這意味著進行域名解析的每台伺服器都會查看你要查找的網站。 但更重要的是,這也意味著通往這些伺服器的任何人都可以看到你的請求。

這個系統有幾種方式會使用戶的數據處於危險之中。 兩大主要的風險是跟蹤和欺騙攻擊。

跟蹤

就像上面所說的那樣,很容易獲取全部或部分 IP 地址信息並找出誰在請求該網站。 這意味著 DNS 伺服器和通向該 DNS 伺服器的路徑上的任何其他路由器 (路徑路由器) 都可以創建一個關於你的文件。 他們可以創建一個你訪問過網站的記錄。

而且這些數據很有價值。 許多人和公司會花很多錢看你在瀏覽什麼。

即使不必擔心可能的惡意 DNS 伺服器或路徑路由器,仍有數據被收集的風險。因為解析器本身 - 網路提供給你的 - 可能並不可靠。

即使你信任網路推薦的解析器,可能也只在家中使用該解析器。就像之前提到的那樣,每當你去一家咖啡店或酒店或者使用接入其他網路時,你可能會使用不同的解析器。誰知道它的數據收集政策是什麼?

除了收集數據,然後在你不知情或不同意的情況下進行銷售之外,還有更危險的方式。

欺騙攻擊

藉助欺騙,DNS 伺服器和你之間的路徑上的某個人將更改響應。而不是告訴你真正的 IP 地址,欺騙者會給你一個錯誤的 IP 地址。這樣,他們可以阻止訪問真實網站或將你引導至欺詐網站。

再次,解析器本身可能使壞。

例如,假設在 Megastore 購物。你想做一個價格對比,看看是否能夠在 big-box.com 上獲得更便宜的價格。

但是如果你使用 Megastore 的 WiFi,你可能正在使用他們的解析器。該解析器可能會劫持對 big-box.com 的請求並對謊稱該網站不可用。

如何通過可信遞歸解析器(TRR)和基於 HTTPS 的 DNS(DoH)解決此問題?

在 Mozilla,我們強烈認為我們有責任保護用戶及其數據。我們一直在努力解決這些漏洞。

我們引入了兩項新功能來解決這個問題 - 可信遞歸解析器(Trusted Recursive Resolver )和基於 HTTPS 的 DNS(DNS over HTTPS)。因為目前確實有三個威脅需要解決:

可能會使用跟蹤你請求的不可信的解析器,或者篡改來自 DNS 伺服器的響應。

路徑上路由器可以以相同的方式跟蹤或篡改。

DNS 伺服器可以跟蹤你的 DNS 請求。

如何解決這些問題?

使用可信遞歸解析器避免不可靠的解析器。

通過基於 HTTPS 的 DNS 防止路徑上的竊聽和篡改。

傳輸儘可能少的數據,以保護用戶免受匿名處理。

使用可信遞歸解析器避免不可靠的解析器

當網路提供了不可信的解析器來收集你的數據或進行欺騙攻擊,網路服務的提供者依然可以全身而退,因為很少有用戶知道風險或如何保護自己。

即使對於了解風險的用戶,個人用戶也很難與他們的 ISP 或其他實體進行協商,以確保他們的 DNS 數據得到負責任的處理。

但是,我們花時間研究這些風險...... 並且我們有了談判權力。 我們努力尋找一家公司可以合作來保護用戶的 DNS 數據。 我們找到了一個:Cloudflare。

Cloudflare 通過專業用戶隱私政策提供遞歸解析服務。他們承諾在 24 小時後丟棄所有可識別個人身份的數據,並且決不會將這些數據傳遞給第三方。並會定期進行審計,以確保數據按預期清除。

現在,我們有一個可以信賴的解析器來保護用戶的隱私。這意味著 Firefox 可以忽略網路提供的解析器,並直接轉到 Cloudflare。有了這個可靠的解析器,我們不必擔心流氓解析器出售我們的用戶數據或用欺騙性 DNS 來欺騙我們的用戶。

我們為什麼選擇這樣一個解析器? Cloudflare 與我們一樣致力於構建隱私優先的 DNS 服務。他們與我們合作建立了一個 DoH 解決方案服務,以透明的方式為用戶提供服務。他們一直非常樂意為服務添加用戶保護,所以我們很高興能夠與他們合作。

但這並不意味著你必須使用 Cloudflare。用戶可以配置 Firefox 使用他們想要的任何支持 DoH 的遞歸解析器。隨著更多產品的出現,我們會讓解析器的切換變得簡單。

通過基於 HTTPS 的 DNS 防止路徑上的竊聽和篡改

雖然解析器不是唯一的威脅。路徑上路由器可以跟蹤和欺騙 DNS,因為他們可以看到 DNS 請求和響應的內容。但是互聯網已經有了確保路徑上路由器不能像這樣竊聽的技術。這是我之前提到的加密技術。

通過使用 HTTPS 加密 DNS 數據包,可以確保沒有人能夠監視用戶正在做出的 DNS 請求。

傳輸儘可能少的數據以保護用戶免受匿名處理

除了提供使用 DoH 協議進行通信的可信解析器之外,Cloudflare 正在與我們合作,使其更安全。

通常情況下,解析器會將整個域名發送給每個伺服器 - 根 DNS 伺服器,TLD 名稱伺服器,二級名稱伺服器等。但是 Cloudflare 會做一些不同的事情。它只會發送與當前正在與之通話的 DNS 伺服器相關的部分。這被稱為 QNAME 最小化。

解析器通常也會在請求中包含你的 IP 地址的前 24 位。 這有助於 DNS 伺服器知道你的位置,並選擇離你更近的 CDN。 但是這些信息可以被 DNS 伺服器用來將不同的請求鏈接在一起。

Cloudflare 不會這樣做,而是從用戶附近的一個 IP 地址發出請求。 這提供了地理位置,而無需將其綁定到特定用戶。 除此之外,我們正在研究如何以隱私敏感的方式更好的實現,非常細粒度的負載平衡。

這樣做 - 刪除域名中不相關的部分並且不包括你的 IP 地址 - 意味著 DNS 伺服器所收集的關於你的數據要少得多。

基於 DoH 的 TRR 還未解決的問題

通過這些解決方案,我們減少了可以看到你訪問網站的人數。但是這並不能完全消除數據泄漏。

在執行 DNS 查找到 IP 地址後,你仍然需要連接到該地址的 Web 伺服器。為此,發送初始請求。該請求包含一個伺服器名稱指示,該信息指出要連接的伺服器上的哪個站點。這個請求是未加密的。

這意味著你的 ISP 仍然可以找出正在訪問的網站,因為它正好在伺服器名稱指示中。另外,將來自瀏覽器的初始請求傳遞給 Web 伺服器的路由器也可以看到這些信息。

但是,一旦你建立了與 Web 伺服器的連接,那麼一切都是加密的。並且這個加密的連接可以用於該伺服器上託管的任何站點,而不僅僅是最初要求的那個站點。

這稱為 HTTP / 2 連接合併,或簡單地連接重用。當你打開一個連接到支持它的伺服器時,該伺服器會告訴你它託管了哪些其他的站點。然後,你可以使用現有的加密連接訪問其他網站。

這樣有什麼好處? 無需啟動新連接即可訪問這些其他網站。 這意味著你不需要發送未加密的初始請求,其伺服器名稱指示正在訪問的站點。 這樣可以訪問同一台伺服器上的任何其他站點,而無需透露你正在查看的站點到網路服務提供商和路徑路由器。

隨著 CDN 的興起,越來越多的獨立站點由一台伺服器提供服務。 由於可以打開多個合併連接,因此可以同時連接到多個共享伺服器或 CDN,訪問不同伺服器上的所有站點而不會泄露數據。 這意味著隱私保護越來越有效。

作者簡介

Lin-Clark,Mozilla 開發者關係團隊的一名工程師。她使用 JavaScript,WebAssembly,Rust 和 Servo,同時會繪製代碼圖解。

活動推薦

目前運維的方法有很多痛點,無論是異常檢測,故障發現,瓶頸分析,自愈等工作都需要有大量的人工參與。隨著公司越做越大,運維的場景也將會變得越來越複雜。那麼僅僅依靠人工經驗的運維工作將會變得捉襟見肘,所以就必然會走向基於機器學習演算法的智能運維(AIOps)。來 ArchSummit 全球架構師峰會上,和我們一起關注 AIOps 的現狀和未來發展。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 高效開發運維 的精彩文章:

TAG:高效開發運維 |