تنفيذ التوزيع العشوائي MAC

بدءًا من Android 8.0، تستخدم أجهزة Android عناوين MAC عشوائية عند البحث عن شبكات جديدة بينما لا تكون مرتبطة حاليًا بشبكة. في Android 9، يمكنك تمكين خيار المطور (يتم تعطيله افتراضيًا) لجعل الجهاز يستخدم عنوان MAC عشوائيًا عند الاتصال بشبكة Wi-Fi.

في Android 10، يتم تمكين التوزيع العشوائي لـ MAC افتراضيًا لوضع العميل وSoftAp وWi-Fi Direct.

يمنع التوزيع العشوائي لـ MAC المستمعين من استخدام عناوين MAC لإنشاء سجل لنشاط الجهاز، وبالتالي زيادة خصوصية المستخدم.

بالإضافة إلى ذلك، يتم اختيار عناوين MAC بشكل عشوائي كجزء من عمليات Wi-Fi Aware و Wi-Fi RTT .

لمزيد من المعلومات، راجع سلوك التوزيع العشوائي لـ MAC .

تطبيق

لتنفيذ التوزيع العشوائي لـ MAC على جهازك:

  1. اعمل مع أحد موردي شرائح Wi-Fi لتنفيذ أساليب HAL التالية:

    • IWifiStaIface#setMacAddress : يقوم بتكوين عنوان MAC الخاص بالواجهة. يؤدي التنفيذ الافتراضي إلى خفض الواجهة وتغيير عنوان MAC وإعادة الواجهة احتياطيًا.
    • IWifiStaIface#getFactoryMacAddress : يحصل على عنوان MAC الخاص بالمصنع لـ wlan0 باستخدام استدعاء ioctl .
    • ISupplicantP2pIface#setMacRandomization : يضبط تشغيل/إيقاف التوزيع العشوائي لـ P2P MAC في الطالب.
  2. قم بتعيين config_wifi_connected_mac_randomization_supported على true في الإعدادات config.xml (يمكن القيام بذلك في تراكب مخصص للجهاز).

    • يتم استخدام هذه العلامة للتحكم في تمكين التوزيع العشوائي لـ MAC في وضع العميل.
  3. قم بتعيين config_wifi_p2p_mac_randomization_supported على true في الإعدادات config.xml (يمكن القيام بذلك في تراكب مخصص للجهاز).

    • يتم استخدام هذه العلامة للتحكم في تمكين التوزيع العشوائي لـ Wi-Fi Direct MAC.
  4. اختبر تنفيذك باستخدام الطرق الموضحة في التحقق من الصحة .

يجب أن تكون واجهة مستخدم النظام:

  • لديك خيار لتمكين أو تعطيل التوزيع العشوائي لكل SSID.
  • قم بتمكين التوزيع العشوائي لـ MAC افتراضيًا لجميع الشبكات المضافة حديثًا.

استخدم التنفيذ المرجعي لواجهة مستخدم الإعدادات لتنفيذ المطالبات الجديدة.

قد لا تتمتع الأجهزة التي تعمل بنظام التشغيل Android 9 أو الإصدارات الأقدم بدعم التوزيع العشوائي لـ Wi-Fi MAC. عند ترقية هذه الأجهزة إلى Android 10، يمكن تعطيل ميزة توزيع Wi-Fi MAC العشوائي عن طريق تعيين علامة WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION على القيمة true في ملف إنشاء HAL لمورد Wi-Fi.

تصديق

للتحقق من أن الميزة تعمل على النحو المنشود، قم بتشغيل اختبار التكامل (ACTS) والاختبار اليدوي.

لتشغيل اختبار التكامل، استخدم ملف ACTS، WifiMacRandomizationTest.py ، الموجود في tools/test/connectivity/acts_tests/tests/google/wifi ، للتحقق من أن الجهاز يستخدم عنوان MAC العشوائي ويخزن عنوان MAC العشوائي لكل منها بشكل صحيح شبكة.

لإجراء اختبار يدوي:

  1. تحقق من تمكين التوزيع العشوائي لـ MAC على الجهاز عن طريق التحقق من تعيين config_wifi_connected_mac_randomization_supported على القيمة true في تراكب الجهاز.
  2. الاتصال بشبكة Wi-Fi.
  3. اضغط على الشبكة للانتقال إلى صفحة تفاصيل الشبكة. تحقق من تشغيل التوزيع العشوائي لـ MAC. تأكد من أن عنوان MAC المعروض هو عنوان MAC عشوائي، والذي يحتوي على البت الذي تم إنشاؤه محليًا مضبوطًا على 1 وبت البث المتعدد مضبوطًا على 0.
  4. قم بإيقاف تشغيل التوزيع العشوائي لـ MAC. اتصل بنفس الشبكة وتحقق من استخدام جهاز MAC الخاص بالمصنع.
  5. احذف الشبكة بالضغط على "نسيت" في صفحة تفاصيل الشبكة.
  6. اتصل بنفس الشبكة وتحقق من استخدام نفس عنوان MAC العشوائي.

لاختبار التوزيع العشوائي لـ MAC على جهاز يعمل بنظام Android 10 قبل الترقية (قادر على دعم التوزيع العشوائي لـ MAC) إلى Android 10 أو أعلى:

  1. أن يكون لديك شبكة محفوظة واحدة على الأقل على جهاز يعمل بنظام التشغيل Android 9 أو الإصدارات الأقدم.
  2. قم بتفليش صورة نظام Android 10.
  3. في منتقي Wi-Fi، تأكد من إيقاف تشغيل التوزيع العشوائي لـ MAC لجميع الشبكات المحفوظة.
  4. قم بتشغيل التوزيع العشوائي لـ MAC. اتصل بنفس الشبكة وتحقق من استخدام جهاز MAC العشوائي.