從 Android 8.0 開始,Android 裝置在探測新網路時,會在未與網路建立關聯的情況下使用隨機 MAC 位址。在 Android 9 中,您可以啟用開發人員選項 (預設為停用),讓裝置在連線至 Wi-Fi 網路時使用隨機化 MAC 位址。
在 Android 10 中,用戶端模式、SoftAp 和 Wi-Fi Direct 預設啟用 MAC 隨機化。
MAC 隨機化可防止事件監聽器使用 MAC 位址建構裝置活動記錄,進而增加使用者隱私。
此外,在 Wi-Fi Aware 和 Wi-Fi RTT 作業中,MAC 位址會隨機化。
詳情請參閱 MAC 隨機化行為。
導入作業
如要在裝置上實作 MAC 隨機化設定,請按照下列步驟操作:
與 Wi-Fi 晶片供應商合作實作下列 HAL 方法:
IWifiStaIface#setMacAddress
:設定介面的 MAC 位址。預設實作方式會關閉介面、變更 MAC 位址,並備份介面。IWifiStaIface#getFactoryMacAddress
:使用ioctl
呼叫取得wlan0
的工廠 MAC。ISupplicantP2pIface#setMacRandomization
:設定在供應器中開啟/關閉 P2P MAC 隨機化設定。
在「設定」
config.xml
中將config_wifi_connected_mac_randomization_supported
設為true
(可在裝置自訂疊加層中完成)。- 這個標記可用來控制是否已啟用用戶端模式 MAC 隨機化。
在「設定」
config.xml
中將config_wifi_p2p_mac_randomization_supported
設為true
(可在裝置自訂疊加層中完成)。- 此標記用於控制是否已啟用 Wi-Fi 直接 MAC 隨機化。
使用驗證中說明的方法測試實作成果。
系統 UI 必須:
- 可以選擇啟用或停用每個 SSID 的隨機化網路。
- 根據預設,系統會為所有新增的網路啟用 MAC 隨機化功能。
如要導入新提示,請使用設定 UI 的參考實作。
搭載 Android 9 以下版本的裝置可能不支援 Wi-Fi MAC 隨機化作業。將這類裝置升級至 Android 10 時,您可以在 Wi-Fi 供應商 HAL Make 檔案中將 WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
標記設為 true,藉此停用 Wi-Fi MAC 隨機化功能。
驗證
如要確認功能是否如預期運作,請執行手動測試:
- 檢查裝置疊加層中的
config_wifi_connected_mac_randomization_supported
是否設為true
,確認裝置已啟用 MAC 隨機化功能。 - 連線至 Wi-Fi 網路。
- 輕觸網路,前往網路詳細資料頁面。確認 MAC 隨機化功能已開啟。確認顯示的 MAC 位址是隨機化的 MAC,其中本機產生的位元已設為 1,而多點傳播位元則設為 0。
- 關閉 MAC 隨機化功能。請連線至相同的網路,並確認使用的是工廠 MAC。
- 如要刪除網路,請在「網路詳細資料」頁面中輕觸「清除」。
連線至相同的網路,並確認使用的是「相同」隨機化 MAC 位址。
如要在 Android 10 以下版本 (支援 MAC 隨機化) 的裝置上測試 MAC 隨機化作業,請升級至 Android 10 以上版本:
- 在搭載 Android 9 以下版本的裝置上至少儲存一個網路。
- 刷新 Android 10 系統映像檔。
- 在 Wi-Fi 挑選器中,確認所有已儲存的網路已關閉 MAC 隨機化功能。
- 開啟 MAC 隨機化設定。請連線至相同的網路,並確認使用的是隨機 MAC。