Triển khai việc sắp xếp ngẫu nhiên địa chỉ MAC

Kể từ Android 8.0, các thiết bị Android sử dụng địa chỉ MAC ngẫu nhiên khi thăm dò mạng mới trong khi không liên kết với mạng. Trong Android 9, bạn có thể bật tuỳ chọn dành cho nhà phát triển (tuỳ chọn này mặc định là tắt) để thiết bị sử dụng địa chỉ MAC ngẫu nhiên khi kết nối với mạng Wi-Fi.

Trong Android 10, tính năng tạo địa chỉ MAC ngẫu nhiên được bật theo mặc định cho chế độ máy khách, SoftAp và Wi-Fi Direct.

Quá trình ngẫu nhiên hoá MAC ngăn người nghe sử dụng địa chỉ MAC để tạo nhật ký hoạt động của thiết bị, từ đó giúp tăng cường quyền riêng tư của người dùng.

Ngoài ra, địa chỉ MAC được tạo ngẫu nhiên trong các thao tác Wi-Fi AwareWi-Fi RTT.

Để biết thêm thông tin, hãy xem phần Hành vi ngẫu nhiên của MAC.

Triển khai

Cách triển khai tính năng tạo địa chỉ MAC ngẫu nhiên trên thiết bị:

  1. Hợp tác với nhà cung cấp chip Wi-Fi để triển khai các phương thức HAL sau:

    • IWifiStaIface#setMacAddress: Định cấu hình địa chỉ MAC của giao diện. Phương thức triển khai mặc định sẽ tắt giao diện, thay đổi địa chỉ MAC và bật lại giao diện.
    • IWifiStaIface#getFactoryMacAddress: Lấy giá trị MAC gốc của wlan0 bằng cách sử dụng lệnh gọi ioctl.
    • ISupplicantP2pIface#setMacRandomization: Đặt chế độ bật/tắt ngẫu nhiên địa chỉ MAC P2P trong trình cung cấp.
  2. Đặt config_wifi_connected_mac_randomization_supported thành true trong phần Cài đặt config.xml (bạn có thể thực hiện việc này trong lớp phủ tuỳ chỉnh của thiết bị).

    • Cờ này dùng để kiểm soát việc có bật tính năng tạo địa chỉ MAC ngẫu nhiên ở chế độ máy khách hay không.
  3. Đặt config_wifi_p2p_mac_randomization_supported thành true trong phần Cài đặt config.xml (bạn có thể thực hiện việc này trong lớp phủ tuỳ chỉnh của thiết bị).

    • Cờ này dùng để kiểm soát việc có bật tính năng sắp xếp ngẫu nhiên MAC trực tiếp Wi-Fi hay không.
  4. Kiểm thử quá trình triển khai bằng các phương thức được mô tả trong phần Xác thực.

Giao diện người dùng hệ thống phải:

  • Có lựa chọn bật hoặc tắt tính năng ngẫu nhiên hoá cho từng SSID.
  • Bật chế độ tạo địa chỉ MAC ngẫu nhiên theo mặc định cho tất cả các mạng mới thêm.

Sử dụng tính năng triển khai tham chiếu của giao diện người dùng Cài đặt để triển khai các lời nhắc mới.

Các thiết bị chạy Android 9 trở xuống có thể không hỗ trợ tính năng sắp xếp ngẫu nhiên Wi-Fi MAC. Khi nâng cấp các thiết bị như vậy lên Android 10, bạn có thể tắt tính năng tạo địa chỉ MAC Wi-Fi ngẫu nhiên bằng cách đặt cờ WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION thành true trong tệp tạo HAL của nhà cung cấp Wi-Fi.

Xác nhận kết quả

Để xác thực rằng tính năng này đang hoạt động như dự kiến, hãy chạy kiểm thử thủ công:

  1. Xác minh rằng tính năng tạo số MAC ngẫu nhiên đã được bật trên thiết bị bằng cách kiểm tra để đảm bảo rằng config_wifi_connected_mac_randomization_supported được đặt thành true trong lớp phủ thiết bị.
  2. Kết nối với mạng Wi-Fi.
  3. Nhấn vào mạng để chuyển đến trang Chi tiết mạng. Xác minh rằng bạn đã bật tính năng tạo MAC ngẫu nhiên. Xác minh rằng địa chỉ MAC hiển thị là MAC ngẫu nhiên, trong đó bit được tạo cục bộ được đặt thành 1 và bit truyền nhiều điểm được đặt thành 0.
  4. Tắt tính năng tạo địa chỉ MAC ngẫu nhiên. Kết nối với cùng một mạng và xác minh rằng địa chỉ MAC ban đầu đang được sử dụng.
  5. Xoá mạng bằng cách nhấn vào Xoá trên trang Thông tin chi tiết về mạng.
  6. Kết nối với cùng một mạng và xác minh rằng cùng một địa chỉ MAC được tạo ngẫu nhiên đang được sử dụng.

Cách kiểm thử việc sắp xếp ngẫu nhiên MAC trên một thiết bị chạy Android 10 trước (có thể hỗ trợ sắp xếp ngẫu nhiên MAC) khi nâng cấp lên Android 10 trở lên:

  1. Có ít nhất một mạng đã lưu trên thiết bị chạy Android 9 trở xuống.
  2. Cài đặt ROM hình ảnh hệ thống Android 10.
  3. Trong bộ chọn Wi-Fi, hãy xác minh rằng tính năng tạo địa chỉ MAC ngẫu nhiên đã tắt đối với tất cả mạng đã lưu.
  4. Bật tính năng tạo địa chỉ MAC ngẫu nhiên. Kết nối với cùng một mạng và xác minh rằng MAC ngẫu nhiên đang được sử dụng.