تمكين Adiantum

كزبرة البئر هو أسلوب التشفير مصممة لأجهزة تشغيل الروبوت 9 والتعليم العالي التي تفتقر إلى وحدات المعالجة المركزية AES التعليمات. إذا كنت الشحن جهاز القائم على ARM مع ARMv8 تشفير الإضافات البرمجية أو جهاز المستندة إلى x86 مع AES-NI، يجب عدم استخدام كزبرة البئر. AES أسرع على تلك المنصات.

بالنسبة للأجهزة التي تفتقر إلى تعليمات AES CPU هذه ، يوفر Adiantum تشفيرًا على جهازك مع أداء ضئيل للغاية. للأرقام القياس، راجع ورقة كزبرة البئر . لمصدر قياس ليتم تشغيلها على الأجهزة الخاصة بك، راجع المصدر كزبرة البئر على جيثب .

لتمكين Adiantum على جهاز يعمل بنظام Android 9 أو أعلى ، تحتاج إلى إجراء تغييرات kernel وتغييرات في مساحة المستخدمين.

تغييرات Kernel

Adiantum مدعوم من نواة Android الشائعة ، الإصدار 4.9 وما بعده.

إذا لم يكن نواة جهازك يدعم Adiantum بالفعل ، فاختر التغييرات المدرجة أدناه. إذا كنت تواجه صعوبة في الانتقاء، الأجهزة التي تستخدم تشفير كامل للقرص يمكن (FDE) تستبعد fscrypt: التصحيح.

إصدار النواة تصحيحات التشفير و fscrypt dm-crypt التصحيح
4.19 4.19 نواة dm-crypt التصحيح
4.14 4.14 نواة dm-crypt التصحيح
4.9 4.9 نواة dm-crypt التصحيح

تمكين Adiantum في النواة الخاصة بك

Android 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

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

قم بتمكين Adiantum في جهازك

أولا، تأكد من أن جهازك يحتوي على PRODUCT_SHIPPING_API_LEVEL تعيين بشكل صحيح لتتناسب مع نسخة أندرويد أنها بصدد إطلاق معها. على سبيل المثال، إطلاق جهاز مع الروبوت 11 يجب أن يكون PRODUCT_SHIPPING_API_LEVEL := 30 . هذا مهم لأن بعض إعدادات التشفير لها إعدادات افتراضية مختلفة في إصدارات التشغيل المختلفة.

الأجهزة ذات التشفير المستند إلى الملفات

لتمكين تشفير الملف على أساس كزبرة البئر على التخزين الداخلية للجهاز، إضافة الخيار التالي إلى العمود الأخير (العمود fs_mgr_flags) من الصف ل userdata القسم في الجهاز fstab ملف:

fileencryption=adiantum

إذا كان جهازك تطلق مع 11 الروبوت أو أعلى، ثم تمكين التشفير ميتاداتا مطلوب أيضا. لاستخدام كزبرة البئر لتشفير ميتاداتا على تخزين الداخلي، وfs_mgr_flags ل userdata يجب أن تحتوي أيضا على الخيارات التالية:

metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption

بعد ذلك، تمكين تشفير كزبرة البئر على تخزين تبنيهم . للقيام بذلك، قم بتعيين خصائص النظام التالية في 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 إلى سطر الأوامر النواة. سيؤدي ذلك إلى تقليل استخدام الذاكرة قليلاً عند استخدام تشفير البيانات الوصفية Adiantum. قبل القيام بذلك، تحقق من أن inlinecrypt لم يتم تحديد الخيار جبل في fstab . إذا تم تحديد ذلك، إزالته، نظرا لعدم الحاجة إليها لتشفير كزبرة البئر، ويسبب مشاكل في الأداء عند استخدامها في تركيبة مع 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 .

الأجهزة المزودة بتشفير كامل للقرص

لتمكين كزبرة البئر وتحسين أدائها، تعيين هذه الخصائص في PRODUCT_PROPERTY_OVERRIDES :

ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

وضع fde_sector_size إلى 4096 يحسن الأداء، ولكن غير مطلوب للكزبرة البئر إلى العمل. لاستخدام هذا الإعداد ، يجب أن يبدأ قسم بيانات المستخدم بإزاحة 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)"