Adiantum เป็นวิธีการเข้ารหัสที่ออกแบบมาสำหรับอุปกรณ์ที่ใช้ Android 9 ขึ้นไปซึ่ง CPU ขาดคำสั่ง AES หากคุณกำลังจัดส่งอุปกรณ์ที่ใช้ ARM ที่มีส่วนขยายการเข้ารหัส ARMv8 หรืออุปกรณ์ที่ใช้ x86 ที่มี AES-NI คุณ ไม่ ควรใช้ Adiantum AES เร็วกว่าบนแพลตฟอร์มเหล่านั้น
สำหรับอุปกรณ์ที่ไม่มีคำสั่ง AES CPU เหล่านี้ Adiantum จะให้การเข้ารหัสบนอุปกรณ์ของคุณโดยมีค่าใช้จ่ายด้านประสิทธิภาพเพียงเล็กน้อย สำหรับตัวเลขการเปรียบเทียบ โปรดดู เอกสาร Adiantum หากต้องการให้ซอร์สการเปรียบเทียบทำงานบนฮาร์ดแวร์ของคุณ โปรดดู ซอร์ส Adiantum บน GitHub
หากต้องการเปิดใช้งาน Adiantum บนอุปกรณ์ที่ใช้ Android 9 ขึ้นไป คุณต้องทำการเปลี่ยนแปลงเคอร์เนลและเปลี่ยนแปลงพื้นที่ผู้ใช้
การเปลี่ยนแปลงเคอร์เนล
Adiantum รองรับเคอร์เนลทั่วไปของ Android เวอร์ชัน 4.9 และสูงกว่า
หากเคอร์เนลของอุปกรณ์ของคุณไม่รองรับ Adiantum ให้เลือกการเปลี่ยนแปลงตามรายการด้านล่าง หากคุณประสบปัญหาในการเลือกเชอร์รี่ อุปกรณ์ที่ใช้ การเข้ารหัสทั้งดิสก์ (FDE) สามารถยกเว้น fscrypt:
patch ได้
เวอร์ชันเคอร์เนล | แพทช์ Crypto และ 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 หรือสูงกว่า ให้เปิดใช้งานการตั้งค่าต่อไปนี้ในการกำหนดค่าเคอร์เนลของอุปกรณ์:
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 จำเป็นต้องมีการตั้งค่าเคอร์เนลที่แตกต่างกันเล็กน้อย เปิดใช้งานการตั้งค่าต่อไปนี้:
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 ให้เป็นขอบเขตเซกเตอร์ crypto
- 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
สำหรับ 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
หากมีการระบุไว้ ให้ลบออก เนื่องจากไม่จำเป็นสำหรับการเข้ารหัส 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 ในการทำงาน เมื่อต้องการใช้การตั้งค่านี้ พาร์ติชัน userdata ต้องเริ่มต้นที่ออฟเซ็ตบนดิสก์ที่จัดแนวขนาด 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 เร็วกว่าบนแพลตฟอร์มเหล่านั้น
สำหรับอุปกรณ์ที่ไม่มีคำสั่ง AES CPU เหล่านี้ Adiantum จะให้การเข้ารหัสบนอุปกรณ์ของคุณโดยมีค่าใช้จ่ายด้านประสิทธิภาพเพียงเล็กน้อย สำหรับตัวเลขการเปรียบเทียบ โปรดดู เอกสาร Adiantum หากต้องการให้ซอร์สการเปรียบเทียบทำงานบนฮาร์ดแวร์ของคุณ โปรดดู ซอร์ส Adiantum บน GitHub
หากต้องการเปิดใช้งาน Adiantum บนอุปกรณ์ที่ใช้ Android 9 ขึ้นไป คุณต้องทำการเปลี่ยนแปลงเคอร์เนลและการเปลี่ยนแปลงพื้นที่ผู้ใช้
การเปลี่ยนแปลงเคอร์เนล
Adiantum รองรับเคอร์เนลทั่วไปของ Android เวอร์ชัน 4.9 และสูงกว่า
หากเคอร์เนลของอุปกรณ์ของคุณไม่รองรับ Adiantum ให้เลือกการเปลี่ยนแปลงตามรายการด้านล่าง หากคุณประสบปัญหาในการเลือกเชอร์รี่ อุปกรณ์ที่ใช้ การเข้ารหัสทั้งดิสก์ (FDE) สามารถยกเว้น fscrypt:
patch ได้
เวอร์ชันเคอร์เนล | แพทช์ Crypto และ 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 หรือสูงกว่า ให้เปิดใช้งานการตั้งค่าต่อไปนี้ในการกำหนดค่าเคอร์เนลของอุปกรณ์:
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 จำเป็นต้องมีการตั้งค่าเคอร์เนลที่แตกต่างกันเล็กน้อย เปิดใช้งานการตั้งค่าต่อไปนี้:
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 ให้เป็นขอบเขตเซกเตอร์ crypto
- 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
สำหรับ 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
หากมีการระบุไว้ ให้ลบออก เนื่องจากไม่จำเป็นสำหรับการเข้ารหัส 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 ในการทำงาน เมื่อต้องการใช้การตั้งค่านี้ พาร์ติชัน userdata ต้องเริ่มต้นที่ออฟเซ็ตบนดิสก์ที่จัดแนวขนาด 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)"