החל מ-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 במכשיר:
עובדים עם ספק של שבבי Wi-Fi כדי להטמיע את שיטות ה-HAL הבאות:
-
IWifiStaIface#setMacAddress
: הגדרת כתובת ה-MAC של הממשק. ההטמעה שמוגדרת כברירת מחדל מורידה את הממשק, משנה את כתובת ה-MAC ומעלה מחדש את הממשק. -
IWifiStaIface#getFactoryMacAddress
: מקבל את כתובת ה-MAC של היצרן שלwlan0
באמצעות קריאה ל-ioctl
. -
ISupplicantP2pIface#setMacRandomization
: מגדיר את האקראיות של כתובת ה-MAC של P2P במבקש האימות (supplicant) למצב מופעל או מושבת.
-
מגדירים את
config_wifi_connected_mac_randomization_supported
לערךtrue
בהגדרותconfig.xml
(אפשר לעשות את זה בשכבת-על מותאמת אישית במכשיר).- הדגל הזה משמש כדי לקבוע אם רנדומיזציה של כתובות MAC במצב לקוח מופעלת.
מגדירים את
config_wifi_p2p_mac_randomization_supported
לערךtrue
בהגדרותconfig.xml
(אפשר לעשות את זה בשכבת-על מותאמת אישית במכשיר).- הדגל הזה משמש כדי לקבוע אם ההגדרה של אקראיות כתובת ה-MAC ב-Wi-Fi Direct מופעלת.
בודקים את ההטמעה באמצעות השיטות שמתוארות בקטע אימות.
ממשק המשתמש של המערכת חייב:
- אפשר להפעיל או להשבית את האקראיות לכל SSID.
- הפעלה של רנדומיזציה של כתובות MAC כברירת מחדל לכל הרשתות החדשות שנוספות.
כדי להטמיע הנחיות חדשות, צריך להשתמש בהטמעה לדוגמה של ממשק המשתמש של ההגדרות.
יכול להיות שבמכשירים עם Android מגרסה 9 ומטה לא תהיה תמיכה בהקצאה אקראית של כתובות MAC ב-Wi-Fi. כשמשדרגים מכשירים כאלה ל-Android 10, אפשר להשבית את התכונה של רנדומיזציה של כתובות MAC ב-Wi-Fi על ידי הגדרת הדגל WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION
כ-True בקובץ ה-make של ספק ה-Wi-Fi HAL.
אימות
כדי לוודא שהתכונה פועלת כמו שצריך, מריצים בדיקה ידנית:
- כדי לוודא שהאקראיות של כתובות ה-MAC מופעלת במכשיר, בודקים שהערך של
config_wifi_connected_mac_randomization_supported
מוגדר ל-true
בשכבת העל של המכשיר. - מתחברים לרשת Wi-Fi.
- מקישים על הערוץ כדי לעבור לדף הפרטים שלו. מוודאים שהאפשרות 'הקצאת כתובות MAC אקראיות' מופעלת. מוודאים שכתובת ה-MAC שמוצגת היא כתובת MAC אקראית, שבה הביט שנוצר באופן מקומי מוגדר כ-1 והביט של שידור מרובה כתובות מוגדר כ-0.
- משביתים את יצירת כתובת MAC אקראית, מתחברים לאותה רשת ומוודאים שכתובת ה-MAC המקורית משמשת.
- כדי למחוק את הרשת, מקישים על מחיקה בדף פרטי הרשת.
מתחברים לאותה רשת ומוודאים שנעשה שימוש באותה כתובת MAC אקראית.
כדי לבדוק רנדומיזציה של כתובות MAC במכשיר עם גרסה של Android שקודמת לגרסה 10 (שיכול לתמוך ברנדומיזציה של כתובות MAC), צריך לשדרג ל-Android מגרסה 10 ומעלה:
- לפחות רשת אחת שמורה במכשיר עם Android 9 ומטה.
- צריך לצרוב את קובץ האימג' של מערכת Android 10.
- בבורר ה-Wi-Fi, מוודאים שהרנדומיזציה של כתובות MAC מושבתת בכל הרשתות השמורות.
- מפעילים רנדומיזציה של כתובות MAC. מתחברים לאותה רשת ומוודאים שכתובת ה-MAC האקראית נמצאת בשימוש.