הפעלת Adiantum

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, כדאי לבחור השינויים הבאים:

הפעלת 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)"