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ẽ sử dụng các địa chỉ MAC ngẫu nhiên khi thăm dò các mạng mới nhưng không liên kết với mạng nào. 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 bị tắt theo mặc định) để khiến thiết bị sử dụng địa chỉ MAC ngẫu nhiên khi kết nối với mạng Wi-Fi.

Trên Android 10, tính năng ngẫu nhiên hoá MAC đượ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 chọn ngẫu nhiên trong hoạt động Nhận biết Wi-FiTin nhắn theo thời gian thực (RTT) của Wi-Fi.

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

Triển khai

Để triển khai ngẫu nhiên MAC trên thiết bị của bạn:

  1. Làm việc với nhà cung cấp chip Wi-Fi để triển khai các phương pháp 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ẽ đưa giao diện xuống, thay đổi địa chỉ MAC và hiển thị giao diện trở lại.
    • 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 ngẫu nhiên hoá MAC ở 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ử kết quả 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 tuỳ chọn ngẫu nhiên địa chỉ MAC theo mặc định cho tất cả các mạng mới thêm vào.

Sử dụng cách 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 ngẫu nhiên Wi-Fi MAC 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 hoạt động như dự kiến, hãy chạy quy trình kiểm tra thủ công:

  1. Xác minh rằng tính năng ngẫu nhiên hoá MAC đã đượ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 tính năng ngẫu nhiên MAC được bật. Xác minh rằng địa chỉ MAC hiển thị là một MAC được sắp xếp ngẫu nhiên, trong đó bit được tạo cục bộ được đặt thành 1 và bit phát đa hướng được đặt thành 0.
  4. Tắt tính năng ngẫu nhiên hoá MAC. Kết nối với cùng một mạng và xác minh rằng MAC gốc đang được sử dụng.
  5. Xoá mạng bằng cách nhấn vào Xoá trên trang Chi tiết mạng.
  6. Kết nối với cùng một mạng và xác minh rằng cùng địa chỉ MAC ngẫu nhiên đang được sử dụng.

Để 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ợ tính năng ngẫu nhiên hoá MAC), khi nâng cấp lên Android 10 trở lên, hãy làm như sau:

  1. Đã lưu ít nhất một mạng 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 ngẫu nhiên hoá MAC đã tắt cho tất cả các mạng đã lưu.
  4. Bật tính năng ngẫu nhiên địa chỉ MAC. 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.