מזהי מכשיר בלתי ניתנים לשינוי

ב-Android 6 ואילך, ספקי שירותי Wi-Fi ומנתחי מנות הוגבלו מלשחזר את כתובת ה-MAC של היצרן של מכשיר דרך ערימת ה-Wi-Fi מבקשות רשת. החל מ-Android 10, מגבלות נוספות מגבילות את הגישה למזהי מכשירים (מזהים) לאפליקציות בעלות רמת ההרשאה המוסמכת . זה מגן על מזהי מכשיר כגון

  • טלפוניה מספרי IMEI, MEID, ESN ו-IMSI.
  • מספרים סידוריים של build, SIM או USB.

מי יכול לגשת למזהי מכשיר

מזהי מכשיר מוגבלים בכל מכשירי Android 10, גם אם אפליקציות ממוקדות ל-Android 9 ומטה. ניתן לגשת למזהי מכשיר על ידי

  • אפליקציית ברירת המחדל ל-SMS.
  • אפליקציות עם הרשאת READ_PRIVILEGED_PHONE_STATE במחלקה Manifest.permission , וגם עם רישום היתרים בקובץ privapp-permission.xml . אלה חייבים להיטען גם בספריית priv-app .
  • אפליקציות עם הרשאות ספק כמוגדר ב- UICC הרשאות ספק .
  • בעל מכשיר או בעל פרופיל עם הרשאת READ_PHONE_STATE שהוענקה במחלקה Manifest.permission . (אין צורך ברישום הרשאות.)

גישה לחבילות מועדפות

חבילה חייבת לקבל הרשאה כדי לגשת למזהי מכשיר. הוא חייב להיות בעל הרשאת READ_PRIVILEGED_PHONE_STATE במחלקה Manifest.permission , ולהיות רשום ברשימה של privapp-permission.xml . למידע על תהליך רשימת ההיתרים, ראה רישום הרשאות מורשות .

למידע על קבלת מזהה ייחודי עבור חבילה לא מוגנת , עיין במקרי שימוש נפוצים והמזהה המתאים לשימוש .

מזהי מכשירים מוגבלים וכתובות MAC אקראיות

כדי להגביל עוד יותר מזהי מכשיר, כל המכשירים ב-Android 10 משדרים כברירת מחדל כתובות MAC אקראיות הן עבור בקשות בדיקה והן עבור בקשות הקשורות, וחייבים להיות בעלי כתובת MAC אקראית שונה עבור כל SSID. אל תשתמש בכתובת ה-MAC של היצרן של המכשיר במצב לקוח, נקודת גישה רכה (AP) או מקרי שימוש ב-Wi-Fi Direct. זה חייב להישאר מוסתר מממשקי API נגישים לציבור שאינם אפליקציות מורשות. אפליקציות מורשות הדורשות החזרת כתובת ה-MAC של היצרן נדרשות לקבל הרשאת LOCAL_MAC_ADDRESS .

למשתמשים יש אפשרות לשמור את כתובת ה-MAC האקראית המוגדרת כברירת מחדל שהוקצתה לכל SSID. האפשרות ניתנת לצפייה תחת פרטיות בהגדרות > פרטי רשת . כדי ללמוד על השגת כתובת MAC אקראית ראה כתובות MAC אקראית .

Screen shows if device ID uses a randomized MAC address for privacy
איור 1. כתובת MAC מוצגת באקראי תחת פרטיות בפרטי רשת

אפליקציות המפעילות ממשקי API של מזהה מכשיר

אפליקציות המפעילות ממשקי API של מזהה מכשיר חייבות לעמוד בדרישות Android 10. אחרת, כאשר הם מנסים לגשת למזהי מכשיר, יוחזרו הדברים הבאים:

  • אפליקציות ממוקדות לאנדרואיד 10
  • אפליקציות ממוקדות ל-Android 9 או גרסה קודמת יותר
    • אם יש להם הרשאת READ_PHONE_STATE , מוחזרים תגובת null או נתוני מיקום.
    • אם הם לא עושים זאת, ממשקי ה-API של מזהה המכשיר זורקים SecurityException שמכיל את שם השיטה שנקראה, וציון שהאפליקציה המתקשרת לא עומדת בדרישות לגישה למזהה המבוקש.

למידע נוסף על מזהי מכשירים בלתי ניתנים לשינוי, ראה מזהי מכשירים שאינם ניתנים לאיפוס ושיטות עבודה מומלצות למזהים ייחודיים .

בדיקה

יש למנוע מאפליקציות גישה למספר הסידורי של המכשיר, ובמקרה רלוונטי, ל-IMEI/MEID, למספר הסידורי של ה-SIM ולזיהוי המנוי. אפליקציות בעלות הרשאת גישה למזהים אלה חייבות גם לעמוד באחד מהקריטריונים המפורטים תחת מי יכול לגשת למזהי מכשירים .