מסך נעילה

ההטמעה שמוגדרת כברירת מחדל ב-AOSP של מסך הנעילה עם אפשרויות לביטול הנעילה (keyguard) מופיעה רק במסך הראשי. ב-Android 9 (ובגרסאות קודמות), מסכים משניים תמכו בחלון נעילה יחיד במסך חיצוני יחיד. ב-Android 10, מסך הנעילה מורחב לכל המסכים המשניים הציבוריים. מסך הנעילה נשאר פשוט ואי אפשר לבטל את הנעילה ממסכים משניים.

איור 1. מסך הנעילה במסך המשני

יצרני מכשירים יכולים להטמיע את נעילת המסך שלהם במסכים משניים, בתנאי שהדרישה הבסיסית בנושא אבטחה מתקיימת. כשהמכשיר נעול, המידע צריך להיות מוסתר בצורה מאובטחת בכל המסכים. אין מדיניות או אמצעי בקרה מובנים שקובעים איזה תוכן יוצג או יוסתר כשהמכשיר נעול. לכן, הדרך המאובטחת היחידה להטמיע גישה מוגבלת היא להסתיר את כל התוכן מאחורי מסך הנעילה וחלונות הנעילה. החריגים היחידים הם אפליקציות שהביעו הסכמה מפורשת להצגה מעל מסך הנעילה באמצעות השיטות R.attr.showWhenLocked או Activity.setShowWhenLocked(). אחרת, יש סיכוי גבוה לדליפת מידע ממסכים ציבוריים ופרטיים.

אפשר להציב תצוגות במצבים שונים (ON/OFF), אבל המצב הנעול הוא גלובלי לכל התצוגות. כמו בכל הטמעה של מכשיר, צריך להיות ברור למשתמש מתי המכשיר נעול (או לא נעול). לדוגמה, לחיצה על לחצן ההפעלה בדרך כלל נועלת מכשיר נייד. לחצן ההפעלה צריך לנעול גם את כל המסכים הפנימיים וגם את כל המסכים החיצוניים.

חלון הנעילה שייך ל-SystemUI, ולכן הוא לא יוצג במסכים פרטיים. הבעלים של המסכים הפרטיים אחראים להסתיר את החלונות ולהגן על התוכן כשהמכשיר נעול. ההטמעה של המערכת כברירת מחדל רק מסתירה פעילויות במסכים פרטיים על ידי שינוי הרשאות הגישה.

הטמעה

חלון הנעילה במסכים משניים מיושם כחלון Presentation ב-KeyguardDisplayManager. ב-Android 10, הערך של KeyguardDisplayManager#mPresentations השתנה למערך שמכיל את כל חלונות הנעילה של כל המסכים המשניים. ‫KeyguardDisplayManager כולל גם מאזין לשינויים בתצוגה, כדי להגיב לשינויים במסכים הזמינים ולאבטח את כל המסכים. חשוב לנעול מיד את כל המסכים המחוברים בכל רגע נתון, כדי שתוקפים לא יוכלו לחלץ נתוני משתמשים גם אם יש להם גישה פיזית למכשיר.

חלון הנעילה מוצג בכל המסכים המשניים הציבוריים (ראו KeyguardDisplayManager#isKeyguardShowable()). בעלי מסכים פרטיים אחראים לאבטחת התוכן כשהמכשיר נעול.