ברמת מערכת ההפעלה, פלטפורמת Android מספקת את האבטחה של ליבה של Linux, וגם כלי מאובטח לתקשורת בין תהליכים (IPC) שמאפשר תקשורת מאובטחת בין אפליקציות שפועלות בתהליכים שונים. תכונות האבטחה האלה ברמת מערכת ההפעלה מבטיחות שגם קוד מקורי מוגבל על ידי ארגז החול של האפליקציות. בין שהקוד הזה הוא תוצאה של התנהגות של האפליקציה שכלולה בה, ובין שהוא נגרם כתוצאה מניצול נקודת חולשה באפליקציה, המערכת נועדה למנוע מהאפליקציה הזדונית לפגוע באפליקציות אחרות, במערכת Android או במכשיר עצמו. במאמר הגדרת הליבה מפורטות פעולות שאפשר לבצע כדי לחזק את הליבה במכשירים. ההגדרות הנדרשות מפורטות במסמך ההגדרה של תאימות Android (CDD).
אבטחה ב-Linux
הבסיס של פלטפורמת Android הוא הליבה של Linux. הליבה של Linux נמצאת בשימוש נרחב במשך שנים, והיא נמצאת בשימוש במיליוני סביבות רגישות לאבטחה. מאז שאלפי מפתחים חוקרים, תוקפים ומתקנים את הנושא באופן רציף, Linux הפכה לליבה יציבה ומאובטחת שנחשבת לליבה יציבה ומאובטחת של תאגידים ומומחים רבים בתחום האבטחה.
ליבת Linux היא הבסיס לסביבת מחשוב נייד, והיא מספקת ל-Android כמה תכונות אבטחה מרכזיות, כולל:
- מודל הרשאות מבוסס-משתמשים
- בידוד תהליכים
- מנגנון הרחבה ל-IPC מאובטח
- היכולת להסיר חלקים מיותרים של הליבה שעשויים להיות לא מאובטחים
כמערכת הפעלה מרובה משתמשים, אחד מהיעדים הבסיסיים של ליבה של Linux הוא לבודד את משאבי המשתמשים זה מזה. הפילוסופיה של אבטחת Linux היא להגן על משאבי המשתמשים מפני משתמשים אחרים. ל-Linux יש:
- מונעת ממשתמש א' לקרוא את הקבצים של משתמש ב'
- מוודאים שמשתמש א' לא ייגמר את הזיכרון של משתמש ב'
- מוודאים שמשתמש א' לא מנצל את כל משאבי המעבד (CPU) של משתמש ב'
- מוודאים שמשתמש א' לא מנצל את כל המשאבים של המכשירים של משתמש ב' (לדוגמה, טלפוניה, GPS ו-Bluetooth)
Sandbox של אפליקציות
אבטחת האפליקציות ב-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 זמינים בקטע ניהול מכשירים.