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:
- cryptfs: Adiantum desteği ekle
- cryptfs: dm-crypt sektör boyutunun ayarlanmasına izin ver
- cryptfs: dm-crypt cihazın boyutunu kripto sektörü sınırına yuvarla
- cryptfs: dm-crypt cihaz oluşturma işleminin günlük kaydını iyileştirme
- libfscrypt: Adiantum desteği ekleme
- fs_mgr_fstab: Adiantum desteği ekle
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)"