ברמת מערכת ההפעלה, פלטפורמת Android מספקת את האבטחה של ליבה של Linux, וגם כלי מאובטח לתקשורת בין תהליכים (IPC) שמאפשר תקשורת מאובטחת בין אפליקציות שפועלות בתהליכים שונים. תכונות האבטחה האלה ברמת מערכת ההפעלה מבטיחות שגם קוד מקורי מוגבל על ידי ארגז החול של האפליקציות. בין שהקוד הזה הוא תוצאה של התנהגות של אפליקציה כלולה ובין שהוא ניצול של נקודת חולשה באפליקציה, המערכת נועדה למנוע מהאפליקציה הזדונית לפגוע באפליקציות אחרות, במערכת Android או במכשיר עצמו. ההגדרות הנדרשות מפורטות במסמך ההגדרה של תאימות Android (CDD).
אבטחה ב-Linux
הליבה של פלטפורמת Android היא ליבה של Linux. הליבה של Linux נמצאת בשימוש נרחב כבר שנים, והיא משמשת מיליוני סביבות עם רגישות גבוהה לאבטחה. לאורך ההיסטוריה, אלפי מפתחים חוקרים, תוקפים ומתקנים את לינוקס כל הזמן, וכתוצאה מכך הוא הפך לליבה יציבה ומאובטחת שמשמשת רבות תאגידים ואנשי אבטחה.
ליבת Linux היא הבסיס לסביבת מחשוב נייד, והיא מספקת ל-Android כמה תכונות אבטחה מרכזיות, כולל:
- מודל הרשאות מבוסס-משתמשים
- בידוד תהליכים
- מנגנון הרחבה ל-IPC מאובטח
- היכולת להסיר חלקים מיותרים של הליבה שעשויים להיות לא מאובטחים
כמערכת הפעלה מרובה משתמשים, אחד מהיעדים הבסיסיים של ליבה של Linux הוא לבודד את משאבי המשתמשים זה מזה. הפילוסופיה של אבטחת Linux היא להגן על משאבי המשתמשים מפני משתמשים אחרים. ל-Linux יש:
- מונעת ממשתמש א' לקרוא את הקבצים של משתמש ב'
- מוודאים שמשתמש א' לא מנצל את כל הזיכרון של משתמש ב'
- מוודאים שמשתמש א' לא מנצל את כל משאבי המעבד (CPU) של משתמש ב'
- מוודאים שמשתמש א' לא מנצל את כל המשאבים של המכשירים של משתמש ב' (לדוגמה, טלפוניה, GPS ו-Bluetooth)
ארגז חול לאפליקציות
אבטחת האפליקציות ב-Android נאכפת על ידי ארגז החול של האפליקציות, שמבודד אפליקציות זו מזו ומגן על האפליקציות והמערכת מפני אפליקציות זדוניות. פרטים נוספים זמינים במאמר Application Sandbox.
מחיצת המערכת ומצב בטוח
המחיצות השונות שמוגנות על ידי בדיקת תקינות מכילות את הליבה של Android, וגם את ספריות מערכת ההפעלה, סביבת זמן הריצה של האפליקציה, מסגרת האפליקציה והאפליקציות. המחיצה הזו מוגדרת לקריאה בלבד. כשמשתמש מפעיל את המכשיר במצב בטוח, הבעלים של המכשיר יכול להפעיל אפליקציות של צד שלישי באופן ידני, אבל הן לא מופעלות כברירת מחדל.
הרשאות למערכת קבצים
בסביבה בסגנון UNIX, הרשאות מערכת הקבצים מבטיחות שמשתמש אחד לא יוכל לשנות או לקרוא קבצים של משתמש אחר. ב-Android, כל אפליקציה פועלת כמשתמש נפרד. אלא אם המפתח משתף קבצים באופן מפורש עם אפליקציות אחרות, אפליקציה אחת לא יכולה לקרוא או לשנות קבצים שנוצרו על ידי אפליקציה אחרת.
Security-Enhanced Linux
מערכת Android משתמשת ב-Security-Enhanced Linux (SELinux) כדי להחיל מדיניות בקרת גישה ולהגדיר בקרת גישה חובה (mac) בתהליכים. פרטים נוספים זמינים במאמר Security-Enhanced Linux ב-Android.
אתחול מאומת
ב-Android 7.0 ואילך יש תמיכה באתחול מאומת שמופעל באופן קפדני, כלומר מכשירים שנפרצו לא יכולים להתאפס. הפעלה מאומתת מבטיחה את תקינות תוכנת המכשיר, החל מ-Root of Trust בחומרה ועד למחיצה של המערכת. במהלך האתחול, כל שלב מאמת באופן קריפטוגרפי את השלמות והאותנטיות של השלב הבא לפני שהוא מופעל.
פרטים נוספים זמינים במאמר אתחול מאומת.
קריפטוגרפיה
מערכת Android מספקת קבוצה של ממשקי API קריפטוגרפיים לשימוש באפליקציות. אלה כוללות הטמעות של פרימיטיבים קריפטוגרפיים רגילים ונפוצים, כמו AES, RSA, DSA ו-SHA. בנוסף, יש ממשקי API לפרוטוקולים ברמה גבוהה יותר, כמו SSL ו-HTTPS.
ב-Android 4.0 הושק הכיתה KeyChain כדי לאפשר לאפליקציות להשתמש במאגר פרטי הכניסה של המערכת למפתחות פרטיים ולשרשראות אישורים.
הרשאות בסיס במכשיר
כברירת מחדל, ב-Android רק הליבה וקבוצת משנה קטנה של שירותי הליבה פועלים עם הרשאות root. עדיין יש הגבלות של SELinux על תהליכים במרחב המשתמש שפועלים בתור root. אתחול מאומת מונע ממשתמש או משירות עם הרשאות root לשנות באופן סופי את מערכת ההפעלה.
היכולת לשנות מכשיר Android שבבעלותם חשובה למפתחים שעובדים עם פלטפורמת Android. במכשירי Android רבים, המשתמשים יכולים לבטל את הנעילה של מנהל האתחול כדי לאפשר התקנה של מערכת הפעלה חלופית. מערכות ההפעלה החלופיות האלה עשויות לאפשר לבעלים לקבל גישה ל-root לצורך ניפוי באגים באפליקציות וברכיבי המערכת, או לגשת לתכונות שלא מוצגות לאפליקציות על ידי ממשקי ה-API של Android.
במכשירים מסוימים, אדם שיש לו שליטה פיזית במכשיר וכבל USB יכול להתקין מערכת הפעלה חדשה שמעניקה למשתמש הרשאות root. כדי להגן על נתוני משתמשים קיימים מפני פגיעה, מנגנון הנעילה של מנהל האתחול מחייב את מנהל האתחול למחוק את כל נתוני המשתמשים הקיימים כחלק משלב הנעילה. אפשר לעקוף את ההגנה הזו באמצעות גישה ל-Root שנרכשה על ידי ניצול באג או חור אבטחה בליבה.
הצפנת נתונים באמצעות מפתח שמאוחסן במכשיר לא מגינה על נתוני האפליקציה מפני משתמשי root במכשירים עם הרשאת root. אפליקציות יכולות להוסיף שכבת הגנה על נתונים באמצעות הצפנה עם מפתח ששמור מחוץ למכשיר, למשל בשרת או בסיסמה של משתמש. הגישה הזו יכולה לספק הגנה זמנית בזמן שהמפתח לא נמצא, אבל בשלב מסוים צריך לספק את המפתח לאפליקציה, ואז משתמשי root יכולים לגשת אליו.
גישה חזקה יותר להגנה על נתונים ממשתמשי root היא באמצעות פתרונות חומרה. יצרני ציוד מקורי יכולים להחליט להטמיע פתרונות חומרה שמגבילים את הגישה לסוגים ספציפיים של תוכן, כמו DRM להפעלת וידאו או אחסון מהימן שקשור ל-NFC ל-Google Wallet. במקרה של מכשיר שאבד או נגנב, הצפנת האחסון מבטיחה שלא ניתן לגשת לנתוני המשתמשים בלי לדעת את פרטי הכניסה שלהם למסך הנעילה.
תכונות אבטחה למשתמש
הצפנת האחסון
CDD מחייב שכל המכשירים שיושקו עם Android מגרסה 10 ואילך, ורוב המכשירים שיושקו עם Android מגרסה 6.0 ואילך, יפעילו את הצפנת האחסון כברירת מחדל.
ההטמעה הנוכחית של הצפנת האחסון ב-Android היא הצפנה מבוססת-קובץ בשילוב עם הצפנת מטא-נתונים. בהצפנה מבוססת-קובץ, תוכן הקובץ ושמות הקובץ מוצפנים באופן שקוף במחיצה של נתוני המשתמש, באמצעות מפתחות שונים למספר ספריות. הוא מספק ספריות אחסון מוצפנות באמצעות פרטי כניסה ומוצפנות במכשיר לכל משתמש, כולל פרופילים של עבודה.
הצפנת המטא-נתונים משלימה את ההצפנה מבוססת-הקבצים. הוא מצפין את כל הבלוקסים במחיצה של נתוני המשתמש שעדיין לא מוצפנים באמצעות הצפנה מבוססת-קובץ, באמצעות מפתח שלא קשור לפרטי הכניסה של אף משתמש במסך הנעילה, אבל עדיין מוגן על ידי Verified Boot.
הגנה על פרטי הכניסה במסך הנעילה
אפשר להגדיר את Android לאמת פרטי כניסה (קוד אימות, סיסמה או קו ביטול נעילה) שמשתמשים מספקים במסך הנעילה לפני שמספקים גישה למכשיר. בנוסף למניעת שימוש לא מורשה במכשיר, פרטי הכניסה במסך הנעילה מגינים על המפתח הקריפטוגרפי של נתונים שמוגדרים כמוצפנים באמצעות פרטי הכניסה. אדמין של מכשיר יכול לדרוש שימוש בפרטי כניסה במסך הנעילה ו/או כללים לגבי מורכבות פרטי הכניסה.
ניהול מכשירים
ב-Android מגרסה 2.2 ואילך יש את Android Device Administration API, שמספק תכונות לניהול המכשיר ברמת המערכת. לדוגמה, אפליקציית האימייל המובנית של Android משתמשת בממשקי ה-API כדי לשפר את התמיכה ב-Exchange. דרך אפליקציית האימייל, אדמינים ב-Exchange יכולים לאכוף מדיניות פרטי כניסה במסך הנעילה – כולל סיסמאות אלפאנומריות או קודי אימות מספריים – בכל המכשירים. אדמינים יכולים גם למחוק מרחוק את נתוני הטלפונים הניידים שאבדו או נגנבו (כלומר, לשחזר את הגדרות ברירת המחדל של היצרן).
בנוסף לשימוש באפליקציות שכלולות במערכת Android, ממשקי ה-API האלה זמינים לספקי צד שלישי של פתרונות לניהול מכשירים. פרטים על ה-API זמינים בקטע ניהול מכשירים.