تفعيل "أديانتوم"

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، اختَر التغييرات التالية:

تفعيل 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)"