تمكين Adiantum

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

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

تمكين 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)"