מצב ההגנה המתקדמת ב-Android (AAPM) הוא תכונה חדשה שהושקה ב-Android 16 במטרה לשפר את האבטחה של מכשירי Android למשתמשים שנמצאים בסיכון, כמו עיתונאים ופעילים פוליטיים. ההגדרה הזו פועלת כהגדרה יחידה שמטמיעה קבוצה של הגדרות שנקבעו מראש, שמטרתן לשפר את ההגנה על המכשיר. ה-AAPM נותן עדיפות לאבטחה על פני פונקציונליות ושימושיות שעלולות להיפגע, כלומר יכול להיות שחלק מהתכונות יהיו מוגבלות כדי לצמצם את שטח הפנים להתקפה.
השפעה
AAPM משנה את ההתנהגות של שירותי מערכת מסוימים כדי לשפר את האבטחה. אם האפליקציה שלך מיועדת למשתמשים שחשובה להם האבטחה, עליך להתאים את האפליקציה למגבלות האלה.
- אותות מערכת: כשמשתמש מפעיל את AAPM, המערכת מודיעה לאפליקציות הרשומות כדי שהן יוכלו להתאים את עצמן לסביבה המוגבלת.
- שינויים נדרשים באפליקציה: עליכם לעדכן את האפליקציה כדי לטפל בשינויים בהתנהגות שמופעלים על ידי AAPM. לדוגמה, האפליקציה צריכה להתחשב ב:
- השבתת חיבורים לרשתות 2G ו-WEP.
- חסימת טעינת אפליקציות ממקורות לא רשמיים.
- רישום פורנזי פעיל ביומן.
- שיחות חסומות ממספרים לא מזוהים.
- הפעלנו מנגנוני הגנה מפני ספאם לקישורים באפליקציות לשליחת הודעות.
- אמצעי הגנה מותאמים אישית נוספים להגנה על משתמשים בסיכון
שילוב עם AAPM
כדי להשתמש בממשקי ה-API הרלוונטיים, צריך להצהיר על ההרשאה הבאה.
קבלת הרשאה
<uses-permission android:name="android.permission.QUERY_ADVANCED_PROTECTION_MODE" />
בדיקת הסטטוס
בודקים שהמשתמש הפעיל את AAPM במכשיר. הפעולה הזו מתבצעת באמצעות שירות המערכת AdvancedProtectionManager.
import android.security.advancedprotection.AdvancedProtectionManager
// ... inside your Activity or Service
val aapmManager = getSystemService(AdvancedProtectionManager::class.java)
if (aapmManager?.isAdvancedProtectionEnabled) {
// 🛡️ User is in Advanced Protection Mode.
// Engage shields: Disable risky features, enforce stricter authentication.
// TODO: Add Method which implements extra protections
}
האזנה לשינויים בזמן הריצה
המשתמשים יכולים להפעיל או להשבית את AAPM בזמן שהאפליקציה פועלת. רושמים קריאה חוזרת (callback) כדי לקבל עדכונים בזמן אמת.
import android.security.advancedprotection.AdvancedProtectionManager
import java.util.concurrent.Executor
// Define the callback
val aapmCallback = AdvancedProtectionManager.Callback { isEnabled ->
if (isEnabled) {
// TODO: User just engaged protections. Lock it down!
} else {
// TODO: User disabled protections. You may relax restrictions.
}
}
// Register the callback (for example, in onStart)
// Ensure you use the correct executor (for example, mainExecutor for UI updates)
aapmManager?.registerAdvancedProtectionCallback(mainExecutor, aapmCallback)