Mozilla在2年前,宣布於Firefox Nightly加入加密伺服器名稱指示(Encrypted Server Name Indication,ESNI)實驗性擴充功能,以保護用戶隱私,但是經研究發現,ESNI並無法提供完整的保護,因此Firefox 85將改變作法,透過加密整個客戶端Hello訊息,來解決ESNI的缺點,而這個新作法稱作ECH(Encrypted Client Hello)

ESNI的出現,是為了要解決主機名稱洩漏的問題,伺服器名稱指示(Server Name Indication,SNI)是TLS的一個擴充協定,該協定會在交握過程開始時,由客戶端在TLS Client Hello訊息中,以明文傳送要連接的伺服器主機名稱,以連接到特定伺服器,並選擇使用的憑證。SNI協定是要讓伺服器,在相同的IP位置和TCP埠號上,能夠使用多個憑證,以便讓相同的IP位置上,不只可提供多個HTTPS網站,且可以使用不同的憑證。

SNI存在隱私疑慮,會有類似DNS隱私洩露的問題,因此Mozilla等組織共同開發了ESNI,為的就是避免在TLS交握時,導致主機名稱洩漏,提供像是HTTP-over-HTTPS,避免DNS查詢向路徑上觀察者,公開主機名稱相似的功能。

不過,在IETF發布ESNI規格草案後,經過分析顯示,ESNI擴充提供了不完整的保護,像是在對話恢復期間,預共享的金鑰(Pre-Shared Key)擴充,仍會包含ESNI加密的伺服器主機名稱,也就是說ESNI必須為所有具有潛在隱私風險的擴充,提供加密變體,但這反而暴露出一系列廣播的擴充。這個原因使得ESNI的互相操作性以及部署受到挑戰,因而無法擴展使用範圍。

為了解決ESNI的問題,在最新版本中,不只加密SNI擴充,而是加密整個客戶端的Hello訊息,因此名稱也從原本的ESNI,更改為ECH。現在任何涉及隱私,但原本被廣播為未加密ClientHelloOuter的擴充,現在可以轉為加密的ClientHelloInner,當伺服器支援ECH並且解碼後,ClientHelloInner就可用做TLS連接基礎。另外,ECH也更改了金鑰分派與加密過程,支援ECH的TLS伺服器,可透過HTTPSSVC DNS紀錄,公開其公鑰。

Mozilla、Cloudflare、Fastly和蘋果開發者合作,在IETF中標準化加密客戶端Hello規格,而從 Firefox 85開始,ECH草案將會取代ESNI,about:config中ESNI相關選項也會被移除,官方建議用戶可以在Firefox預設啟用ECH時,才開始使用該功能,但用戶仍可以手動開啟相關設定,不過因為ECH現在還在開發中,且ECH要求客戶端與伺服器必須使用相同版本,因此其中一方版本變更,便會影響可用性。目前Firefox ESR將繼續支援舊的ESNI功能。

熱門新聞

Advertisement