對於搭載 Android 13 以上版本的裝置,Android 支援「首次使用即信任」(TOFU) 驗證方法 (RFC7435),讓使用者安裝伺服器使用的根 CA,並在已儲存的網路中設定其網域名稱,藉此信任企業 (EAP) 網路。在使用者首次連線至企業網路時,TOFU 可讓裝置取得未經驗證的公開金鑰,並保留該金鑰供後續連線使用。
背景
與只需要密碼的個人網路相比,企業網路會使用公開金鑰基礎架構 (PKI) 驗證,這需要用戶端預先安裝憑證。在 Android 11 以下版本中,使用者可以在網路設定中為伺服器 CA 憑證選取「Do not validate」選項,藉此略過伺服器端憑證的驗證程序。不過,為了強化安全性並遵守 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