הטמעת רנדומיזציה של כתובות 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: מפעיל או משבית את הרנדומיזציה של כתובות MAC ברשתות P2P ב-supplicant.
  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 בקובץ ה-make של HAL של ספק ה-Wi-Fi.

אימות

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

  1. כדי לוודא שהרנדומיזציה של MAC מופעלת במכשיר, בודקים ש-config_wifi_connected_mac_randomization_supported מוגדר ל-true בשכבת-העל של המכשיר.
  2. מתחברים לרשת Wi-Fi.
  3. מקישים על הערוץ כדי לעבור לדף הפרטים שלו. מוודאים שהרנדומיזציה של MAC מופעלת. מוודאים שכתובת ה-MAC שמוצגת היא כתובת MAC אקראית, שבה הבייט שנוצר באופן מקומי מוגדר כ-1 והבייט של ה-multicast מוגדר כ-0.
  4. משביתים את רנדומיזציה של MAC. מתחברים לאותה רשת ומוודאים שנעשה שימוש ב-MAC של היצרן.
  5. כדי למחוק את הרשת, מקישים על מחיקה בדף הפרטים של הרשת.
  6. מתחברים לאותה רשת ומוודאים שנעשה שימוש באותה כתובת MAC אקראית.

כדי לבדוק רנדומיזציה של כתובות MAC במכשיר עם גרסת Android ישנה יותר (שיכול לתמוך ברנדומיזציה של כתובות MAC) שמשודרג ל-Android מגרסה 10 ואילך:

  1. יש לכם רשת אחת לפחות שמאוחסנת במכשיר עם Android 9 ואילך.
  2. מבצעים אימג' פלאש של תמונת המערכת של Android 10.
  3. בבוחר ה-Wi-Fi, מוודאים שהרנדומיזציה של כתובות ה-MAC מושבתת בכל הרשתות השמורות.
  4. הפעלת רנדומיזציה של MAC. מתחברים לאותה רשת ומוודאים שמשתמשים בכתובת ה-MAC האקראית.