Android 17 今次最關鍵的網絡私隱更新,是在平台層面支援 Encrypted Client Hello(ECH)。這是一項 TLS 1.3 擴充功能,會加密安全連線一開始通常會曝光的網站主機名稱,令 Wi-Fi 網絡營運者、互聯網服務供應商(ISP)及其他網絡觀察者較難知道應用程式正連接哪個具體服務。46
不過,ECH 並不等於 VPN,更不是完整的匿名工具。要真正得到保護,裝置、應用程式所用的網絡程式庫,以及目的地伺服器都要支援這項技術。25
ECH 究竟加密甚麼?
一般 TLS 連線開始時,客戶端會在 Server Name Indication(SNI) 欄位送出想連接的主機名稱。這個名稱原本可能在初始 ClientHello 握手中被網絡上的觀察者讀到。
ECH 會利用目的地服務公布的設定及金鑰資料,加密 ClientHello 內較敏感的部分,包括目標主機名稱。目的地伺服器可以解密受保護的內容,但沿途觀察者只會看到外層握手,未必能直接得知真正的網站名稱。416
HTTPS 本身已經會加密網頁內容,但「你連接了哪個網站或服務」仍然屬於一種可用來建立網絡活動輪廓的資料。ECH 的作用,就是針對這部分主機名稱洩漏提供額外保護,而且只適用於支援 ECH 的目的地。56
ECH 仍然遮不住甚麼?
ECH 不是把整條網絡連線變成隱形。視乎觀察者的位置及連線情況,以下資料仍可能看得到:
- 裝置的來源 IP 地址;
- 目的地 IP 地址;該地址可能只對應內容傳遞網絡(CDN)或託管供應商,但有時也可能指向特定服務;
- 連線時間、封包大小及流量總量;
- 如果 DNS 查詢沒有另外加密,DNS 查詢本身仍可能洩露網域名稱。
所以,ECH 不應被當成 VPN 或匿名系統。Google 將 ECH 與 Private DNS(加密 DNS)視為互相配合的保護:ECH 隱藏 TLS 握手中的主機名稱,而加密 DNS 則保護將網域名稱轉換成 IP 地址的另一個步驟。兩者都不會自行隱藏裝置的 IP 地址。612
如果使用者需要進一步遮蔽 IP 地址,就要另行使用 VPN、代理伺服器或 Tor 等系統。
Android 17 何時會使用 ECH?
Android 17 提供了讓網絡程式庫實作 ECH 所需的作業系統支援及 API,包括查詢包含 ECH 設定的 HTTPS DNS 記錄的能力。4
但「Android 支援」不代表每個應用程式都會自動得到 ECH 保護。實際生效要符合以下三個條件:
- 裝置運行 Android 17 或以上版本。
- 應用程式所用的網絡堆疊支援 ECH。 Android 文件列出的例子包括 HttpEngine、WebView 及 OkHttp,但平台有支援,並不代表每一個程式庫都已經整合 ECH。23
- 遠端伺服器已部署 ECH。 如果服務端沒有完成設定,客戶端就無法加密要連接的主機名稱。25
對於以 Android 17 或以上為目標版本的應用程式,只要網絡程式庫及遠端伺服器都支援,TLS 連線便會使用 ECH。如果 ECH 無法使用,應用程式設定的網域加密政策會決定連線可以降級繼續,還是必須「故障封閉」(fail closed),即直接中止連線。12
ECH GREASE 是甚麼?
Android 的網域加密政策不只是簡單的「開」或「關」。當網域加密已啟用,但伺服器尚未支援真正的 ECH,Android 可以改為送出 ECH GREASE。
GREASE 是一個刻意設計成不能真正運作的 ECH 類似擴充功能,看起來卻像 ECH 流量。這樣做有助維持相容性,也令網絡系統不能單憑「有沒有可用的 ECH」來簡單判斷客戶端是否嘗試使用 ECH。
但要留意,GREASE 不會像成功的 ECH 一樣真正隱藏主機名稱。它是相容性及抗簡單流量分類機制,不能取代伺服器端部署 ECH。1
如果應用程式關閉網域加密,Android 的 NetworkSecurityPolicy 文件指明不應使用 ECH 或 GREASE。同一 API 亦提供包括「啟用」及「必須使用」在內的網域加密模式。1
開發者需要做甚麼?
Android 17 的平台支援只是起點,應用程式開發者仍需要:
- 確認應用程式使用的網絡程式庫已整合 ECH 支援;235
- 在 Network Security Config 或相應設定中,配置網域加密政策;15
- 確保程式庫能夠取得及使用目的地服務公布的 ECH 設定。Android 已提供查詢載有 ECH 設定的 HTTPS DNS 記錄的相關平台 API;4
- 測試支援 ECH 及不支援 ECH 的伺服器,並決定應用程式應否容許降級,還是要求必須使用 ECH,無法使用時便中止連線。1
伺服器營運者同樣要部署 ECH,並公布客戶端所需的設定。這項服務端要求,正是 Android 17 的平台支援不會立即令所有應用程式、所有網站名稱都自動隱藏的主要原因。516
Google 表示,正與 Jigsaw、業界參與者、服務供應商及應用程式開發者合作,推動 ECH 更廣泛採用。長遠目標是讓應用程式可透過常見網絡基礎設施保護 TLS 主機名稱,而不只限於經特別設定的瀏覽器。46
Android 17 其他網絡私隱及安全更新
存取本地網絡要取得執行時期權限
以 Android 17 或以上為目標版本的應用程式,在探索或連接本地網絡裝置前,必須要求 ACCESS_LOCAL_NETWORK 執行時期權限。這項權限屬於現有的 NEARBY_DEVICES 權限組,因此已經授予該組別其他權限的使用者,未必會再次看到整組權限提示。217
這項改動旨在減少應用程式在用戶不知情下掃描本地網絡,從而進行追蹤、建立裝置指紋,或尋找存在漏洞的裝置。需要連接智能家居設備、投射接收器或其他區域網絡裝置的正常應用程式,就要在宣告權限後向使用者提出要求。1719
Certificate Transparency 預設啟用
Android 17 會預設為 TLS 連線啟用 Certificate Transparency(CT,憑證透明度)。CT 要求公開憑證出現在公開、可審計的日誌中,有助揭發不當簽發的 TLS 憑證。應用程式仍可透過網絡安全設定,在全局或指定網域層面選擇退出。3
電訊商可限制不安全的 2G 連線
Android 17 亦加入針對 2G 網絡安全弱點的保護。在支援的裝置及網絡上,電訊商可以預設限制或停用 2G 連線,減少用戶暴露於流動基站偽冒及 SMS blaster 攻擊的風險。實際行為則取決於電訊商及裝置支援情況。8
實際私隱評價:有改善,但不是隱身斗篷
ECH 的確是一項有份量的改善:當客戶端及伺服器都支援標準時,它可以從 TLS 握手的重要部分移除網站主機名稱,令網絡觀察者較難直接讀到你正連接哪個服務。
但 DNS 設定、目的地 IP、連線時間、封包大小及流量模式仍可能提供線索。要加強網域私隱,ECH 應配合加密 DNS 使用;若要防止別人透過 IP 地址辨認連線來源,則需要 VPN、代理伺服器或 Tor 等獨立工具。
最準確的理解是:Android 17 令網絡觀察者更難讀到你連接的網站及服務名稱,但 ECH 並沒有保護連線中所有其他形式的元資料。