Adiantum'u Etkinleştirme

Adiantum olan CPU'lar eksikliği Android 9 çalıştıran ve üstü cihazlarda için tasarlanmış bir şifreleme yöntemidir AES talimatları. Eğer ARMv8 Kriptografi Uzantılarıyla bir ARM tabanlı cihaz veya AES-NI ile x86 tabanlı cihaz gönderiyorsanız, sen 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. Benchmarking numaraları için, bkz Adiantum kağıdı . Donanımınıza çalıştırmak için benchmarking kaynağı için bkz GitHub'dan Adiantum kaynağı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. Eğer sorun kiraz toplama yaşıyorsanız kullanarak cihazlar tam disk şifreleme (FDE) tutabiliriz fscrypt: yama.

Çekirdek sürümü Kripto 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 ü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 üzeri çalıştıran cihazlarda, Adiantum userspace değişiklikleri zaten mevcuttur.

Android 9 çalıştıran cihazlar için aşağıdaki değişiklikleri kesin olarak seçin:

Adiantum'u cihazınızda etkinleştirin

Birincisi, cihazınız sahip olmasını sağlamak PRODUCT_SHIPPING_API_LEVEL onunla başlatıyor Android sürüm eşleşmesi için doğru ayarlanmış. Örneğin, Android 11 sahip bir cihaz fırlatma olması gerekir PRODUCT_SHIPPING_API_LEVEL := 30 . 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 Adiantum dosya tabanlı şifrelemeyi etkinleştirmek için, satırının son sütuna aşağıdaki seçeneği (fs_mgr_flags sütun) ekleyin userdata cihazın içinde bölüm fstab dosyasında:

fileencryption=adiantum

Cihazınız Android 11 veya daha yüksek olan başlatıyor, sonra meta veri şifreleme sağlayan da gereklidir. Dahili depolama meta veri şifreleme için adiantum kullanmak için Yine fs_mgr_flags userdata aşağıdaki seçenekleri de içermelidir:

metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption

Daha sonra, üzerine Adiantum şifrelemeyi etkinleştirmek uyarlanamıyor depolama . Bunu yapmak için, aşağıdaki sistem özelliklerini ayarlayabilirsiniz PRODUCT_PROPERTY_OVERRIDES :

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 ekleme blk-crypto-fallback.num_keyslots=1 çekirdek komut hattına. Bu, Adiantum meta veri şifrelemesi kullanıldığında bellek kullanımını biraz azaltacaktır. Bunu yapmadan önce, doğrulamak inlinecrypt montaj seçeneği belirtilmedi fstab . Bu belirtilirse bu Adiantum şifreleme için gerekli değildir, çünkü, bu, kaldırma ve kombinasyon halinde kullanıldıklarında performans sorunlara neden blk-crypto-fallback.num_keyslots=1 .

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

Çıkış Üçüncü alan olmalıdır xchacha12,aes-adiantum-plain64 .

Tam disk şifrelemeli cihazlar

Adiantum etkinleştirmek ve performansını artırmak için, bu özellikleri ayarlamak PRODUCT_PROPERTY_OVERRIDES :

ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

Ayar fde_sector_size 4096 performansını artırır, ancak işe adiantum 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.

In fstab userdata kümesi 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)"