Adiantum'u Etkinleştirme

Adiantum, CPU'larında AES talimatları bulunmayan Android 9 ve sonraki sürümleri çalıştıran cihazlar için tasarlanmış bir şifreleme yöntemidir. Eğer ARMv8 Kriptografi Uzantılarıyla bir ARM tabanlı cihaz veya AES-NI ile x86 tabanlı cihaz gönderiyorsanız, sen adiantum kullanmamalısınız. AES, bu platformlarda daha hızlıdır.

Adiantum, bu AES CPU talimatlarından yoksun cihazlar için çok az performans ek yükü ile cihazınızda şifreleme sağlar. Karşılaştırma sayıları için Adiantum makalesine bakın . Donanımınızda çalışacak kıyaslama kaynağı için GitHub'daki Adiantum kaynağına bakın.

Adiantum'u Android 9 veya üzeri çalıştıran bir cihazda etkinleştirmek için çekirdek değişiklikleri ve kullanıcı alanı değişiklikleri yapmanız gerekir.

Çekirdek değişiklikleri

Adiantum, Android ortak çekirdekler, sürüm 4.9 ve üzeri tarafından desteklenir.

Cihazınızın çekirdeğinde Adiantum desteği yoksa aşağıda listelenen değişiklikleri seçin. fscrypt: sorun yaşıyorsanız, tam disk şifrelemesini (FDE) kullanan cihazlar fscrypt: hariç tutabilir.

Çekirdek sürümü Kripto ve fscrypt yamaları dm-crypt yaması
4.19 4.19 çekirdek dm-crypt yaması
4.14 4.14 çekirdek dm-crypt yaması
4.9 4.9 çekirdek dm-crypt yaması

Çekirdeğinizde Adiantum'u etkinleştirin

Android 11 ve üstü

Cihazınız Android 11 veya sonraki bir sürümle başlatılıyorsa, cihazınızın çekirdek yapılandırmasında aşağıdaki ayarları etkinleştirin:

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

Cihazınız 32 bitlik bir ARM çekirdeği çalıştırıyorsa performansı artırmak için NEON talimatlarını da etkinleştirin:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

Android 9 ve 10

Cihazınız Android 9 veya 10 ile başlatılıyorsa, biraz farklı çekirdek yapılandırma ayarları gerekir. Aşağıdaki ayarları etkinleştirin:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_DM_CRYPT=y

Cihazınız dosya tabanlı şifreleme kullanıyorsa şunları da etkinleştirin:

CONFIG_F2FS_FS_ENCRYPTION=y

Son olarak, cihazınız 32 bitlik bir ARM çekirdeği çalıştırıyorsa performansı artırmak için NEON talimatlarını etkinleştirin:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

Kullanıcı alanı değişiklikleri

Android 10 veya sonraki sürümleri çalıştıran cihazlar için, Adiantum kullanıcı alanı değişiklikleri zaten mevcuttur.

Android 9 çalıştıran cihazlar için aşağıdaki değişiklikleri seçin:

Cihazınızda Adiantum'u etkinleştirin

Öncelikle, cihazınızın başlattığı Android sürümüyle eşleşecek şekilde PRODUCT_SHIPPING_API_LEVEL ayarının doğru yapıldığından emin olun. Örneğin, Android 11 ile başlatılan bir cihazda PRODUCT_SHIPPING_API_LEVEL := 30 . Bu önemlidir çünkü bazı şifreleme ayarları, farklı başlatma sürümlerinde farklı varsayılanlara sahiptir.

Dosya tabanlı şifrelemeli cihazlar

Cihazınızın dahili depolama Adiantum dosya tabanlı şifrelemeyi etkinleştirmek için, satırının son sütuna aşağıdaki seçeneği (fs_mgr_flags sütun) ekleyin userdata cihazın içinde bölüm fstab dosyasında:

fileencryption=adiantum

Cihazınız Android 11 veya sonraki bir sürümle başlatılıyorsa, meta veri şifrelemesinin etkinleştirilmesi de gerekir. Dahili depolama meta veri şifreleme için adiantum kullanmak için Yine fs_mgr_flags userdata aşağıdaki seçenekleri de içermelidir:

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

Ardından, benimsenebilir depolamada Adiantum şifrelemesini etkinleştirin. Bunu yapmak için, PRODUCT_PROPERTY_OVERRIDES içinde aşağıdaki sistem özelliklerini ayarlayın:

Android 11 ve üstü için:

ro.crypto.volume.options=adiantum
ro.crypto.volume.metadata.encryption=adiantum

Android 9 ve 10 için:

ro.crypto.volume.contents_mode=adiantum
ro.crypto.volume.filenames_mode=adiantum
ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

Son olarak, isteğe bağlı olarak blk-crypto-fallback.num_keyslots=1 çekirdek komut satırına ekleyin. Bu, Adiantum meta veri şifrelemesi kullanıldığında bellek kullanımını biraz azaltacaktır. Bunu yapmadan önce, doğrulamak inlinecrypt montaj seçeneği belirtilmedi fstab . Belirtilmişse, Adiantum şifrelemesi için gerekli olmadığından kaldırın ve blk-crypto-fallback.num_keyslots=1 ile birlikte kullanıldığında performans sorunlarına neden olur.

Uygulamanızın çalıştığını doğrulamak için bir hata raporu alın veya çalıştırın:

adb root
adb shell dmesg

Adiantum doğru bir şekilde etkinleştirildiyse, bunu çekirdek günlüğünde görmelisiniz:

fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"

Meta veri şifrelemeyi etkinleştirdiyseniz, Adiantum meta veri şifrelemesinin doğru şekilde etkinleştirildiğini doğrulamak için aşağıdakileri de çalıştırın:

adb root
adb shell dmctl table userdata

Çıktının üçüncü alanı xchacha12,aes-adiantum-plain64 .

Tam disk şifrelemeli cihazlar

Adiantum'u etkinleştirmek ve performansını artırmak için şu özellikleri PRODUCT_PROPERTY_OVERRIDES içinde ayarlayın:

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

fde_sector_size değerini 4096 olarak ayarlamak performansı artırır, ancak Adiantum'un çalışması için gerekli değildir. Bu ayarı kullanmak için, kullanıcı verileri bölümü disk üzerinde 4096 bayt hizalı bir uzaklıktan başlamalıdır.

fstab , kullanıcı veri kümesi için:

forceencrypt=footer

Uygulamanızın çalıştığını doğrulamak için bir hata raporu alın veya çalıştırın:

adb root
adb shell dmesg

Adiantum doğru bir şekilde etkinleştirildiyse, bunu çekirdek günlüğünde görmelisiniz:

device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"