ESNI(Encrypted Server Name Indication)及檢測
【美博翻牆2019.8.5】 前文詳細介紹了DNS over HTTPS (DoH) 加密DNS解析及檢測,在此基礎上,firefox瀏覽器也為我們帶來另一項安全設置加密的SNI,即:加密的伺服器名稱稱指示 ESNI(Encrypted Server Name Indication)
一、先說Firefox如何設置ESNI
有了DNS over HTTPS (DoH)之後,進一步設置ESNI,很簡單,一個設置完成
打開美博園Firefox瀏覽器,
在網址列輸入 about:config 後回車,或者點工具欄上的「書籤」→其他書籤,點裡面預設的 about:config
彈出安全警告:點「我了解此風險!」,會進入設置項
在搜尋框中輸入: network.security.esni.enabled
設為 true
二、檢測ESNI是否生效
Cloudflare為大家提供了一個詳細的檢測網站
Cloudflare ESNI Checker | Cloudflare
https://www.cloudflare.com/ssl/encrypted-sni/
打開網站後:
點中間橘色Check My Browser條塊,就會得到檢測結果,如下圖所示:
結果一目了然,綠色勾表示加密,紅色X表示沒有加密
三、網路連接中的信息泄露/中間人攻擊
眾所周知 HTTP 明文協議等於裸奔,但即使用了 HTTPS,還是有一些信息會暴露:
1、TLS證書信息的暴露。這一問題在最新版的 TLS1.3 草案中得到了解決。Firefox 也已經支持了 TLS1.3 [5]。
2、DNS 查詢會暴露你查詢的網域。DNS 未經加密,有被中間人投毒的風險。這一問題的解決方案是加密 DNS 查詢,目前有多種解決方案,DNSSEC,DNSCrypt,DoT,DoH... 著名*河蟹*部落格編程*河蟹*有篇介紹文章,鏈接就不放了。Firefox支持了其中的 DNS over HTTPS (DoH) [6],並有很詳細的科普[7]。
3、訪問的 IP 地址會暴露。這個沒有辦法,封 IP 基本無解。
4、SNI 暴露網域信息。TLS 驗証證書需要網域信息,而同一 IP 可能託管多個網域,所以就有了 SNI (Server Name Indication)。在建立 TLS 鏈接時 SNI 網域會明文發送,中間人就可以知道你訪問了哪個網域,然後*河蟹*。ESNI 就是為了解決這個問題。
四、什麼是Encrypted SNI(ESNI)
「伺服器名稱稱指示」(Server Name Indication,簡稱SNI)是一個擴展的TLS計算機聯網協議,在該協議下,在握手過程開始時客戶端告訴它正在連接的伺服器要連接的主機名稱。這允許伺服器在相同的IP地址和TCP連線埠號上呈現多個證書,並且因此允許在相同的IP地址上提供多個安全(HTTPS)網站(或其他任何基於TLS的服務),而不需要所有這些站點使用相同的證書。它與HTTP/1.1基於名稱的虛擬主機的概念相同,但是用於HTTPS。所需的主機名未加密, 因此竊聽者可以查看請求的網站
為了使SNI協議起作用,絕大多數訪問者必須使用實現它的Web瀏覽器。使用未實現SNI瀏覽器的用戶將被提供默認證書,因此很可能會收到證書警告。
隨著TLS1.3的發布,讓該協議成為有史以來最安全、也是最複雜的TLS協議。在該協議之中,有很多的對於以往協議安全漏洞的修復,包括廢棄RSA啟用新的秘鑰交換機制PSK等等。而Encrypted SNI作為一個TLS1.3的擴展協議用來防止傳統的HTTPS流量受到ISP或者陌生網路環境的窺探以及一些網路審查。在過去,由於HTTPS協議之中Server Name Indication - SNI的使用,我們的HTTPS流量經常被窺探我們所訪問站點的網域。
為了彌補缺陷因應運而生的ESNI
在上述過程之中,存在的問題就是,在ClientHello環節中,TLS會在這個位置以明文的形式講要請求的Host寫在數據包之中,如果在網路路由中有任何的監聽節點,那麼用戶所訪問網站的網域將暴露無遺,這將是巨大的用戶隱私泄露:
依靠安全DNS的ESNI
上一個問題沒有難倒工程師們,他們設計了這樣一個辦法。首先讓網站提供者在DNS提供商上公布一個記錄,這個記錄包含著一個公鑰,這個公鑰由網站提供者生成,其私鑰存儲在Web伺服器等待著被Web程序讀取。如此,當用戶想通過TLS1.3協議訪問這個網域的時候,首先讀取這個公開的公鑰,在用公鑰加密其想訪問的網域Host,裝在Client Hello裡面發送給目標伺服器,目標伺服器再用自己的私鑰解密,從而和用戶建立HTTPS鏈接,這樣就不會暴露Host信息。
目前來說,有了HTTPS+TLS1.3+ESNI+DoH/DoT的加持,我們的網路隱私的到了極大的保障,最後還有一個問題是訪問伺服器IP的泄露仍然無法被避免,迫於IP協議設計的機制,他目前還不能被解決。不過我相信,隨著網技術不斷的趨於保護個人隱私和更快速的發展方向,這個問題可以最終被解決
原文標題:ESNI(Encrypted Server Name Indication)及檢測 - 美博園
美博園文章均為「原創 - 首發」,請尊重辛勞撰寫,轉載請以上面完整鏈接註明來源!
軟體著作權歸原作者!個別轉載文,本站會註明為轉載。
網 友 留 言
4條評論 in “ESNI(Encrypted Server Name Indication)及檢測”這裡是你留言評論的地方


*河蟹*部落格編程*河蟹*是不是編程隨想的部落格?
請問我沉迷了嗶哩嗶哩(牆內二次元網站)怎麼辦?感覺我都無法自拔了,翻牆出來看不見嗶哩嗶哩,我是不是上癮了?那該怎麼辦?
您好!
請問一下,我按要求設了,點檢測:假設從左至右顯示為第一項,第二項,第三項,第四項.當代理為自由門時,只鉤選第三項,當代理設為Toranger socks5 127.0.0.1:9050與Toranger_http_127.0.0.1:8118時,只鉤選了第二項和第三項,請問是否安全??? 謝謝!
@修心
這個沒有問題。這與代理伺服器自身的設置有關係。