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. ARMv8 Şifreleme Uzantılarına sahip ARM tabanlı bir cihaz veya AES-NI'ye sahip x86 tabanlı bir cihaz gönderiyorsanız Adiantum'u 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 ek yüküyle cihazınızda şifreleme sağlar. Karşılaştırmalı rakamlar için Adiantum makalesine bakın. Donanımınızda çalıştırılacak kıyaslama kaynağı için GitHub'daki Adiantum kaynağına bakın.
Android 9 veya üzerini çalıştıran bir cihazda Adiantum'u 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 üzeri tarafından desteklenir.
Cihazınızın çekirdeğinde halihazırda Adiantum desteği yoksa aşağıda listelenen değişiklikleri dikkatle seçin. Seçim yapma konusunda sorun yaşıyorsanız, 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ı |
Adiantum'u çekirdeğinizde etkinleştirin
Android 11 ve üzeri
Cihazınız Android 11 veya üzeri 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ı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ı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 üzerini çalıştıran cihazlarda 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 yuvarlayın
- cryptfs: dm-crypt cihazı oluşturma işleminin günlüğe kaydedilmesini iyileştirin
- libfscrypt: Adiantum desteği ekleyin
- fs_mgr_fstab: Adiantum desteği ekleyin
Cihazınızda Adiantum'u etkinleştirin
Öncelikle, cihazınızın başlatıldığı Android sürümüyle eşleşecek şekilde PRODUCT_SHIPPING_API_LEVEL
ayarının doğru olduğundan emin olun. Örneğin, Android 11 ile başlatılan bir cihazın PRODUCT_SHIPPING_API_LEVEL := 30
sahip olması gerekir. 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 depolama alanında Adiantum dosya tabanlı şifrelemeyi etkinleştirmek için, cihazın fstab
dosyasındaki userdata
bölümüne ilişkin satırı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 şifrelemeyi de etkinleştirmeniz gerekir. Dahili depolamada meta veri şifrelemesi amacıyla Adiantum'u kullanmak için userdata
yönelik fs_mgr_flags'ın aşağıdaki seçenekleri de içermesi gerekir:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Ardından, benimsenebilir depolama alanında Adiantum şifrelemesini etkinleştirin. Bunu yapmak için PRODUCT_PROPERTY_OVERRIDES
aşağıdaki sistem özelliklerini ayarlayın:
Android 11 ve üzeri 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ı bir miktar azaltacaktır. Bunu yapmadan önce, inlinecrypt
bağlama seçeneğinin fstab
belirtilmediğini doğrulayın. Belirtilmişse, Adiantum şifrelemesi için gerekli olmadığından ve blk-crypto-fallback.num_keyslots=1
ile birlikte kullanıldığında performans sorunlarına neden olacağından onu kaldırın.
Uygulamanızın çalıştığını doğrulamak için bir hata raporu alın veya şunu çalıştırın:
adb root
adb shell dmesg
Adiantum doğru şekilde etkinleştirildiyse çekirdek günlüğünde şunu görmelisiniz:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Meta veri şifrelemesini 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
olmalıdır.
Tam disk şifrelemeli cihazlar
Adiantum'u etkinleştirmek ve performansını artırmak için şu özellikleri PRODUCT_PROPERTY_OVERRIDES
bölümünde ayarlayın:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
fde_sector_size
4096'ya 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 diskteki 4096 baytlık hizalanmış konumla başlaması gerekir.
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 şunu çalıştırın:
adb root
adb shell dmesg
Adiantum doğru şekilde etkinleştirildiyse çekirdek günlüğünde şunu görmelisiniz:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"