שיקולים
כדי להבטיח את תקינות האימות המוגן של Android, צריך להביא בחשבון את השיקולים הבאים. אם לא ניתן לטפל בבעיות האלה באופן משביע רצון, לא ניתן להטמיע את האימות המוגן במכשיר.
שיקולים לגבי ליבה של Linux
אישור מוגן נועד לפעול באופן מאובטח גם אם הליבה של המכשיר נמצאת בסיכון. בזמן שהתיבת הדו-שיח של האישור המוגן פעילה, הליבה לא יכולה להפריע לתקינות של תוכן המסך, לתקינות של הקלט של המשתמש ולאטומיות בין הקלט לבין הפלט של המשתמש. מבחינה ארכיטקטונית, צריך למנוע מהליבה לשנות את ההחלטה של המשתמש ולזייף אירועי משתמשים מלכתחילה. הליבה לא נחשבת מהימנה בתרחיש לדוגמה הזה, כי היא עשויה להיות בשליטת תוקף או להיות מוחלפת במשהו שונה לגמרי.
שיקולים לגבי קושחה
אפשר להטמיע אישור מוגן במכשיר רק אם לכל הרכיבים המעורבים יש קושחה מהימנה. אישור מוגן נועד לוודא שלמשתמש תהיה הזדמנות לקרוא הודעה שמוצגת בממשק המשתמש המהימן, כדי שיוכל לקבל החלטה מושכלת לגבי המשך העסקה. חשוב במיוחד לבדוק את מנהל לוח התצוגה, כי הוא עלול למנוע מהמשתמש לראות את ממשק המשתמש המהימן.
שיקולים לגבי קלט
חשוב לבחור שיטת קלט מאובטחת כדי לוודא שאירועי קלט שנוצרו על ידי שיטת הקלט שנבחרה לא יועברו לתיבת הדו-שיח המאובטחת לאישור, אלא אם המשתמש יוצר את האירוע בזמן שהתיבת הדו-שיח הזו פעילה.
חומרה פיזית
אסור שרכיב כלשהו שניתן לשלוט בו באמצעות ליבה של Android, כמו מערכת על שבב (SoC) או מעגל משולב לניהול צריכת חשמל (PMIC), יוכל להפעיל כבל שמחובר ללחצן אישור פיזי.
שיקולים לגבי בקר מגע
אפשר להשתמש בלחצני תוכנה במסך כקלט של אישור מוגן. בכל פעם שהשלט הרגיש מופעל על ידי ה-TEE, צריך לנקוט אמצעים כדי לנקות את המצב של השלט הרגיש.
התנהגות צפויה
הפרעות
אם המערכת מפסיקה את סשן האישור בגלל שיחת טלפון נכנסת או אירוע של הפעלה או השבתה, ה-HAL חייב לדווח על ResponseCode::Aborted
. האפליקציות מקבלות את הקריאה החוזרת onCanceled()
ומבינות שהמשתמש לא בחר פעולה. ההתראות לא צריכות לבטל את הסשן, אבל הן צריכות להודיע למשתמש. אסור להציג שכבות-על של התראות מכל סוג שהוא בזמן שהתיבת הדו-שיח פעילה.
תקופת חסד להזנת נתונים
אחרי שמפעילים את האישור המוגן, הקלט צריך להישאר לא פעיל למשך שנייה אחת לפחות לפני שהוא יגיב לאינטראקציה של המשתמש. תקופת החסד הזו מבטיחה שלמשתמש תהיה הזדמנות להגיב לתיבת דו-שיח לא צפויה לאישור. האפליקציה המהימנה חייבת לאכוף את תקופת החסד הזו.
סיבוב המסך
מצב 'לאורך' הוא המצב היחיד הנדרש, ואין תמיכה בסיבוב המסך. סיבוב המסך עלול לאפשר ניצול לרעה במערכת שנפרצה, למשל מיקום מטעה של לחצנים או מניפולציה בטקסט של הגוף.
כשלים בעיבוד גוף הטקסט
הגבול הקשה של הטקסט בגוף הוא 6144 (0x1800) בייטים, כולל נתונים נוספים שלא מוצגים ומידע בכותרת CBOR.
בנוסף, יש גבול רך שצריך לאכוף. אם ההודעה שמוצגת לא נכנסת במלואה למסך, צריך לוודא שהאימות המאובטח מבוטל והעסקה מבוטלת.
אם MessageSize
חורג מהגודל המקסימלי המותר, ההטמעה שלכם צריכה להחזיר את הערך UIErrorMessageTooLong
ב-promptUserConfirmation
.
מומלץ לעצב את טקסט הגוף אחרי קבלת קריאת ה-API. הטקסט בגוף ההודעה חייב להופיע במלואו למשתמש.
מסכים משניים
יש תמיכה במסכים משניים בתנאים מסוימים. חובה לשמור על תקינות הפלט והקלט של המשתמשים, ואי אפשר להציג מידע מטעה באמצעים אחרים. אחרת, תיבת הדו-שיח עשויה להופיע רק במסך הראשי, וכל המסכים האחרים צריכים להיות מושבתים או ריקים. פתרונות סטרימינג ושיתוף מסך לא יכולים להציג את תיבת הדו-שיח או ליצור אישורים.