پیاده سازی تصادفی سازی MAC

با شروع Android 8.0، دستگاه‌های Android هنگام جست‌وجوی شبکه‌های جدید از آدرس‌های MAC تصادفی استفاده می‌کنند در حالی که در حال حاضر به شبکه مرتبط نیستند. در اندروید 9، می‌توانید یک گزینه توسعه‌دهنده را فعال کنید (به طور پیش‌فرض غیرفعال است) تا باعث شود دستگاه هنگام اتصال به شبکه Wi-Fi از یک آدرس MAC تصادفی استفاده کند.

در اندروید 10، تصادفی سازی MAC به طور پیش فرض برای حالت مشتری، SoftAp و Wi-Fi Direct فعال است.

تصادفی سازی MAC مانع از استفاده شنوندگان از آدرس های MAC برای ایجاد سابقه فعالیت دستگاه می شود و در نتیجه حریم خصوصی کاربر را افزایش می دهد.

علاوه بر این، آدرس های MAC به عنوان بخشی از عملیات Wi-Fi Aware و Wi-Fi RTT تصادفی می شوند.

برای اطلاعات بیشتر، به رفتار تصادفی سازی MAC مراجعه کنید.

پیاده سازی

برای پیاده سازی تصادفی سازی MAC در دستگاه خود:

  1. برای پیاده سازی روش های HAL زیر با یک فروشنده تراشه Wi-Fi کار کنید:

    • IWifiStaIface#setMacAddress : آدرس MAC رابط را پیکربندی می کند. پیاده‌سازی پیش‌فرض اینترفیس را پایین می‌آورد، آدرس MAC را تغییر می‌دهد و رابط را پشتیبان می‌آورد.
    • IWifiStaIface#getFactoryMacAddress : MAC کارخانه wlan0 را با استفاده از تماس ioctl دریافت می کند.
    • ISupplicantP2pIface#setMacRandomization : تصادفی سازی P2P MAC را در درخواست کننده روشن/خاموش می کند.
  2. config_wifi_connected_mac_randomization_supported را در تنظیمات config.xml روی true تنظیم کنید (این را می توان در یک پوشش سفارشی دستگاه انجام داد).

    • این پرچم برای کنترل فعال بودن تصادفی سازی MAC در حالت کلاینت استفاده می شود.
  3. config_wifi_p2p_mac_randomization_supported در تنظیمات config.xml روی true تنظیم کنید (این را می توان در یک پوشش سفارشی دستگاه انجام داد).

    • این پرچم برای کنترل فعال بودن تصادفی‌سازی مستقیم MAC Wi-Fi استفاده می‌شود.
  4. پیاده سازی خود را با استفاده از روش های شرح داده شده در اعتبار سنجی آزمایش کنید.

رابط کاربری سیستم باید:

  • گزینه ای برای فعال یا غیرفعال کردن تصادفی سازی برای هر SSID داشته باشید.
  • تصادفی سازی MAC را به طور پیش فرض برای همه شبکه های تازه اضافه شده فعال کنید.

از پیاده سازی مرجع Settings UI برای اجرای دستورات جدید استفاده کنید.

ممکن است دستگاه‌هایی که Android 9 یا پایین‌تر دارند، از تصادفی‌سازی Wi-Fi MAC پشتیبانی نکنند. هنگام ارتقاء چنین دستگاه‌هایی به Android 10، با تنظیم پرچم WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION روی درست در فایل سازنده وای‌فای HAL make، می‌توان ویژگی تصادفی‌سازی MAC Wi-Fi را غیرفعال کرد.

اعتبار سنجی

برای تأیید اینکه این ویژگی همانطور که در نظر گرفته شده است، کار می کند، یک تست یکپارچه سازی (ACTS) و یک آزمایش دستی را اجرا کنید.

برای اجرای آزمایش یکپارچه‌سازی، از فایل ACTS، WifiMacRandomizationTest.py ، واقع در tools/test/connectivity/acts_tests/tests/google/wifi استفاده کنید تا تأیید کنید که دستگاه از آدرس MAC تصادفی استفاده می‌کند و آدرس MAC تصادفی‌شده را به درستی ذخیره می‌کند. شبکه.

برای اجرای تست دستی:

  1. با بررسی اینکه config_wifi_connected_mac_randomization_supported روی true در پوشش دستگاه تنظیم شده است، تأیید کنید که تصادفی‌سازی MAC در دستگاه فعال است.
  2. به یک شبکه Wi-Fi متصل شوید.
  3. روی شبکه ضربه بزنید تا به صفحه جزئیات شبکه بروید. بررسی کنید که تصادفی سازی MAC روشن است. بررسی کنید که آدرس MAC نمایش داده شده یک MAC تصادفی است که بیت تولید شده محلی روی 1 و بیت چندپخشی روی 0 تنظیم شده است.
  4. تصادفی سازی MAC را خاموش کنید. به همان شبکه متصل شوید و بررسی کنید که از MAC کارخانه استفاده می شود.
  5. با ضربه زدن روی Forget در صفحه جزئیات شبکه، شبکه را حذف کنید.
  6. به همان شبکه متصل شوید و بررسی کنید که از همان آدرس MAC تصادفی استفاده می شود.

برای آزمایش تصادفی‌سازی MAC در دستگاه پیش از Android 10 (قابلیت پشتیبانی از تصادفی‌سازی MAC) به‌روزرسانی به Android 10 یا بالاتر:

  1. حداقل یک شبکه ذخیره شده در دستگاهی با Android 9 یا پایین تر داشته باشید.
  2. تصویر سیستم اندروید 10 را فلش کنید.
  3. در انتخابگر Wi-Fi، بررسی کنید که تصادفی سازی MAC برای همه شبکه های ذخیره شده خاموش باشد.
  4. تصادفی سازی MAC را روشن کنید. به همان شبکه متصل شوید و بررسی کنید که از MAC تصادفی استفاده می شود.