הצפנת דיסק מלא היא תהליך של קידוד כל נתוני המשתמש במכשיר אנדרואיד באמצעות מפתח מוצפן. ברגע שהתקן מוצפן, כל הנתונים שנוצרו על ידי המשתמש מוצפנים אוטומטית לפני העברתם לדיסק והכל קוראים את הנתונים המפענחים באופן אוטומטי לפני החזרתם לתהליך ההתקשרות.
הצפנת דיסק מלא הוצגה לאנדרואיד בגרסה 4.4, אך אנדרואיד 5.0 הציגה את התכונות החדשות הבאות:
- יצר הצפנה מהירה, המצפינה רק בלוקים משומשים במחיצת הנתונים כדי למנוע אתחול הראשון של זמן רב. רק מערכות קבצים ext4 ו-f2fs תומכות כרגע בהצפנה מהירה.
- הוסיף את דגל
forceencrypt
fstab כדי להצפין באתחול הראשון. - נוספה תמיכה בתבניות והצפנה ללא סיסמה.
- נוסף אחסון מגובה חומרה של מפתח ההצפנה באמצעות יכולת החתימה של Trusted Execution Environment (TEE) (כגון ב-TrustZone). ראה אחסון המפתח המוצפן לפרטים נוספים.
זהירות: מכשירים ששודרגו ל-Android 5.0 ולאחר מכן מוצפנים עשויים להיות מוחזרים למצב לא מוצפן על ידי איפוס נתוני היצרן. לא ניתן להחזיר מכשירי אנדרואיד 5.0 חדשים שהוצפנו באתחול הראשון למצב לא מוצפן.
כיצד פועלת הצפנת אנדרואיד בדיסק מלא
הצפנת אנדרואיד בדיסק מלא מבוססת על dm-crypt
, שהיא תכונת ליבה הפועלת בשכבת מכשיר החסימה. בשל כך, ההצפנה עובדת עם MultiMediaCard ( eMMC) ומכשירי פלאש דומים המציגים את עצמם בפני הליבה כהתקני בלוק. הצפנה אינה אפשרית עם YAFFS, שמדבר ישירות עם שבב פלאש NAND גולמי.
אלגוריתם ההצפנה הוא 128 Advanced Encryption Standard (AES) עם שרשור בלוק צופן (CBC) ו-ESSIV:SHA256. המפתח הראשי מוצפן באמצעות AES של 128 סיביות באמצעות שיחות לספריית OpenSSL. עליך להשתמש ב-128 סיביות או יותר עבור המפתח (כאשר 256 הם אופציונליים).
הערה: יצרני OEM יכולים להשתמש ב-128 סיביות ומעלה כדי להצפין את המפתח הראשי.
במהדורת אנדרואיד 5.0, ישנם ארבעה סוגים של מצבי הצפנה:
- בְּרִירַת מֶחדָל
- פִּין
- סיסמה
- תבנית
עם האתחול הראשון, ההתקן יוצר מפתח ראשי של 128 סיביות שנוצר באופן אקראי ולאחר מכן מאחסן אותו עם סיסמת ברירת מחדל ומלח מאוחסן. סיסמת ברירת המחדל היא: "default_password" עם זאת, ה-hash שנוצר חתום גם באמצעות TEE (כגון TrustZone), המשתמש ב-hash של החתימה כדי להצפין את מפתח הראשי.
אתה יכול למצוא את סיסמת ברירת המחדל שהוגדרה בקובץ Android Open Source Project cryptfs.cpp .
כאשר המשתמש מגדיר את ה-PIN/Pass או הסיסמה במכשיר, רק מפתח 128 סיביות מוצפן מחדש ומאוחסן. (כלומר, שינויים ב-PIN/מעבר/דפוס משתמש אינם גורמים להצפנה מחדש של נתוני משתמש.) שימו לב שהמכשיר המנוהל עשוי להיות כפוף להגבלות של PIN, דפוס או סיסמה.
ההצפנה מנוהלת על ידי init
ו- vold
. init
קורא ל- vold
, ו-vold מגדיר מאפיינים להפעלת אירועים ב-init. חלקים אחרים של המערכת גם בוחנים את המאפיינים כדי לבצע משימות כמו דיווח על סטטוס, בקשת סיסמה או בקשה לאיפוס להגדרות היצרן במקרה של שגיאה קטלנית. כדי להפעיל תכונות הצפנה ב- vold
, המערכת משתמשת בכלי שורת הפקודה בפקודות cryptfs
של vdc
: checkpw
, restart
, enablecrypto
, changepw
, cryptocomplete
, verifypw
, setfield
, getfield
, mountdefaultencrypted
, getpwtype
, getpw
, ו- clearpw
.
על מנת להצפין, לפענח או למחוק /data
, אין להרכיב /data
. עם זאת, על מנת להציג ממשק משתמש כלשהו (UI), המסגרת חייבת להתחיל והמסגרת דורשת /data
לפעול. כדי לפתור את החידה הזו, מערכת קבצים זמנית מותקנת על /data
. זה מאפשר לאנדרואיד לבקש סיסמאות, להציג התקדמות או להציע מחיקת נתונים לפי הצורך. זה כן מטיל את המגבלה שכדי לעבור ממערכת הקבצים הזמנית למערכת הקבצים האמיתית /data
, המערכת חייבת לעצור כל תהליך עם קבצים פתוחים במערכת הקבצים הזמנית ולהפעיל מחדש את התהליכים האלה במערכת הקבצים /data
האמיתית. לשם כך, כל השירותים חייבים להיות באחת משלוש קבוצות: core
, main
ו- late_start
.
-
core
: לעולם אל תכבה לאחר ההפעלה. -
main
: כבה ולאחר מכן הפעל מחדש לאחר הזנת סיסמת הדיסק. -
late_start
: לא מתחיל עד לאחר/data
פוענח והורכב.
כדי להפעיל פעולות אלה, המאפיין vold.decrypt
מוגדר למחרוזות שונות . כדי להרוג ולהפעיל מחדש שירותים, הפקודות init
הן:
-
class_reset
: עוצר שירות אך מאפשר להפעיל אותו מחדש עם class_start. -
class_start
: מפעיל מחדש שירות. -
class_stop
: עוצר שירות ומוסיף דגלSVC_DISABLED
. שירותים שהופסקו אינם מגיבים ל-class_start
.
זורם
ישנן ארבע זרימות עבור מכשיר מוצפן. מכשיר מוצפן רק פעם אחת ולאחר מכן עוקב אחר זרימת אתחול רגילה.
- הצפין מכשיר שלא הוצפן בעבר:
- הצפנת מכשיר חדש באמצעות
forceencrypt
: הצפנה חובה באתחול הראשון (החל באנדרואיד L). - הצפנת מכשיר קיים: הצפנה ביוזמת המשתמש (Android K ומעלה).
- הצפנת מכשיר חדש באמצעות
- אתחל מכשיר מוצפן:
- הפעלת מכשיר מוצפן ללא סיסמה: אתחול מכשיר מוצפן שאין לו סיסמה מוגדרת (רלוונטי למכשירים עם אנדרואיד 5.0 ואילך).
- הפעלת מכשיר מוצפן עם סיסמה: אתחול מכשיר מוצפן שיש לו סיסמה מוגדרת.
בנוסף לזרימות אלו, המכשיר עלול גם להיכשל בהצפנת /data
. כל אחת מהזרימות מוסברת בפירוט להלן.
הצפין מכשיר חדש באמצעות Forceencrypt
זהו האתחול הראשון הרגיל עבור מכשיר אנדרואיד 5.0.
- זיהוי מערכת קבצים לא מוצפנת עם דגל
forceencrypt
/data
אינו מוצפן אך חייב להיות מוצפן מכיווןforceencrypt
מחייבת זאת. הסר/data
. - התחל להצפין
/data
vold.decrypt = "trigger_encryption"
מפעיל אתinit.rc
, מה שיגרום ל-vold
להצפין/data
ללא סיסמה. (אף אחד לא מוגדר כי זה אמור להיות מכשיר חדש.) - הר tmpfs
vold
מעלה קובץ tmpfs/data
(באמצעות אפשרויות tmpfs מ-ro.crypto.tmpfs_options
) ומגדיר את המאפייןvold.encrypt_progress
ל-0.vold
מכין את ה-tmpfs/data
לאתחול מערכת מוצפנת ומגדיר את המאפייןvold.decrypt
ל:trigger_restart_min_framework
- העלה מסגרת כדי להראות התקדמות
מכיוון שלמכשיר אין כמעט נתונים להצפין, סרגל ההתקדמות לרוב לא יופיע בפועל מכיוון שההצפנה מתרחשת כל כך מהר. ראה הצפנת מכשיר קיים לפרטים נוספים על ממשק המשתמש ההתקדמות.
- כאשר
/data
מוצפן, הסר את המסגרתvold
מגדיר אתvold.decrypt
ל-trigger_default_encryption
שמתחיל את שירותdefaultcrypto
. (זה מתחיל את הזרימה למטה להרכבת ברירת מחדל של נתוני משתמש מוצפנים.)trigger_default_encryption
בודק את סוג ההצפנה כדי לראות אם/data
מוצפן עם או בלי סיסמה. מכיוון שמכשירי אנדרואיד 5.0 מוצפנים באתחול הראשון, לא אמורה להיות מוגדרת סיסמה; לכן אנו מפענחים ומעלים/data
. - הר
/data
לאחר מכן,
init
מעלה את/data
על דיסק RAMDisk של tmpfs באמצעות פרמטרים שהוא קולט מ-ro.crypto.tmpfs_options
, המוגדר ב-init.rc
- התחל את המסגרת
vold
מגדיר אתvold.decrypt
ל-trigger_restart_framework
, מה שממשיך את תהליך האתחול הרגיל.
הצפין מכשיר קיים
זה מה שקורה כאשר אתה מצפין מכשיר Android K לא מוצפן או מכשיר מוקדם יותר שהועבר ל-L.
תהליך זה מתבצע ביוזמת המשתמש ומכונה "הצפנה במקום" בקוד. כאשר משתמש בוחר להצפין מכשיר, ממשק המשתמש מוודא שהסוללה טעונה במלואה ומתאם ה-AC מחובר לחשמל כך שיש מספיק חשמל כדי לסיים את תהליך ההצפנה.
אזהרה: אם נגמר החשמל במכשיר והוא נכבה לפני שסיים להצפין, נתוני הקבצים נשארים במצב מוצפן חלקית. המכשיר חייב להיות מאופס להגדרות היצרן וכל הנתונים אובדים.
כדי לאפשר הצפנה במקום, vold
מתחיל לולאה לקריאת כל סקטור של התקן הבלוק האמיתי ולאחר מכן כותב אותו למכשיר הבלוק ההצפנה. vold
בודק אם סקטור נמצא בשימוש לפני הקריאה והכתיבה שלו, מה שהופך את ההצפנה למהירה הרבה יותר במכשיר חדש שיש לו מעט נתונים.
מצב ההתקן : הגדר ro.crypto.state = "unencrypted"
והפעל את טריגר init
on nonencrypted
כדי להמשיך באתחול.
- בדוק את הסיסמה
ממשק המשתמש קורא
vold
עם הפקודהcryptfs enablecrypto inplace
שבוpasswd
היא סיסמת מסך הנעילה של המשתמש. - תוריד את המסגרת
vold
בודק שגיאות, מחזיר -1 אם הוא לא מצליח להצפין ומדפיס סיבה ביומן. אם הוא יכול להצפין, הוא מגדיר את המאפייןvold.decrypt
ל-trigger_shutdown_framework
. זה גורםinit.rc
להפסיק את השירותים במחלקותlate_start
ו-main
. - צור כותרת תחתונה קריפטו
- צור קובץ פירורי לחם
- לְאַתחֵל
- זיהוי קובץ פירורי לחם
- התחל להצפין
/data
לאחר מכן,
vold
מגדיר את מיפוי ההצפנה, אשר יוצר התקן בלוק קריפטו וירטואלי שממפה על התקן הבלוק האמיתי אך מצפין כל מגזר כפי שהוא כתוב, ומפענח כל מגזר תוך כדי הקריאה. לאחר מכןvold
יוצר וכותב את המטא-נתונים של ההצפנה. - בזמן שהוא מוצפן, הר tmpfs
vold
מעלה קובץ tmpfs/data
(באמצעות אפשרויות tmpfs מ-ro.crypto.tmpfs_options
) ומגדיר את המאפייןvold.encrypt_progress
ל-0.vold
מכין את ה-tmpfs/data
לאתחול מערכת מוצפנת ומגדיר את המאפייןvold.decrypt
ל:trigger_restart_min_framework
- העלה מסגרת כדי להראות התקדמות
trigger_restart_min_framework
גורםinit.rc
להתחיל את המחלקהmain
של השירותים. כאשר המסגרת רואה ש-vold.encrypt_progress
מוגדר ל-0, היא מעלה את ממשק המשתמש של סרגל ההתקדמות, שמחפש את המאפיין הזה כל חמש שניות ומעדכן סרגל התקדמות. לולאת ההצפנה מעדכנת אתvold.encrypt_progress
בכל פעם שהיא מצפינה עוד אחוז מהמחיצה. - כאשר
/data
מוצפן, עדכן את הכותרת התחתונה של ההצפנהכאשר
/data
מוצפן בהצלחה,vold
מנקה את הדגלENCRYPTION_IN_PROGRESS
במטא נתונים.לאחר ביטול נעילת המכשיר בהצלחה, הסיסמה משמשת להצפנת מפתח הראשי והכותרת התחתונה של ההצפנה מתעדכנת.
אם האתחול מחדש נכשל מסיבה כלשהי,
vold
מגדיר את המאפייןvold.encrypt_progress
ל-error_reboot_failed
והממשק משתמש אמור להציג הודעה המבקשת מהמשתמש ללחוץ על כפתור כדי לאתחל. זה לא צפוי להתרחש אי פעם.
הפעלת מכשיר מוצפן עם הצפנת ברירת מחדל
זה מה שקורה כשאתה מאתחל מכשיר מוצפן ללא סיסמה. מכיוון שמכשירי אנדרואיד 5.0 מוצפנים באתחול הראשון, לא צריכה להיות סיסמה מוגדרת ולכן זהו מצב ההצפנה המוגדר כברירת מחדל .
- זיהוי
/data
מוצפנים ללא סיסמהזהה שמכשיר האנדרואיד מוצפן מכיוון שלא ניתן להרכיב
/data
ואחד מהדגליםencryptable
אוforceencrypt
מוגדר.vold
מגדיר אתvold.decrypt
ל-trigger_default_encryption
, שמתחיל את שירותdefaultcrypto
.trigger_default_encryption
בודק את סוג ההצפנה כדי לראות אם/data
מוצפן עם או בלי סיסמה. - פענוח /נתונים
יוצר את התקן
dm-crypt
על התקן הבלוק כך שהמכשיר מוכן לשימוש. - הר / נתונים
vold
לאחר מכן מעלה את המחיצה האמיתית/data
המפוענחת ולאחר מכן מכינה את המחיצה החדשה. הוא מגדיר את המאפייןvold.post_fs_data_done
ל-0 ולאחר מכן מגדיר אתvold.decrypt
ל-trigger_post_fs_data
. זה גורם ל-init.rc
להריץ את פקודותpost-fs-data
שלו. הם ייצרו את כל הספריות או הקישורים הדרושים ולאחר מכן יגדירו אתvold.post_fs_data_done
ל-1.ברגע ש-
vold
רואה את ה-1 במאפיין זה, הוא מגדיר את המאפייןvold.decrypt
ל:trigger_restart_framework.
זה גורםinit.rc
להפעיל שוב שירותים ב-classmain
וגם להפעיל שירותים ב-classlate_start
בפעם הראשונה מאז האתחול. - התחל את המסגרת
כעת המסגרת מאתחלת את כל השירותים שלה באמצעות ה-
/data
המפוענח, והמערכת מוכנה לשימוש.
הפעלת מכשיר מוצפן ללא הצפנת ברירת מחדל
זה מה שקורה כשאתה מאתחל מכשיר מוצפן שיש לו סיסמה מוגדרת. הסיסמה של המכשיר יכולה להיות סיכה, תבנית או סיסמה.
- זיהוי מכשיר מוצפן עם סיסמה
זהה שמכשיר האנדרואיד מוצפן מכיוון שהדגל
ro.crypto.state = "encrypted"
vold
מגדיר אתvold.decrypt
ל-trigger_restart_min_framework
כי/data
מוצפן עם סיסמה. - הר tmpfs
init
מגדיר חמישה מאפיינים כדי לשמור את אפשרויות הטעינה הראשוניות שניתנו עבור/data
עם פרמטרים שהועברו מ-init.rc
vold
משתמש במאפיינים הבאים כדי להגדיר את מיפוי ההצפנה:-
ro.crypto.fs_type
-
ro.crypto.fs_real_blkdev
-
ro.crypto.fs_mnt_point
-
ro.crypto.fs_options
-
ro.crypto.fs_flags
(מספר קסדה ASCII בן 8 ספרות לפניו 0x)
-
- התחל את המסגרת כדי לבקש סיסמה
המסגרת מופעלת ורואה ש-
vold.decrypt
מוגדר ל-trigger_restart_min_framework
. זה אומר למסגרת שהיא מאתחלת בדיסק tmpfs/data
והיא צריכה לקבל את סיסמת המשתמש.עם זאת, ראשית, עליו לוודא שהדיסק הוצפן כהלכה. הוא שולח את הפקודה
cryptfs cryptocomplete
ל-vold
.vold
מחזיר 0 אם ההצפנה הושלמה בהצלחה, -1 בשגיאה פנימית, או -2 אם ההצפנה לא הושלמה בהצלחה.vold
קובע זאת על ידי חיפוש במטא נתונים של ההצפנה עבור דגלCRYPTO_ENCRYPTION_IN_PROGRESS
. אם זה מוגדר, תהליך ההצפנה הופסק, ואין נתונים שמישים במכשיר. אםvold
מחזיר שגיאה, ממשק המשתמש אמור להציג הודעה למשתמש לאתחל ולאפס את המכשיר להגדרות היצרן, ולתת למשתמש כפתור ללחוץ כדי לעשות זאת. - פענוח נתונים באמצעות סיסמה
לאחר ש-
cryptfs cryptocomplete
הצליח, המסגרת מציגה ממשק משתמש המבקש את סיסמת הדיסק. ממשק המשתמש בודק את הסיסמה על ידי שליחת הפקודהcryptfs checkpw
אלvold
. אם הסיסמה נכונה (מה שנקבע על ידי הרכבה מוצלחת של/data
במיקום זמני, ואז ביטול הטעינה שלו),vold
שומר את שם התקן החסימה המפוענח במאפייןro.crypto.fs_crypto_blkdev
ומחזיר את המצב 0 לממשק המשתמש . אם הסיסמה שגויה, היא מחזירה -1 לממשק המשתמש. - עצור את המסגרת
ממשק המשתמש מעלה גרפיקת אתחול קריפטו ואז קורא
vold
עם הפקודהcryptfs restart
.vold
מגדיר את המאפייןvold.decrypt
ל-trigger_reset_main
, מה שגורםinit.rc
לבצעclass_reset main
. זה עוצר את כל השירותים במחלקה הראשית, מה שמאפשר לבטל את הטעינה של tmpfs/data
. - הר
/data
לאחר מכן
vold
מעלה את מחיצת ה-real/data
המפוענחת ומכינה את המחיצה החדשה (שאולי מעולם לא הוכנה אם היא הוצפנה עם אפשרות המחיקה, שאינה נתמכת במהדורה הראשונה). הוא מגדיר את המאפייןvold.post_fs_data_done
ל-0 ולאחר מכן מגדיר אתvold.decrypt
ל-trigger_post_fs_data
. זה גורם ל-init.rc
להריץ את פקודותpost-fs-data
שלו. הם ייצרו את כל הספריות או הקישורים הדרושים ולאחר מכן יגדירו אתvold.post_fs_data_done
ל-1. ברגע ש-vold
רואה את ה-1 במאפיין זה, הוא מגדיר את המאפייןvold.decrypt
ל-trigger_restart_framework
. זה גורםinit.rc
להפעיל שוב שירותים ב-classmain
וגם להפעיל שירותים ב-classlate_start
בפעם הראשונה מאז האתחול. - התחל מסגרת מלאה
כעת המסגרת מאתחלת את כל השירותים שלה באמצעות מערכת הקבצים המפוענחת
/data
, והמערכת מוכנה לשימוש.
כישלון
מכשיר שלא מצליח לפענח עלול להיות שגוי מכמה סיבות. המכשיר מתחיל בסדרת השלבים הרגילה לאתחול:
- זיהוי מכשיר מוצפן עם סיסמה
- הר tmpfs
- התחל את המסגרת כדי לבקש סיסמה
אבל לאחר פתיחת המסגרת, המכשיר יכול להיתקל בכמה שגיאות:
- הסיסמה תואמת אך אינה יכולה לפענח נתונים
- המשתמש מזין סיסמה שגויה 30 פעמים
אם השגיאות הללו אינן נפתרות, בקש מהמשתמש למחוק מהמפעל :
אם vold
מזהה שגיאה במהלך תהליך ההצפנה, ואם עדיין לא הושמדו נתונים והמסגרת פועלת, vold
מגדיר את המאפיין vold.encrypt_progress
ל- error_not_encrypted
. ממשק המשתמש מבקש מהמשתמש לאתחל מחדש ומתריע על כך שתהליך ההצפנה מעולם לא התחיל. אם השגיאה מתרחשת לאחר שהמסגרת נקרעה, אך לפני שממשק המשתמש של סרגל ההתקדמות עלה, vold
יאתחל את המערכת. אם האתחול נכשל, הוא מגדיר את vold.encrypt_progress
ל- error_shutting_down
ומחזיר -1; אבל לא יהיה שום דבר שיתפוס את השגיאה. זה לא צפוי לקרות.
אם vold
מזהה שגיאה במהלך תהליך ההצפנה, הוא מגדיר את vold.encrypt_progress
ל- error_partially_encrypted
ומחזיר -1. לאחר מכן, ממשק המשתמש אמור להציג הודעה האומרת שההצפנה נכשלה ולספק לחצן למשתמש לאפס את המכשיר להגדרות היצרן.
אחסון המפתח המוצפן
המפתח המוצפן מאוחסן במטא-נתונים של ההצפנה. גיבוי חומרה מיושם על ידי שימוש ביכולת החתימה של Trusted Execution Environment (TEE). בעבר, הצפנו את המפתח הראשי בעזרת מפתח שנוצר על ידי החלת scrypt על סיסמת המשתמש והמלח המאוחסן. על מנת להפוך את המפתח לעמיד בפני התקפות מחוץ לקופסה, אנו מרחיבים אלגוריתם זה על ידי חתימה על המפתח שנוצר עם מפתח TEE שמור. החתימה המתקבלת הופכת למפתח באורך מתאים על ידי יישום אחד נוסף של scrypt. מפתח זה משמש לאחר מכן להצפנה ולפענוח של המפתח הראשי. כדי לאחסן מפתח זה:
- צור מפתח הצפנת דיסק אקראי של 16 בתים (DEK) ומלח של 16 בתים.
- החל scrypt על סיסמת המשתמש והמלח כדי לייצר מפתח ביניים 1 (IK1) של 32 בתים.
- פד IK1 עם אפס בתים לגודל המפתח הפרטי המחובר לחומרה (HBK). באופן ספציפי, אנו מרופדים כ: 00 || IK1 || 00..00; בית אפס אחד, 32 בתים IK1, 223 בתים אפס.
- שלט מרופד IK1 עם HBK לייצור IK2 של 256 בתים.
- החל scrypt על IK2 ומלח (אותו מלח כמו שלב 2) כדי לייצר IK3 של 32 בתים.
- השתמש ב-16 הבתים הראשונים של IK3 כ-KEK וב-16 הבתים האחרונים כ-IV.
- הצפנת DEK עם AES_CBC, עם מפתח KEK, וקטור אתחול IV.
שינוי הסיסמה
כאשר משתמש בוחר לשנות או להסיר את הסיסמה שלו בהגדרות, ממשק המשתמש שולח את הפקודה cryptfs changepw
אל vold
, ו- vold
מצפין מחדש את מפתח האב של הדיסק עם הסיסמה החדשה.
מאפייני הצפנה
vold
ו- init
מתקשרים זה עם זה על ידי הגדרת מאפיינים. להלן רשימה של מאפיינים זמינים להצפנה.
נכסי וולד
תכונה | תיאור |
---|---|
vold.decrypt trigger_encryption | הצפין את הכונן ללא סיסמה. |
vold.decrypt trigger_default_encryption | בדוק את הכונן כדי לראות אם הוא מוצפן ללא סיסמה. אם כן, פענח והעלה אותו, אחרת הגדר vold.decrypt ל-trigger_restart_min_framework. |
vold.decrypt trigger_reset_main | הוגדר על ידי vold כדי לכבות את ממשק המשתמש בבקשה לסיסמת הדיסק. |
vold.decrypt trigger_post_fs_data | הוגדר על ידי vold להכנה /data עם ספריות נחוצות, et al. |
vold.decrypt trigger_restart_framework | הוגדר על ידי vold כדי להתחיל את המסגרת האמיתית ואת כל השירותים. |
vold.decrypt trigger_shutdown_framework | הוגדר על ידי vold כדי לכבות את המסגרת המלאה כדי להתחיל בהצפנה. |
vold.decrypt trigger_restart_min_framework | הוגדר על ידי vold כדי להפעיל את ממשק המשתמש של סרגל ההתקדמות להצפנה או לבקש סיסמה, בהתאם לערך של ro.crypto.state . |
vold.encrypt_progress | כאשר המסגרת מופעלת, אם מאפיין זה מוגדר, היכנס למצב ממשק המשתמש של סרגל ההתקדמות. |
vold.encrypt_progress 0 to 100 | ממשק המשתמש של סרגל ההתקדמות אמור להציג את ערך האחוז שנקבע. |
vold.encrypt_progress error_partially_encrypted | ממשק המשתמש של סרגל ההתקדמות אמור להציג הודעה שההצפנה נכשלה, ולתת למשתמש אפשרות לאפס את המכשיר להגדרות היצרן. |
vold.encrypt_progress error_reboot_failed | ממשק המשתמש של סרגל ההתקדמות אמור להציג הודעה האומרת שההצפנה הושלמה, ולתת למשתמש לחצן לאתחל את המכשיר. שגיאה זו לא צפויה להתרחש. |
vold.encrypt_progress error_not_encrypted | ממשק המשתמש של סרגל ההתקדמות אמור להציג הודעה שאומרת שאירעה שגיאה, שום נתונים לא הוצפנו או אבדו, ולתת למשתמש לחצן לאתחל את המערכת. |
vold.encrypt_progress error_shutting_down | ממשק המשתמש של סרגל ההתקדמות אינו פועל, ולכן לא ברור מי יגיב לשגיאה זו. וממילא זה לא אמור לקרות. |
vold.post_fs_data_done 0 | הוגדר על ידי vold ממש לפני הגדרת vold.decrypt ל- trigger_post_fs_data . |
vold.post_fs_data_done 1 | הוגדר על ידי init.rc או init.rc מיד לאחר סיום המשימה post-fs-data . |
init מאפיינים
תכונה | תיאור |
---|---|
ro.crypto.fs_crypto_blkdev | הוגדר על ידי פקודת vold checkpw לשימוש מאוחר יותר על ידי restart של פקודת vold . |
ro.crypto.state unencrypted | מוגדר על ידי init לומר שהמערכת הזו פועלת עם /data ro.crypto.state encrypted . מוגדר על ידי init לומר שהמערכת הזו פועלת עם /data מוצפן. |
| חמשת המאפיינים האלה נקבעים על ידי init כאשר הוא מנסה להעלות /data עם פרמטרים שהועברו מ- init.rc vold משתמש באלה כדי להגדיר את מיפוי ההצפנה. |
ro.crypto.tmpfs_options | מוגדר על ידי init.rc עם האפשרויות ש-init צריך להשתמש בו בעת הרכבה של מערכת הקבצים tmpfs /data . |
בצע פעולות
on post-fs-data on nonencrypted on property:vold.decrypt=trigger_reset_main on property:vold.decrypt=trigger_post_fs_data on property:vold.decrypt=trigger_restart_min_framework on property:vold.decrypt=trigger_restart_framework on property:vold.decrypt=trigger_shutdown_framework on property:vold.decrypt=trigger_encryption on property:vold.decrypt=trigger_default_encryption