Mengimplementasikan pengacakan MAC

Mulai Android 8.0, perangkat Android menggunakan alamat MAC acak saat menyelidiki jaringan baru tanpa dikaitkan dengan jaringan. Di Android 9, Anda dapat mengaktifkan opsi developer (dinonaktifkan secara default) untuk menyebabkan perangkat menggunakan alamat MAC acak saat terhubung ke jaringan Wi-Fi.

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

Pengacakan MAC mencegah pemroses menggunakan alamat MAC untuk membuat histori aktivitas perangkat sehingga meningkatkan privasi pengguna.

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

Untuk informasi selengkapnya, lihat Perilaku Acak MAC.

Penerapan

Untuk mengimplementasikan pengacakan MAC di perangkat Anda:

  1. Bekerja samalah 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 factory dari wlan0 menggunakan panggilan ioctl.
    • ISupplicantP2pIface#setMacRandomization: Mengaktifkan/menonaktifkan pengacakan MAC P2P pada pemohon.
  2. Setel config_wifi_connected_mac_randomization_supported ke true di Setelan config.xml (ini dapat dilakukan di overlay kustom perangkat).

    • Flag ini digunakan untuk mengontrol apakah pengacakan MAC mode klien diaktifkan.
  3. Setel config_wifi_p2p_mac_randomization_supported ke true di Setelan config.xml (ini dapat dilakukan di overlay kustom perangkat).

    • Flag 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.
  • Mengaktifkan pengacakan MAC secara default untuk semua jaringan yang baru ditambahkan.

Gunakan implementasi referensi UI Setelan untuk menerapkan perintah baru.

Perangkat yang menjalankan Android 9 atau yang lebih rendah mungkin tidak memiliki dukungan untuk pengacakan MAC Wi-Fi. Saat mengupgrade perangkat tersebut ke Android 10, fitur pengacakan MAC Wi-Fi dapat dinonaktifkan dengan menyetel tanda WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION ke true di file pembuatan HAL vendor Wi-Fi.

Validasi

Untuk memvalidasi bahwa fitur berfungsi sebagaimana mestinya, jalankan pengujian manual:

  1. Pastikan pengacakan MAC diaktifkan di perangkat dengan memeriksa apakah config_wifi_connected_mac_randomization_supported ditetapkan ke true di overlay perangkat.
  2. Terhubung ke jaringan Wi-Fi.
  3. Ketuk jaringan untuk membuka halaman Detail jaringan. Verifikasi bahwa pengacakan MAC diaktifkan. Pastikan alamat MAC yang ditampilkan adalah MAC acak, dengan bit yang dihasilkan secara lokal ditetapkan ke 1 dan bit multicast ditetapkan ke 0.
  4. Nonaktifkan 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 pastikan alamat MAC acak yang digunakan sama.

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

  1. Memiliki minimal satu jaringan tersimpan di perangkat yang menjalankan Android 9 atau yang lebih lama.
  2. Lakukan flash pada image sistem Android 10.
  3. Di pemilih Wi-Fi, pastikan pengacakan MAC dinonaktifkan untuk semua jaringan yang disimpan.
  4. Aktifkan pengacakan MAC. Hubungkan ke jaringan yang sama dan verifikasi bahwa MAC acak sedang digunakan.