Triển khai ngẫu nhiên hóa MAC

Bắt đầu từ Android 8.0, các thiết bị Android sử dụng địa chỉ MAC ngẫu nhiên khi thăm dò các mạng mới trong khi hiện không được liên kết với mạng. Trong Android 9, bạn có thể bật tùy chọn nhà phát triển (nó 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.

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

Tính năng ngẫu nhiên hóa MAC ngăn người nghe sử dụng địa chỉ MAC để xây dựng lịch sử hoạt động của thiết bị, do đó 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 như một phần của hoạt động Wi-Fi AwareWi-Fi RTT .

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

Thực hiện

Để 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. Việc triển khai mặc định sẽ đưa giao diện xuống, thay đổi địa chỉ MAC và đưa giao diện trở lại.
    • IWifiStaIface#getFactoryMacAddress : Lấy MAC gốc của wlan0 bằng lệnh gọi ioctl .
    • ISupplicantP2pIface#setMacRandomization : Đặt bật/tắt ngẫu nhiên P2P MAC trong chất thay thế.
  2. Đặt config_wifi_connected_mac_randomization_supported thành true trong config.xml Cài đặt (điều này có thể được thực hiện trong lớp phủ tùy chỉnh của thiết bị).

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

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

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

  • Có tùy chọn bật hoặc tắt tính năng ngẫu nhiên cho từng SSID.
  • Bật ngẫu nhiên MAC theo mặc định cho tất cả các mạng mới được 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 lời nhắc mới.

Các thiết bị chạy Android 9 trở xuống có thể không hỗ trợ ngẫu nhiên hóa 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 MAC Wi-Fi 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.

Thẩm định

Để xác thực rằng tính năng này đang hoạt động như dự định, hãy chạy cả kiểm tra tích hợp (ACTS) và kiểm tra thủ công.

Để chạy thử nghiệm tích hợp, hãy sử dụng tệp ACTS, WifiMacRandomizationTest.py , nằm trong tools/test/connectivity/acts_tests/tests/google/wifi , để xác minh rằng thiết bị sử dụng địa chỉ MAC ngẫu nhiên và lưu trữ chính xác địa chỉ MAC ngẫu nhiên cho từng địa chỉ mạng.

Để chạy thử nghiệm thủ công:

  1. Xác minh rằng tính năng ngẫu nhiên hóa MAC được bật trên thiết bị bằng cách kiểm tra xem config_wifi_connected_mac_randomization_supported có được đặt thành true trong lớp phủ thiết bị hay không.
  2. Kết nối với mạng Wi-Fi.
  3. Nhấn vào mạng để truy cập trang chi tiết Mạng. Xác minh rằng tính năng ngẫu nhiên hóa MAC đã được bật. Xác minh rằng địa chỉ MAC được hiển thị là MAC ngẫu nhiên, có bit được tạo cục bộ được đặt thành 1 và bit multicast được đặt thành 0.
  4. Tắt tính năng ngẫu nhiên hóa MAC. Kết nối với cùng một mạng và xác minh rằng MAC của nhà máy đang được sử dụng.
  5. Xóa mạng bằng cách nhấn vào Quên 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 một địa chỉ MAC ngẫu nhiên đang được sử dụng.

Để kiểm tra ngẫu nhiên MAC trên thiết bị chạy trước Android 10 (có khả năng hỗ trợ ngẫu nhiên hóa MAC) 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. Flash 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 hóa MAC đã bị tắt cho tất cả các mạng đã lưu.
  4. Bật tính năng ngẫu nhiên hóa 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.