Adiantum'u Etkinleştirme

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:

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)"
,

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:

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)"