Adiantum'u etkinleştirin

Adiantum, Android 9 ve sonraki sürümleri çalıştıran ve CPU'larında AES talimatları bulunmayan cihazlar için tasarlanmış bir şifreleme yöntemidir. ARM tabanlı bir sistem yüklüyorsanız ARMv8 Şifreleme Uzantılarına sahip bir cihaz veya AES-NI yüklü x86 tabanlı bir cihaz, Adiantum'u kullanmamalısınız. AES, bu platformlarda daha hızlıdır.

Adiantum, bu AES CPU talimatları bulunmayan cihazlarda şifreleme sağlar. ek performans yükünüzü hafifletebilirsiniz. Karşılaştırma rakamları için Adiantum makalesini inceleyin. Karşılaştırma kaynağı için çalıştırmak için şuraya bakın: Adiantum kaynağı bulabilirsiniz.

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

Çekirdek değişiklikleri

Adiantum, Android ortak çekirdekleri (4.9 ve sonraki sürümler) tarafından desteklenir.

Cihazınızın çekirdeğinde Adiantum desteği yoksa aşağıda listelenen değişiklikler. Seçim yaparken sorun yaşıyorsanız tam disk şifrelemesi (FDE) kullanan cihazlar fscrypt: yamasını hariç tutabilir.

Çekirdek sürümü Şifreleme ve fscrypt yamaları dm-crypt yama
4.19 4.19 çekirdeği dm-crypt yama
4,14 4.14 çekirdek dm-crypt yama
4.9 4.9 çekirdek dm-crypt yama

Adiantum'u çekirdeğinizde etkinleştirme

Android 11 ve sonraki sürümler

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ızda 32 bit ARM çekirdeği çalışıyorsa aşağıdakileri yapmak için NEON talimatlarını da etkinleştirin: performansı artırmak için:

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ına ihtiyaç vardır. 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ızda 32 bit ARM çekirdeği çalışıyorsa aşağıdaki işlemler için NEON talimatlarını etkinleştirin: performansı artırmak için:

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 cihazlarda Adiantum kullanıcı alanı değişiklikleri zaten mevcuttur.

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

Cihazınızda Adiantum'u etkinleştirme

Öncelikle, cihazınızda PRODUCT_SHIPPING_API_LEVEL değerinin ayarlandığından emin olun eşleştirmesi için kullanabilirsiniz. Örneğin, Android 11 ile kullanıma sunulan bir cihazda PRODUCT_SHIPPING_API_LEVEL := 30 olmalıdır. Bu önemlidir çünkü şifreleme ayarlarının farklı lansman sürümlerinde farklı varsayılan değerleri vardır.

Dosya tabanlı şifreleme kullanılan cihazlar

Adiantum dosya tabanlı şifrelemeyi cihazınızın dahili depolama biriminde etkinleştirmek için son sütuna (fs_mgr_flags sütununda) userdata bölüm için fstab dosyası:

fileencryption=adiantum

Cihazınızda Android 11 veya sonraki bir sürüm yüklüyse meta veri şifrelemesi de zorunludur. Dahili depolama alanında meta veri şifreleme için Adiantum'u kullanmak istiyorsanız userdata için fs_mgr_flags aşağıdaki seçenekleri de içermelidir:

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

Ardından, kabul edilebilir depolama alanında Adiantum şifrelemesini etkinleştirin. Bunun için PRODUCT_PROPERTY_OVERRIDES içinde aşağıdaki sistem özelliklerini ayarlayın:

Android 11 ve sonraki sürümler 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 öğesini kernel komut satırını kullanın. Bu, Adiantum'un kullanıma sunulduğunda bellek kullanımını meta veri şifrelemesi kullanılır. Bunu yapmadan önce, inlinecrypt bağlama seçeneğinin fstab içinde belirtilmediğinden emin olun. Belirtilmişse Adiantum şifrelemesi için gerekli olmadığı ve blk-crypto-fallback.num_keyslots=1 ile birlikte kullanıldığında performans sorunlarına neden olduğu için kaldırın.

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

adb root
adb shell dmesg

Adiantum doğru şekilde etkinleştirildiyse çekirdek günlüğünde aşağıdakini görürsünüz:

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

Meta veri şifrelemeyi etkinleştirdiyseniz aşağıdaki komutu çalıştırarak da Adiantum meta veri şifrelemesi doğru şekilde etkinleştirildi:

adb root
adb shell dmctl table userdata

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

Tam disk şifreleme özelliğine sahip cihazlar

Adiantum'u etkinleştirmek ve performansını iyileştirmek için bu özellikleri PRODUCT_PROPERTY_OVERRIDES:

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

fde_sector_size değerini 4096 olarak ayarlamak performansı iyileştirir ancak Adiantum'un çalışması için gerekli değildir. Bu ayarı kullanmak için kullanıcı verisi bölümü olması gerekir.

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

forceencrypt=footer

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

adb root
adb shell dmesg

Adiantum doğru şekilde etkinleştirildiyse çekirdek günlüğünde şunu görürsünüz:

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