Adiantum, Android 9 ve sonraki sürümleri çalıştıran ve CPU'larında AES talimatları olmayan cihazlar için tasarlanmış bir şifreleme yöntemidir. ARMv8 Şifreleme Uzantılarına sahip ARM tabanlı bir cihaz veya AES-NI'ye sahip x86 tabanlı bir cihaz gönderiyorsanız, Adiantum kullanmamalısınız . AES bu platformlarda daha hızlıdır.
Bu AES CPU talimatlarına sahip olmayan cihazlar için Adiantum, çok az performans yükü ile cihazınızda şifreleme sağlar. Kıyaslama numaraları için Adiantum belgesine 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 sonraki bir sürümü ç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 çekirdekleri, sürüm 4.9 ve üstü tarafından desteklenir.
Cihazınızın çekirdeği zaten Adiantum desteğine sahip değilse, aşağıda listelenen değişiklikleri kesin olarak seçin. Tam disk şifreleme (FDE) kullanan cihazlar fscrypt:
yamasını 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 bit 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
Android9 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 bit 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 özenle seçin:
- cryptfs: Adiantum desteği ekleyin
- cryptfs: dm-crypt sektör boyutunun ayarlanmasına izin ver
- cryptfs: dm-crypt cihaz boyutunu kripto sektörü sınırına yuvarlar
- cryptfs: dm-crypt cihaz oluşturmanın günlüğe kaydedilmesini iyileştirin
- libfscrypt: Adiantum desteği ekleyin
- fs_mgr_fstab: Adiantum desteği ekleyin
Adiantum'u cihazınızda etkinleştirin
Öncelikle, cihazınızın PRODUCT_SHIPPING_API_LEVEL
başlatıldığı Android sürümüyle eşleşecek şekilde doğru şekilde ayarlandığından emin olun. Örneğin, Android 11 ile başlatılan bir cihazda PRODUCT_SHIPPING_API_LEVEL := 30
olmalıdır. Bu önemlidir çünkü bazı şifreleme ayarları farklı başlatma sürümlerinde farklı varsayılanlara sahiptir.
Dosya tabanlı şifrelemeye sahip cihazlar
Cihazınızın dahili deposunda Adiantum dosya tabanlı şifrelemeyi etkinleştirmek için, cihazın fstab
dosyasındaki userdata
bölümü satırının son sütununa ( fs_mgr_flags sütunu) aşağıdaki seçeneği ekleyin:
fileencryption=adiantum
Cihazınız Android 11 veya sonraki bir sürümle başlatılıyorsa meta veri şifrelemesinin de etkinleştirilmesi gerekir. Adiantum'u dahili depolamada meta veri şifrelemesi için kullanmak için, userdata
için fs_mgr_flags ayrıca aşağıdaki seçenekleri içermelidir:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Ardından, kabul edilebilir 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, çekirdek komut satırına blk-crypto-fallback.num_keyslots=1
ekleyin. Bu, Adiantum meta veri şifrelemesi kullanıldığında bellek kullanımını biraz azaltacaktır. Bunu yapmadan önce, inlinecrypt
mount seçeneğinin fstab
içinde belirtilmediğini doğrulayın. Belirtilmişse kaldırın, çünkü Adiantum şifrelemesi için gerekli değildir 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 ş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ı iyileştirmek için PRODUCT_PROPERTY_OVERRIDES
içinde şu özellikleri ayarlayın:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
fde_sector_size
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ünün disk üzerinde 4096 bayt hizalı bir ofset ile başlaması gerekir.
fstab
içinde, userdata seti 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 ş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)"