Adiantum هي طريقة تشفير مصممة للأجهزة التي تعمل بنظام التشغيل Android 9 والإصدارات الأحدث والتي تفتقر وحدات المعالجة المركزية (CPU) الخاصة بها إلى تعليمات AES . إذا كنت تقوم بشحن جهاز يستند إلى ARM مع ملحقات تشفير ARMv8 أو جهاز يستند إلى x86 مع AES-NI، فيجب عليك عدم استخدام Adiantum. AES أسرع على تلك المنصات.
بالنسبة للأجهزة التي تفتقر إلى تعليمات AES CPU هذه، يوفر Adiantum التشفير على جهازك مع القليل جدًا من الأداء. للتعرف على الأرقام المعيارية، راجع ورقة Adiantum . لكي يتم تشغيل مصدر قياس الأداء على أجهزتك، راجع مصدر Adiantum على GitHub .
لتمكين Adiantum على جهاز يعمل بنظام التشغيل Android 9 أو أعلى، تحتاج إلى إجراء تغييرات على kernel وتغييرات في مساحة المستخدم.
تغييرات النواة
يتم دعم Adiantum بواسطة نواة Android الشائعة، الإصدار 4.9 والإصدارات الأحدث.
إذا لم تكن نواة جهازك تتمتع بدعم Adiantum بالفعل، فاختر التغييرات المذكورة أدناه. إذا كنت تواجه مشكلة في الاختيار، فيمكن للأجهزة التي تستخدم تشفير القرص بالكامل (FDE) استبعاد fscrypt:
patch.
إصدار النواة | تصحيحات التشفير و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 أو إصدار أحدث، فقم بتمكين الإعدادات التالية في تكوين kernel بجهازك:
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
أندرويد 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
تغييرات مساحة المستخدم
بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 10 أو أعلى، فإن تغييرات مساحة مستخدم Adiantum موجودة بالفعل.
بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 9، اختر التغييرات التالية:
- cryptfs: إضافة دعم Adiantum
- cryptfs: السماح بتعيين حجم قطاع dm-crypt
- cryptfs: تقريب حجم جهاز 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:
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. لاستخدام هذا الإعداد، يجب أن يبدأ قسم بيانات المستخدم بإزاحة 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)",
Adiantum هي طريقة تشفير مصممة للأجهزة التي تعمل بنظام التشغيل Android 9 والإصدارات الأحدث والتي تفتقر وحدات المعالجة المركزية (CPU) الخاصة بها إلى تعليمات AES . إذا كنت تقوم بشحن جهاز يستند إلى ARM مع ملحقات تشفير ARMv8 أو جهاز يستند إلى x86 مع AES-NI، فيجب عليك عدم استخدام Adiantum. AES أسرع على تلك المنصات.
بالنسبة للأجهزة التي تفتقر إلى تعليمات AES CPU هذه، يوفر Adiantum التشفير على جهازك مع القليل جدًا من الأداء. للتعرف على الأرقام المعيارية، راجع ورقة Adiantum . لكي يتم تشغيل مصدر قياس الأداء على أجهزتك، راجع مصدر Adiantum على GitHub .
لتمكين Adiantum على جهاز يعمل بنظام التشغيل Android 9 أو أعلى، تحتاج إلى إجراء تغييرات على kernel وتغييرات في مساحة المستخدم.
تغييرات النواة
يتم دعم Adiantum بواسطة نواة Android الشائعة، الإصدار 4.9 والإصدارات الأحدث.
إذا لم تكن نواة جهازك تتمتع بدعم Adiantum بالفعل، فاختر التغييرات المذكورة أدناه. إذا كنت تواجه مشكلة في الاختيار، فيمكن للأجهزة التي تستخدم تشفير القرص بالكامل (FDE) استبعاد fscrypt:
patch.
إصدار النواة | تصحيحات التشفير و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 أو إصدار أحدث، فقم بتمكين الإعدادات التالية في تكوين kernel بجهازك:
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
أندرويد 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
تغييرات مساحة المستخدم
بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 10 أو أعلى، فإن تغييرات مساحة مستخدم Adiantum موجودة بالفعل.
بالنسبة للأجهزة التي تعمل بنظام التشغيل Android 9، اختر التغييرات التالية:
- cryptfs: إضافة دعم Adiantum
- cryptfs: السماح بتعيين حجم قطاع dm-crypt
- cryptfs: تقريب حجم جهاز 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:
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. لاستخدام هذا الإعداد، يجب أن يبدأ قسم بيانات المستخدم بإزاحة 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)"