הטמעת רנדומיזציה של כתובות MAC

החל מ-Android 8.0, מכשירי Android משתמשים בכתובות MAC אקראיות לאיתור רשתות חדשות בזמן שהם לא משויכים לרשת. ב-Android 9, אפשר להפעיל אפשרות למפתחים (היא מושבתת כברירת מחדל) כדי לגרום למכשיר להשתמש בכתובת MAC אקראית כשמתחברים לרשת Wi-Fi.

ב-Android 10, רנדומיזציה של כתובות MAC מופעלת כברירת מחדל במצב לקוח, ב-SoftAp וב-Wi-Fi ישיר.

רנדומיזציה של 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 לערך true בהגדרות config.xml (אפשר לעשות זאת בשכבת-על בהתאמה אישית למכשיר).

    • הדגל הזה משמש כדי לקבוע אם תופעל רנדומיזציה של כתובות MAC במצב לקוח.
  3. מגדירים את config_wifi_p2p_mac_randomization_supported לערך true בהגדרות config.xml (אפשר לעשות זאת בשכבת-על בהתאמה אישית למכשיר).

    • הדגל הזה משמש כדי לקבוע אם תופעל רנדומיזציה של כתובות MAC ישירות ב-Wi-Fi.
  4. אפשר לבדוק את ההטמעה באמצעות השיטות שמתוארות במאמר אימות.

חובה שבממשק המשתמש של המערכת:

  • אפשרות להפעיל או להשבית את הרנדומיזציה של כל SSID.
  • רנדומיזציה של MAC צריכה להיות מופעלת כברירת מחדל לכל הרשתות החדשות שנוספו.

השתמשו ביישום העזר של ממשק המשתמש של ההגדרות כדי להטמיע הנחיות חדשות.

יכול להיות שמכשירים עם Android מגרסה 9 ומטה לא תומכים ברנדומיזציה של כתובות MAC ב-Wi-Fi. כשמשדרגים מכשירים כאלה ל-Android 10, אפשר להשבית את תכונת הרנדומיזציה של כתובות MAC ב-Wi-Fi על ידי הגדרת הדגל WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION כ-TRUE בקובץ HAL של ספק ה-Wi-Fi.

אימות

כדי לוודא שהתכונה פועלת כמצופה, מריצים בדיקה ידנית:

  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. מפעילים Flash את תמונת המערכת של Android 10.
  3. בבוחר ה-Wi-Fi, מוודאים שהרנדומיזציה של כתובות ה-MAC מושבתת בכל הרשתות השמורות.
  4. הפעלת רנדומיזציה של MAC. מתחברים לאותה רשת ומוודאים שנעשה שימוש ב-MAC האקראי.