Mengimplementasikan pengacakan MAC

Mulai Android 8.0, perangkat Android menggunakan alamat MAC acak saat memeriksa jaringan baru saat tidak 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 Direct.

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 Randomisasi MAC.

Implementasi

Untuk menerapkan pengacakan MAC di perangkat Anda:

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

    • IWifiStaIface#setMacAddress: Mengonfigurasi alamat MAC antarmuka. Implementasi default akan menonaktifkan antarmuka, mengubah alamat MAC, dan mengaktifkan kembali antarmuka.
    • IWifiStaIface#getFactoryMacAddress: Mendapatkan MAC factory dari wlan0 menggunakan panggilan ioctl.
    • ISupplicantP2pIface#setMacRandomization: Mengaktifkan/menonaktifkan pengacakan MAC P2P di pemohon.
  2. Tetapkan 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 randomisasi MAC mode klien diaktifkan.
  3. Tetapkan 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 Wi-Fi direct 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 menetapkan tanda WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION ke benar di file make 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. Hubungkan 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 sama digunakan.

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

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