Menerapkan Pengacakan MAC

Mulai Android 8.0, perangkat Android menggunakan alamat MAC acak saat memeriksa jaringan baru saat saat ini tidak terkait dengan jaringan. Di Android 9, Anda dapat mengaktifkan opsi pengembang ( dinonaktifkan secara default) untuk menyebabkan perangkat menggunakan alamat MAC acak saat menghubungkan ke jaringan Wi-Fi.

Di Android 10, pengacakan MAC diaktifkan secara default untuk mode klien, SoftAp, dan Wi-Fi Direct.

Pengacakan MAC mencegah pendengar menggunakan alamat MAC untuk membangun riwayat aktivitas perangkat, sehingga meningkatkan privasi pengguna.

Selain itu, alamat MAC diacak sebagai bagian dari operasi Wi-Fi Aware dan Wi-Fi RTT .

Untuk informasi lebih lanjut, lihat Perilaku Pengacakan MAC .

Penerapan

Untuk menerapkan pengacakan MAC pada perangkat Anda:

  1. Bekerja dengan vendor chip Wi-Fi untuk menerapkan metode HAL berikut:

    • IWifiStaIface#setMacAddress : Mengonfigurasi alamat MAC antarmuka. Implementasi default menurunkan antarmuka, mengubah alamat MAC, dan mengembalikan antarmuka.
    • IWifiStaIface#getFactoryMacAddress : Mendapatkan MAC pabrik dari wlan0 menggunakan panggilan ioctl .
    • ISupplicantP2pIface#setMacRandomization : Mengaktifkan/menonaktifkan pengacakan MAC P2P di pemohon.
  2. Setel config_wifi_connected_mac_randomization_supported menjadi true di Pengaturan config.xml (ini dapat dilakukan di overlay khusus perangkat).

    • Bendera ini digunakan untuk mengontrol apakah pengacakan MAC mode klien diaktifkan.
  3. Setel config_wifi_p2p_mac_randomization_supported menjadi true di Pengaturan config.xml (ini dapat dilakukan di hamparan khusus perangkat).

    • Bendera ini digunakan untuk mengontrol apakah pengacakan MAC langsung Wi-Fi diaktifkan.
  4. Uji implementasi Anda menggunakan metode yang dijelaskan dalam Validasi .

UI Sistem harus:

  • Memiliki opsi untuk mengaktifkan atau menonaktifkan pengacakan untuk setiap SSID.
  • Aktifkan pengacakan MAC secara default untuk semua jaringan yang baru ditambahkan.

Gunakan implementasi referensi Pengaturan UI untuk mengimplementasikan perintah baru.

Perangkat yang menjalankan Android 9 atau lebih rendah mungkin tidak mendukung pengacakan MAC Wi-Fi. Saat memutakhirkan perangkat tersebut ke Android 10, fitur pengacakan MAC Wi-Fi dapat dinonaktifkan dengan menyetel flag WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION ke true di file make HAL vendor Wi-Fi.

Validasi

Untuk memvalidasi bahwa fitur berfungsi sebagaimana dimaksud, jalankan pengujian integrasi (ACTS) dan pengujian manual.

Untuk menjalankan tes integrasi, gunakan file ACTS, WifiMacRandomizationTest.py , yang terletak di tools/test/connectivity/acts_tests/tests/google/wifi , untuk memverifikasi bahwa perangkat menggunakan alamat MAC acak dan menyimpan alamat MAC acak dengan benar untuk setiap jaringan.

Untuk menjalankan tes manual:

  1. Verifikasi bahwa pengacakan MAC diaktifkan pada perangkat dengan memeriksa apakah config_wifi_connected_mac_randomization_supported disetel ke true di hamparan perangkat.
  2. Hubungkan ke jaringan Wi-Fi.
  3. Ketuk jaringan untuk membuka halaman Detail jaringan. Verifikasi bahwa pengacakan MAC diaktifkan. Verifikasi bahwa alamat MAC yang ditampilkan adalah MAC acak, yang bit yang dihasilkan secara lokal disetel ke 1 dan bit multicast disetel ke 0.
  4. Matikan pengacakan MAC. Hubungkan ke jaringan yang sama dan verifikasi bahwa MAC pabrik sedang digunakan.
  5. Hapus jaringan dengan mengetuk Lupakan di halaman Detail jaringan.
  6. Hubungkan ke jaringan yang sama dan verifikasi bahwa alamat MAC acak yang sama sedang digunakan.

Untuk menguji pengacakan MAC pada perangkat pra-Android 10 (mampu mendukung pengacakan MAC) yang ditingkatkan ke Android 10 atau lebih tinggi:

  1. Memiliki setidaknya satu jaringan tersimpan di perangkat yang menjalankan Android 9 atau lebih rendah.
  2. Flash citra sistem Android 10.
  3. Di pemilih Wi-Fi, verifikasi bahwa pengacakan MAC dimatikan untuk semua jaringan yang disimpan.
  4. Aktifkan pengacakan MAC. Hubungkan ke jaringan yang sama dan verifikasi bahwa MAC acak sedang digunakan.