實作 MAC 隨機化

自 Android 8.0 起,Android 裝置在未與網路建立關聯時,會使用隨機 MAC 位址探查新網路。在 Android 9 中,您可以啟用開發人員選項 (預設為停用),讓裝置在連線至 Wi-Fi 網路時使用隨機 MAC 位址。

在 Android 10 中,系統預設會為用戶端模式、SoftAp 和 Wi-Fi Direct 啟用 MAC 隨機化功能。

MAC 位址隨機化功能可防止監聽器使用 MAC 位址建立裝置活動記錄,進而提升使用者隱私權。

此外,MAC 位址會在Wi-Fi AwareWi-Fi RTT 作業中隨機產生。

詳情請參閱「MAC 位址隨機化行為」。

實作

如要在裝置上實作 MAC 位址隨機化功能,請按照下列步驟操作:

  1. 與 Wi-Fi 晶片供應商合作,實作下列 HAL 方法:

    • IWifiStaIface#setMacAddress:設定介面的 MAC 位址。預設實作會關閉介面、變更 MAC 位址,然後重新開啟介面。
    • IWifiStaIface#getFactoryMacAddress:使用 ioctl 呼叫取得 wlan0 的原廠 MAC。
    • ISupplicantP2pIface#setMacRandomization:在 Supplicant 中開啟/關閉 P2P MAC 隨機化功能。
  2. 在「設定」config.xml中將 config_wifi_connected_mac_randomization_supported 設為 true (這可以在裝置自訂疊加層中完成)。

    • 這個標記可用來控管是否啟用用戶端模式 MAC 隨機化。
  3. 在「設定」config.xml中將 config_wifi_p2p_mac_randomization_supported 設為 true (這可以在裝置自訂疊加層中完成)。

    • 這個標記可用來控管是否啟用 Wi-Fi Direct MAC 隨機化功能。
  4. 使用「驗證」一文所述方法測試導入作業。

系統 UI 必須:

  • 可為每個 SSID 啟用或停用隨機化功能。
  • 為所有新加入的網路預設啟用 MAC 位址隨機化功能。

使用「設定」使用者介面的參考實作,實作新的提示。

搭載 Android 9 以下版本的裝置可能不支援 Wi-Fi MAC 位址隨機化功能。將這類裝置升級至 Android 10 時,只要在 Wi-Fi 供應商 HAL make 檔案中將 WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION 旗標設為 true,即可停用 Wi-Fi MAC 隨機化功能。

驗證

如要驗證這項功能是否正常運作,請執行手動測試:

  1. 在裝置疊加層中檢查 config_wifi_connected_mac_randomization_supported 是否設為 true,確認裝置已啟用 MAC 位址隨機化功能。
  2. 連線至 Wi-Fi 網路。
  3. 輕觸電視網,前往「電視網詳細資料」頁面。確認 MAC 隨機化功能已開啟。確認顯示的 MAC 位址是隨機 MAC 位址,其中本機產生的位元設為 1,多點播送位元設為 0。
  4. 關閉 MAC 隨機化處理功能。連上相同網路,並確認裝置使用的是出廠 MAC 位址。
  5. 在「網路詳細資料」頁面輕觸「忘記」,即可刪除網路。
  6. 連上相同網路,並確認使用相同的隨機 MAC 位址。

如要在搭載 Android 10 之前的裝置上測試 MAC 位址隨機化功能 (裝置必須支援這項功能),請升級至 Android 10 以上版本:

  1. 在搭載 Android 9 以下版本的裝置上儲存至少一個網路。
  2. 刷新 Android 10 系統映像檔。
  3. 在 Wi-Fi 選擇器中,確認所有已儲存的網路都已關閉 MAC 隨機化功能。
  4. 開啟 MAC 隨機化功能。連上相同網路,並確認系統使用隨機 MAC 位址。