Adiantum è un metodo di crittografia progettato per i dispositivi con Android 9 e versioni successive le cui CPU non dispongono Istruzioni AES. Se spedisci un dispositivo ARM un dispositivo con estensioni di crittografia ARMv8 o un dispositivo basato su x86 con AES-NI, non devi usare Adiantum. L'algoritmo AES è più veloce piattaforme di terze parti.
Per i dispositivi privi di queste istruzioni per le CPU AES, Adiantum fornisce la crittografia del tuo dispositivo con un overhead delle prestazioni molto ridotto. Per i valori di riferimento, consulta l'articolo di Adiantum. Per la fonte di benchmarking per l'esecuzione sul tuo hardware, consulta Sorgente Adiantum su GitHub.
Per attivare Adiantum su un dispositivo con Android 9 o versioni successive, devi: modifiche al kernel e allo spazio utente.
Modifiche kernel
Adiantum è supportato dai kernel comuni Android, versione 4.9 e successive.
Se il kernel del tuo dispositivo non dispone già del supporto di Adiantum, seleziona il
sono elencate di seguito. Se hai difficoltà nella scelta, i dispositivi che utilizzano la crittografia dell'intero disco (FDE) possono escludere
la patch fscrypt:
.
Versione kernel | Patch di crittografia e fscrypt | Patch di dm-crypt |
---|---|---|
4,19 | Kinel 4.19 | Patch dm-crypt
|
4,14 | Kinel 4.14 | Patch dm-crypt
|
4,9 | Keler 4.9 | Patch dm-crypt
|
Abilita Adiantum nel tuo kernel
Android 11 e versioni successive
Se il tuo dispositivo viene lanciato con Android 11 o versioni successive: abilita le seguenti impostazioni nella configurazione del kernel del dispositivo:
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
Se il tuo dispositivo esegue un kernel ARM a 32 bit, abilita anche le istruzioni NEON per migliorare il rendimento:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 e 10
Se il tuo dispositivo viene lanciato con Android 9 o 10, quindi una configurazione del kernel leggermente diversa impostazioni necessarie. Attiva le seguenti impostazioni:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
Se il dispositivo utilizza la crittografia basata su file, attiva anche:
CONFIG_F2FS_FS_ENCRYPTION=y
Infine, se il tuo dispositivo esegue un kernel ARM a 32 bit, abilita le istruzioni NEON per migliorare il rendimento:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Modifiche dello spazio utente
Per i dispositivi con Android 10 o versioni successive, le modifiche allo spazio utente Adiantum sono già presenti.
Per i dispositivi con Android 9, scegli la le seguenti modifiche:
- cryptfs: aggiungi il supporto di Adiantum
- cryptfs: consenti l'impostazione delle dimensioni del settore dm-crypt
- cryptfs: arrotonda le dimensioni del dispositivo con crittografia Dm ai confini del settore crittografico
- cryptfs: migliora il logging della creazione di dispositivi con crittografia Dm
- libfscrypt: aggiungi il supporto di Adiantum
- fs_mgr_fstab: aggiungi il supporto di Adiantum
Attiva Adiantum sul tuo dispositivo
Innanzitutto, assicurati che sul dispositivo sia impostato PRODUCT_SHIPPING_API_LEVEL
in modo che corrisponda alla versione di Android con cui viene avviata l'app. Ad esempio, un
dispositivo che viene lanciato con Android 11 deve avere
PRODUCT_SHIPPING_API_LEVEL := 30
. Questo è importante perché
le impostazioni di crittografia hanno valori predefiniti diversi nelle varie versioni di avvio.
Dispositivi con crittografia basata su file
Per attivare la crittografia basata su file di Adiantum nella memoria interna del dispositivo, aggiungi
la seguente opzione all'ultima colonna (fs_mgr_flags
colonna) della riga per la partizione userdata
nel file
fstab
file:
fileencryption=adiantum
Se il tuo dispositivo viene lanciato con Android 11 o versioni successive:
quindi l'attivazione
della crittografia dei metadati. Come utilizzare Adiantum per i metadati
sulla memoria interna, fs_mgr_flags per
userdata
deve contenere anche le seguenti opzioni:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
A questo punto, attiva la crittografia Adiantum nello spazio di archiviazione adottabile. Per farlo, imposta il parametro
seguenti proprietà di sistema in PRODUCT_PROPERTY_OVERRIDES
:
Per Android 11 e versioni successive:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Per Android 9 e 10:
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096di Gemini Advanced.
Infine, aggiungi facoltativamente blk-crypto-fallback.num_keyslots=1
al
alla riga di comando del kernel. Ciò ridurrà leggermente l'utilizzo della memoria quando Adiantum
la crittografia dei metadati. Prima di eseguire questa operazione, verifica che
L'opzione di montaggio inlinecrypt
non è specificata in fstab
.
Se specificato, rimuovilo, dato che non è necessario per la crittografia Adiantum.
e causa problemi di prestazioni se utilizzato in combinazione con
blk-crypto-fallback.num_keyslots=1
.
Per verificare che l'implementazione sia andata a buon fine, esegui una segnalazione di bug o esegui:
adb root
adb shell dmesg
Se Adiantum è abilitato correttamente, dovresti vedere questo nel log del kernel:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Se hai abilitato la crittografia dei metadati, esegui anche il codice seguente per verificare che La crittografia dei metadati Adiantum sia abilitata correttamente:
adb root
adb shell dmctl table userdata
Il terzo campo dell'output dovrebbe
xchacha12,aes-adiantum-plain64
.
Dispositivi con crittografia dell'intero disco
Per attivare Adiantum e migliorarne le prestazioni, imposta queste proprietà in
PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
L'impostazione di fde_sector_size
su 4096 migliora le prestazioni, ma non lo è
necessaria per il funzionamento di Adiantum. Per utilizzare questa impostazione, la partizione dei dati utente deve
iniziano con un offset su disco allineato a 4096 byte.
In fstab
, per il set di dati utente:
forceencrypt=footer
Per verificare che l'implementazione sia andata a buon fine, esegui una segnalazione di bug o esegui:
adb root
adb shell dmesg
Se Adiantum è abilitato correttamente, dovresti vedere questo nel log del kernel:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"