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

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

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

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

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

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

پیاده‌سازی

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

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

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

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

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

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

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

از پیاده‌سازی مرجع رابط کاربری تنظیمات برای پیاده‌سازی اعلان‌های جدید استفاده کنید.

دستگاه‌هایی که اندروید ۹ یا پایین‌تر دارند ممکن است از تصادفی‌سازی مک وای‌فای پشتیبانی نکنند. هنگام ارتقاء چنین دستگاه‌هایی به اندروید ۱۰، می‌توان با تنظیم پرچم WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION روی مقدار true در فایل HAL make مربوط به فروشنده وای‌فای، ویژگی تصادفی‌سازی مک وای‌فای را غیرفعال کرد.

اعتبارسنجی

برای تأیید اینکه این ویژگی طبق برنامه کار می‌کند، یک تست دستی اجرا کنید:

  1. با بررسی اینکه config_wifi_connected_mac_randomization_supported در قسمت device overlay روی true تنظیم شده است، تأیید کنید که تصادفی‌سازی MAC روی دستگاه فعال شده است.
  2. به یک شبکه وای‌فای متصل شوید.
  3. برای رفتن به صفحه جزئیات شبکه، روی شبکه ضربه بزنید. تأیید کنید که تصادفی‌سازی MAC روشن است. تأیید کنید که آدرس MAC نمایش داده شده یک MAC تصادفی است که بیت تولید شده محلی آن روی ۱ و بیت چندپخشی روی ۰ تنظیم شده است.
  4. تصادفی‌سازی مک (MAC randomization) را خاموش کنید. به همان شبکه متصل شوید و تأیید کنید که از مک کارخانه استفاده می‌شود.
  5. با ضربه زدن روی «فراموش کردن» در صفحه جزئیات شبکه، شبکه را حذف کنید.
  6. به همان شبکه متصل شوید و تأیید کنید که از همان آدرس MAC تصادفی استفاده می‌شود.

برای آزمایش تصادفی‌سازی مک روی دستگاهی که اندروید آن از نسخه ۱۰ به قبل نیست (و قابلیت پشتیبانی از تصادفی‌سازی مک را دارد) و در حال ارتقا به اندروید ۱۰ یا بالاتر:

  1. حداقل یک شبکه ذخیره شده روی دستگاهی با اندروید ۹ یا پایین‌تر داشته باشید.
  2. فایل سیستم عامل اندروید ۱۰ را فلش کنید.
  3. در انتخابگر Wi-Fi، تأیید کنید که تصادفی‌سازی MAC برای همه شبکه‌های ذخیره‌شده خاموش است.
  4. تصادفی‌سازی MAC را روشن کنید. به همان شبکه متصل شوید و تأیید کنید که از MAC تصادفی استفاده می‌شود.