Adiantum یک روش رمزگذاری است که برای دستگاههای دارای Android 9 و بالاتر طراحی شده است که CPU آنها فاقد دستورالعملهای AES هستند. اگر یک دستگاه مبتنی بر ARM با افزونههای رمزنگاری ARMv8 یا یک دستگاه مبتنی بر x86 با AES-NI ارسال میکنید، نباید از Adiantum استفاده کنید. AES در این پلتفرم ها سریعتر است.
برای دستگاههایی که فاقد این دستورالعملهای CPU AES هستند، Adiantum رمزگذاری را روی دستگاه شما با سربار عملکرد بسیار کمی ارائه میکند. برای اعداد معیار، مقاله Adiantum را ببینید. برای اینکه منبع بنچمارک روی سخت افزار شما اجرا شود، منبع Adiantum را در GitHub ببینید.
برای فعال کردن Adiantum در دستگاهی که دارای اندروید 9 یا بالاتر است، باید تغییرات هسته و تغییرات فضای کاربر را ایجاد کنید.
کرنل تغییر می کند
Adiantum توسط هسته های رایج اندروید، نسخه 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 را در هسته خود فعال کنید
اندروید 11 و بالاتر
اگر دستگاه شما با Android 11 یا بالاتر راه اندازی می شود، تنظیمات زیر را در پیکربندی هسته دستگاه خود فعال کنید:
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
اگر دستگاه شما با اندروید 9 یا 10 راه اندازی می شود، تنظیمات پیکربندی هسته کمی متفاوت مورد نیاز است. تنظیمات زیر را فعال کنید:
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 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
تنظیم کنید:
برای اندروید 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
را به خط فرمان هسته اضافه کنید. هنگامی که از رمزگذاری ابرداده Adiantum استفاده می شود، این مقدار کمی استفاده از حافظه را کاهش می دهد. قبل از انجام این کار، بررسی کنید که گزینه inlinecrypt
mount در fstab
مشخص نشده باشد. اگر مشخص شده است، آن را حذف کنید، زیرا برای رمزگذاری Adiantum مورد نیاز نیست و هنگام استفاده در ترکیب با blk-crypto-fallback.num_keyslots=1
مشکلات عملکردی ایجاد می کند.
برای تأیید اینکه پیاده سازی شما کار می کند، یک گزارش اشکال تهیه کنید یا اجرا کنید:
adb root
adb shell dmesg
اگر Adiantum به درستی فعال شده باشد، باید این را در گزارش هسته مشاهده کنید:
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 به درستی فعال شده باشد، باید این را در گزارش هسته مشاهده کنید:
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 در این پلتفرم ها سریعتر است.
برای دستگاههایی که فاقد این دستورالعملهای CPU AES هستند، Adiantum رمزگذاری را روی دستگاه شما با سربار عملکرد بسیار کمی ارائه میکند. برای اعداد معیار، مقاله Adiantum را ببینید. برای اینکه منبع بنچمارک روی سخت افزار شما اجرا شود، منبع Adiantum را در GitHub ببینید.
برای فعال کردن Adiantum در دستگاهی که دارای اندروید 9 یا بالاتر است، باید تغییرات هسته و تغییرات فضای کاربر را ایجاد کنید.
کرنل تغییر می کند
Adiantum توسط هسته های رایج اندروید، نسخه 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 را در هسته خود فعال کنید
اندروید 11 و بالاتر
اگر دستگاه شما با Android 11 یا بالاتر راه اندازی می شود، تنظیمات زیر را در پیکربندی هسته دستگاه خود فعال کنید:
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
اگر دستگاه شما با اندروید 9 یا 10 راه اندازی می شود، تنظیمات پیکربندی هسته کمی متفاوت مورد نیاز است. تنظیمات زیر را فعال کنید:
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 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
تنظیم کنید:
برای اندروید 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
را به خط فرمان هسته اضافه کنید. هنگامی که از رمزگذاری ابرداده Adiantum استفاده می شود، این مقدار کمی استفاده از حافظه را کاهش می دهد. قبل از انجام این کار، بررسی کنید که گزینه inlinecrypt
mount در fstab
مشخص نشده باشد. اگر مشخص شده است، آن را حذف کنید، زیرا برای رمزگذاری Adiantum مورد نیاز نیست و هنگام استفاده در ترکیب با blk-crypto-fallback.num_keyslots=1
مشکلات عملکردی ایجاد می کند.
برای تأیید اینکه پیاده سازی شما کار می کند، یک گزارش اشکال تهیه کنید یا اجرا کنید:
adb root
adb shell dmesg
اگر Adiantum به درستی فعال شده باشد، باید این را در گزارش هسته مشاهده کنید:
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 به درستی فعال شده باشد، باید این را در گزارش هسته مشاهده کنید:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"