Adiantum'u Etkinleştirme

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

Adiantum, bu AES CPU talimatları bulunmayan cihazlarda şifreleme sağlar. ek performans yüküyle kullanmaya devam edebilirsiniz. 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 sürümleri çalıştıran bir cihazda Adiantum'u etkinleştirmek için: çekirdek değişiklikleri ve kullanıcı alanı değişiklikleri hakkında bilgi edinin.

Çekirdek değişiklikleri

Adiantum, Android'in 4.9 ve sonraki yaygın çekirdekleri tarafından desteklenir.

Cihazınızın çekirdeğinde Adiantum desteği yoksa aşağıda listelenen değişiklikler. Satın alma konusunda sorun yaşıyorsanız tam disk şifrelemesi (FDE) kullanan cihazlar fscrypt: yamasına sahipler.

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

Çekirdeğinizde Adiantum'u etkinleştirin

Android 11 ve sonraki sürümler

Cihazınızda Android 11 veya sonraki bir sürüm yüklüyse 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ızda Android 9 veya 10, daha sonra ise biraz farklı çekirdek yapılandırması gerekli ayarları yapın. Aşağıdaki ayarları etkinleştirin:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_DM_CRYPT=y
.

Cihazınızda dosya tabanlı şifreleme kullanılı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 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şiklikler:

Cihazınızda Adiantum'u etkinleştirin

Ö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 cihazda PRODUCT_SHIPPING_API_LEVEL := 30 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. Meta veriler için Adiantum kullanmak istiyorsanız fs_mgr_flags, userdata 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. Bunu yapmak için, PRODUCT_PROPERTY_OVERRIDES içindeki şu sistem özellikleri:

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
. ziyaret edin.

Son olarak, isteğe bağlı olarak blk-crypto-fallback.num_keyslots=1 öğesini kernel komut satırını kullanın. Bu özellik, Adiantum'un kullanıma sunulduğunda bellek kullanımını meta veri şifrelemesi kullanılır. Bunu yapmadan önce fstab içinde inlinecrypt ekleme seçeneği belirtilmemiş. Belirtilmişse bunu kaldırın. Adiantum şifrelemesi için gerekli değildir. ile birlikte kullanıldığında performans sorunlarına neden olur. blk-crypto-fallback.num_keyslots=1

Uygulamanızın çalıştığını doğrulamak için hata raporu alın veya aşağıdaki komutu ç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

Çıkışın üçüncü alanı şöyle olmalıdır: xchacha12,aes-adiantum-plain64

Tam disk şifrelemesi kullanılan 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ğerinin 4096 olarak ayarlanması performansı artırır ancak gereklidir. Bu ayarı kullanmak için kullanıcı verisi bölümü olması gerekir.

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

forceencrypt=footer

Uygulamanızın çalıştığını doğrulamak için hata raporu alın veya aşağıdaki komutu ç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:

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