Adiantum هي طريقة تشفير مصمَّمة للأجهزة التي تعمل بنظام التشغيل Android 9 والإصدارات الأحدث. الذين تفتقر وحدات المعالجة المركزية (CPU) لديهم تعليمات AES. في حال شحن المنتجات المستندة إلى معالِج البيانات ARM جهاز مزوّد بإضافات تشفير ARMv8 أو جهاز يستند إلى x86 بمعيار AES-NI يجب عدم استخدام Adiantum. تستخدم بروتوكولات AES بشكل أسرع الأساسية.
بالنسبة إلى الأجهزة التي لا تحتوي على تعليمات وحدة المعالجة المركزية (CPU) AES هذه، توفّر Adiantum التشفير على مع أداء منخفض جدًا على الأداء. بالنسبة لأرقام قياس الأداء، راجِع بحث Adiantum. بالنسبة إلى مصدر قياس الأداء لتشغيله على أجهزتك، راجع مصدر Adiantum على GitHub.
لتفعيل خدمة Adiantum على جهاز يعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث، عليك تنفيذ ما يلي: إجراء تغييرات على النواة وتغييرات على مساحة المستخدم.
تغييرات النواة
يتوافق Adiantum مع النواة الشائعة لنظام التشغيل Android، الإصدار 4.9 والإصدارات الأحدث.
إذا لم تكن نواة الجهاز متوافقة مع Adiantum،
التغييرات المدرجة أدناه. في حال مواجهة مشكلة في الاختيار، يمكن للأجهزة التي تستخدم تشفير القرص الكامل (FDE) استبعاد
التصحيح fscrypt:
.
إصدار النواة | تصحيحات التعمية والتشفير | تصحيح واحد (dm-crypt ) |
---|---|---|
4.19 | النواة 4.19 | رمز تصحيح واحد (dm-crypt )
|
4.14 | النواة 4.14 | رمز تصحيح واحد (dm-crypt )
|
4.9 | نواة 4.9 | رمز تصحيح واحد (dm-crypt )
|
تفعيل Adiantum في النواة (النواة)
الإصدار 11 من نظام Android والإصدارات الأحدث
إذا كان جهازك يعمل بالإصدار 11 من نظام التشغيل Android أو إصدار أحدث، تفعيل الإعدادات التالية في تهيئة النواة لجهازك:
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، ثم تكوين kernel مختلفًا قليلاً الإعدادات اللازمة. تفعيل الإعدادات التالية:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
إذا كان جهازك يستخدم التشفير على مستوى الملفات، عليك أيضًا تفعيل:
CONFIG_F2FS_FS_ENCRYPTION=y
وأخيرًا، إذا كان جهازك يعمل بنواة ARM 32 بت، يمكنك تفعيل تعليمات NEON تحسين الأداء:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
تغييرات مساحة المستخدم
بالنسبة إلى الأجهزة التي تعمل بالإصدار 10 من نظام التشغيل Android أو الإصدارات الأحدث، تتوفّر تغييرات مساحة المستخدم في Adiantum مسبقًا.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 9، اختَر التغييرات التالية:
- cryptfs: إضافة دعم Adiantum
- cryptfs: السماح بضبط حجم قطاع تشفير dm
- cryptfs: تقريب حجم جهاز dm-crypt إلى حدود قطاع العملات المشفّرة
- cryptfs: تحسين تسجيل عملية إنشاء الأجهزة بالترميز dm-crypt
- libfscrypt: إضافة فريق دعم Adiantum
- fs_mgr_fstab: إضافة فريق دعم Adiantum
تفعيل Adiantum على جهازك
عليك أولاً التأكّد من ضبط PRODUCT_SHIPPING_API_LEVEL
على جهازك
بشكل صحيح ليتوافق مع إصدار Android الذي سيتم تشغيله به. على سبيل المثال،
الأجهزة التي تعمل بالإصدار 11 من نظام التشغيل Android
PRODUCT_SHIPPING_API_LEVEL := 30
هذا مهم لأن بعض
إعدادات التشفير لها إعدادات افتراضية مختلفة في إصدارات الإطلاق المختلفة.
الأجهزة التي تستخدم التشفير على مستوى الملفات
لتفعيل التشفير المستنِد إلى ملفات Adiantum على وحدة التخزين الداخلية لجهازك، أضِف
الخيار التالي إلى العمود الأخير (علامة fs_mgr_flags
للصف المخصص للقسم userdata
في مجلد
ملف fstab
:
fileencryption=adiantum
إذا كان جهازك يعمل بالإصدار 11 من نظام التشغيل Android أو إصدار أحدث،
ثم يؤدي التمكين
يكون تشفير البيانات الوصفية مطلوبًا أيضًا. استخدام 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
على نظامَي التشغيل Android 9 و10:
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
بشكل اختياري إلى السمة
سطر أوامر kernel. سيؤدي هذا إلى تقليل استخدام الذاكرة قليلاً عند استخدام Adiantum
يتم استخدام تشفير بيانات التعريف. قبل القيام بذلك، تحقق من أن
لم يتم تحديد خيار التثبيت inlinecrypt
في fstab
.
إذا تم تحديدها، قم بإزالتها، لأنها ليست مطلوبة لتشفير Adiantum،
ويسبب مشاكل في الأداء عند استخدامها مع
blk-crypto-fallback.num_keyslots=1
للتأكّد من نجاح عملية التنفيذ، يجب تسجيل تقرير خطأ أو تشغيل:
adb root
adb shell dmesg
إذا تم تفعيل Adiantum بشكل صحيح، من المفترض أن يظهر لك هذا في سجلّ النواة (kernel):
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. لاستخدام هذا الإعداد، يجب أن يكون قسم userdata
يبدأ بإزاحة متوافقة مع 4096 بايت على القرص.
في fstab
، لمجموعة بيانات المستخدمين:
forceencrypt=footer
للتأكّد من نجاح عملية التنفيذ، يجب تسجيل تقرير خطأ أو تشغيل:
adb root
adb shell dmesg
إذا تم تفعيل Adiantum بشكل صحيح، من المفترض أن يظهر لك هذا في سجلّ النواة (kernel):
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"