Menerapkan Pengacakan MAC

Mulai Android 8.0, perangkat Android menggunakan alamat MAC acak saat mencari jaringan baru yang 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 menyambung 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 membuat 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 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 pabrik wlan0 menggunakan panggilan ioctl .
    • ISupplicantP2pIface#setMacRandomization : Mengaktifkan/menonaktifkan pengacakan MAC P2P pada pemohon.
  2. Setel config_wifi_connected_mac_randomization_supported ke true di Pengaturan config.xml (ini dapat dilakukan di hamparan khusus perangkat).

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

    • Tanda ini digunakan untuk mengontrol apakah pengacakan MAC Wi-Fi langsung 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 dari 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 tanda WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION ke true di file buatan HAL vendor Wi-Fi.

Validasi

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

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

Untuk menjalankan tes manual:

  1. Verifikasi bahwa pengacakan MAC diaktifkan pada perangkat dengan memeriksa apakah config_wifi_connected_mac_randomization_supported diatur ke true di overlay perangkat.
  2. Hubungkan ke jaringan Wi-Fi.
  3. Ketuk jaringan untuk membuka halaman detail Jaringan. Pastikan pengacakan MAC diaktifkan. Verifikasi bahwa alamat MAC yang ditampilkan adalah MAC acak, yang memiliki bit yang dihasilkan secara lokal diatur ke 1 dan bit multicast diatur 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 digunakan.

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

  1. Miliki setidaknya satu jaringan tersimpan di perangkat yang menjalankan Android 9 atau lebih rendah.
  2. Flash image sistem Android 10.
  3. Di alat pilih 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.