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

החל מגרסה 8.0 של Android, מכשירי 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 Direct מופעלת.
  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. בבורר הרשתות, מוודאים שהרנדומיזציה של כתובות ה-MAC מושבתת בכל הרשתות השמורות.
  4. מפעילים את הרנדומיזציה של כתובות ה-MAC. מתחברים לאותה רשת ומוודאים שמשתמשים בכתובת ה-MAC האקראית.