Adiantum היא שיטת הצפנה למכשירים עם Android מגרסה 9 ואילך שבמעבדים שלהם אין הוראות ל-AES. אם אתם שולחים מוצר שמבוסס על ARM מכשיר עם תוספי קריפטוגרפיה ARMv8 או מכשיר מבוסס x86 עם AES-NI, לא כדאי להשתמש ב-Adiantum. ה-AES מהיר יותר באלה פלטפורמות שונות.
ב-Adiantum ההצפנה מתבצעת במכשירים שבהם אין הוראות לגבי המעבד של AES (מעבד AES) במכשיר שלך עם תקורת ביצועים מועטה מאוד. במספרי השוואה לשוק, תוכלו לקרוא את המאמר של Adiantum. לגבי מקור ההשוואה לשוק שמריצים על החומרה, מקור Adiantum ב-GitHub.
כדי להפעיל את Adiantum במכשיר עם Android מגרסה 9 ואילך, צריך: לבצע שינויים בליבה (kernel) ושינויים במרחב המשתמשים.
שינויים בליבה (kernel)
Adiantum נתמך על ידי הליבות הנפוצות של Android, גרסה 4.9 ואילך.
אם בליבה של המכשיר עדיין אין תמיכה ב-Adiantum,
המפורטים בהמשך. אם נתקלת בבעיות בבחירת הפרטים החשובים, אפשר להחריג מכשירים עם הצפנת דיסק מלא (FDE)
התיקון fscrypt:
.
גרסת ליבה | תיקונים לקריפטו ו-fscrypt | תיקון אחד (dm-crypt ) |
---|---|---|
4.19 | ליבה (kernel) 4.19 | תיקון אחד (dm-crypt )
|
4.14 | ליבה (kernel) 4.14 | תיקון אחד (dm-crypt )
|
4.9 | ליבה (kernel) 4.9 | תיקון אחד (dm-crypt )
|
הפעלת Adiantum בליבה (kernel)
Android מגרסה 11 ואילך
אם המכשיר שלכם מופעל עם Android מגרסה 11 ואילך, להפעיל את ההגדרות הבאות בהגדרות הליבה של המכשיר:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_FS_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y CONFIG_DM_DEFAULT_KEY=y
אם במכשיר שלך פועלת ליבת ARM 32 סיביות, הפעל גם את הוראות NEON כדי שיפור הביצועים:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android מגרסה 9 ו-10
אם המכשיר מתחיל לפעול עם Android 9 או 10, ואז תצורת הליבה שונה מעט נדרשות הגדרות. מפעילים את ההגדרות הבאות:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
אם במכשיר שלכם פועלת הצפנה מבוססת קבצים, צריך להפעיל גם את:
CONFIG_F2FS_FS_ENCRYPTION=y
לבסוף, אם המכשיר שלכם מריץ ליבה (kernel) של ARM 32 סיביות, מפעילים את ההוראות של NEON שיפור הביצועים:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
שינויים במרחב המשתמשים
במכשירים עם Android מגרסה 10 ואילך, השינויים במרחב המשתמשים ב-Adiantum כבר קיימים.
במכשירים עם Android 9, כדאי לבחור השינויים הבאים:
- cryptfs: הוספת תמיכה של Adiantum
- cryptfs: אפשר להגדיר גודל מגזר dm-crypt
- קריפטו: עיגול כלפי מטה של גודל מכשיר ה-Dm-crypt לגבול של מגזר הקריפטו
- cryptfs: שיפור הרישום ביומן של יצירת מכשירים מסוג dm-crypt
- libfscrypt: הוספת תמיכה של Adiantum
- fs_mgr_fstab: הוספת תמיכה של Adiantum
הפעלת Adiantum במכשיר
קודם כול, צריך לוודא שבמכשיר שלך מוגדרת PRODUCT_SHIPPING_API_LEVEL
כך שתתאים לגרסת Android שבה היא מושקת. לדוגמה,
במכשיר שמופעל עם Android 11 צריך
PRODUCT_SHIPPING_API_LEVEL := 30
זה חשוב כי חלק
להגדרות ההצפנה יש ברירות מחדל שונות בגרסאות הפעלה שונות.
מכשירים עם הצפנה מבוססת-קבצים
כדי להפעיל הצפנה מבוססת קבצים של Adiantum באחסון הפנימי של המכשיר, צריך להוסיף
את האפשרות הבאה לעמודה האחרונה (fs_mgr_flags
עמודה) של השורה של המחיצה userdata
קובץ fstab
:
fileencryption=adiantum
אם המכשיר שלכם מופעל עם Android מגרסה 11 ואילך,
ואז להפעיל
נדרשת גם הצפנת מטא נתונים כדי להשתמש ב-Adiantum למטא-נתונים
באחסון הפנימי, הפרמטר fs_mgr_flags
userdata
חייב להכיל גם את האפשרויות הבאות:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
בשלב הבא, מפעילים את ההצפנה של Adiantum באחסון מותאם. כדי לעשות את זה,
מאפייני המערכת הבאים ב-PRODUCT_PROPERTY_OVERRIDES
:
ב-Android מגרסה 11 ואילך:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
בגרסאות 9 ו-10 של Android:
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
לסיום, אפשר להוסיף את blk-crypto-fallback.num_keyslots=1
אל
בשורת הפקודה של הליבה. הפעולה הזו תצמצם מעט את השימוש בזיכרון כאשר Adiantum
נעשה שימוש בהצפנת מטא-נתונים. לפני לעשות את זה, צריך לוודא
אפשרות הטעינה של inlinecrypt
לא מצוינת בfstab
.
אם צוין, מסירים אותו, כי הוא לא נחוץ להצפנת Adiantum
והוא גורם לבעיות בביצועים בשילוב עם
blk-crypto-fallback.num_keyslots=1
כדי לוודא שההטמעה בוצעה בהצלחה, מכינים דוח על באג או מריצים את הפקודה:
adb root
adb shell dmesg
אם Adiantum מופעל בצורה נכונה, הוא אמור להופיע ביומן הליבה:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
אם הפעלתם הצפנת מטא-נתונים, מריצים גם את הפקודה הבאה כדי לוודא הצפנת המטא-נתונים של Adiantum מופעלת באופן תקין:
adb root
adb shell dmctl table userdata
השדה השלישי של הפלט צריך להיות
xchacha12,aes-adiantum-plain64
מכשירים עם הצפנה של דיסק מלא
כדי להפעיל את Adiantum ולשפר את הביצועים שלו, צריך להגדיר את המאפיינים האלה
PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
הגדרה של fde_sector_size
לערך 4096 משפרת את הביצועים, אבל
שנדרש ל-Adiantum. כדי להשתמש בהגדרה הזו, המחיצה של נתוני המשתמשים צריכה
מתחיל בהיסט מתואם של 4,096 בייטים בדיסק.
ב-fstab
, עבור נתוני משתמש מוגדרים:
forceencrypt=footer
כדי לוודא שההטמעה בוצעה בהצלחה, מכינים דוח על באג או מריצים את הפקודה:
adb root
adb shell dmesg
אם Adiantum מופעל בצורה נכונה, הוא אמור להופיע ביומן הליבה:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"