對於搭載 Android 13 以上版本的裝置,Android 支援「首次使用即信任」(TOFU) 驗證方法 (RFC7435),讓使用者安裝伺服器使用的根 CA,並在已儲存的網路中設定其網域名稱,藉此信任企業 (EAP) 網路。在使用者首次連線至企業網路時,TOFU 可讓裝置取得未經驗證的公開金鑰,並保留該金鑰供後續連線使用。
背景
與只需要密碼的個人網路相比,企業網路使用公開金鑰基礎架構 (PKI) 驗證,這需要用戶端預先安裝憑證。在 Android 11 以下版本中,使用者可以在網路設定中為伺服器 CA 憑證選取「不要驗證」選項,略過伺服器端憑證的驗證。不過,為了強化安全性並遵守 WPA R2 規格,Android 12 要求企業網路對伺服器憑證進行驗證。這項額外規定會對使用者造成障礙,因為他們必須為這類網路安裝 CA 憑證。TOFU 提供一種方法,讓使用者只要接受根 CA,就能連線至以 PKI 為基礎的企業網路。
功能行為
當使用者連線至沒有已安裝已驗證的公開金鑰的企業網路時,支援 TOFU 的裝置會顯示以下行為。
透過 Wi-Fi 挑選器連線至新的網路
在 Wi-Fi 挑選器中選取新的企業網路。
裝置隨即顯示對話方塊 (圖 1),確認網路是否受信任。
輕觸「是,我要連線」接受網路連線,或輕觸「否,不要連線」拒絕連線。
如果您輕觸「是,連線」,裝置會自動設定安全性參數、連線至網路,並啟用網路的自動連線功能。
如果輕觸「否,不要連線」,裝置就會中斷網路連線,並停用該網路的自動連線功能。
圖 1. TOFU 功能的對話方塊
連線至已啟用自動連線功能的現有網路
如果連線到已啟用自動連線功能,但沒有有效的 CA 憑證的企業網路,裝置會自動連線,然後顯示固定式 (無法關閉) 通知。
輕觸通知。
裝置會顯示對話方塊 (圖 1),確認網路是否可信任。
輕觸「是,我要連線」接受網路連線,或輕觸「否,不要連線」拒絕連線。
如果您輕觸「是,連線」,裝置會自動設定安全性參數、連線至網路,並啟用網路的自動連線功能。
如果輕觸「否,不要連線」,裝置就會與網路中斷連線,並停用該網路的自動連線功能。
實作
如要支援 TOFU 功能,請在 /hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant
中實作 Android 開放原始碼計畫 (AOSP) 提供的申請者 HAL。
以下公用 API 可供 Android 13 應用程式使用:
WifiManager#isTrustOnFirstUseSupported()
:表示裝置是否支援 TOFU。WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)
:啟用 TOFU。WifiEnterpriseConfig#isTrustOnFirstUseEnabled()
:指出是否已啟用 TOFU。
驗證
如要驗證裝置上的 TOFU 導入作業,請使用下列測試:
- CTS:
CtsWifiTestCases
- VTS:
VtsHalWifiSupplicantStaNetworkTargetTest