Adiantum est une méthode de chiffrement conçue pour les appareils équipés d'Android 9 ou version ultérieure dont le processeur ne dispose pas d'instructions AES. Si vous expédiez un appareil basé sur ARM avec les extensions de chiffrement ARMv8 ou un appareil basé sur x86 avec AES-NI, vous ne devez pas utiliser Adiantum. L'AES est plus rapide sur ces plates-formes.
Pour les appareils dépourvus de ces instructions AES pour le processeur, Adiantum fournit un chiffrement sur votre appareil avec un impact très faible sur les performances. Pour obtenir des chiffres de référence, consultez l'article sur Adiantum. Pour que la source de benchmarking s'exécute sur votre matériel, consultez la source Adiantum sur GitHub.
Pour activer Adiantum sur un appareil équipé d'Android 9 ou version ultérieure, vous devez modifier le noyau et l'espace utilisateur.
Modifications du noyau
Adiantum est compatible avec les noyaux communs Android, version 4.9 et ultérieures.
Si le noyau de votre appareil ne prend pas déjà en charge Adiantum, sélectionnez les modifications listées ci-dessous. Si vous rencontrez des difficultés pour sélectionner des commits, les appareils utilisant le chiffrement de disque complet (FDE) peuvent exclure le correctif fscrypt:
.
Version de noyau | Correctifs crypto et fscrypt | Patch dm-crypt |
---|---|---|
4.19 | Noyau 4.19 | Correctif dm-crypt
|
4.14 | Noyau 4.14 | Correctif dm-crypt
|
4.9 | Noyau 4.9 | Correctif dm-crypt
|
Activer Adiantum dans votre noyau
Android 11 ou version ultérieure
Si votre appareil est lancé avec Android 11 ou version ultérieure, activez les paramètres suivants dans la configuration du noyau de votre appareil :
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
Si votre appareil exécute un noyau ARM 32 bits, activez également les instructions NEON pour améliorer les performances :
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 et 10
Si votre appareil est lancé avec Android 9 ou 10, des paramètres de configuration du noyau légèrement différents sont nécessaires. Activez les paramètres suivants :
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
Si votre appareil utilise le chiffrement basé sur les fichiers, activez également :
CONFIG_F2FS_FS_ENCRYPTION=y
Enfin, si votre appareil exécute un noyau ARM 32 bits, activez les instructions NEON pour améliorer les performances :
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Modifications apportées à l'espace utilisateur
Pour les appareils équipés d'Android 10 ou version ultérieure, les modifications de l'espace utilisateur Adiantum sont déjà présentes.
Pour les appareils sous Android 9, sélectionnez les modifications suivantes :
- cryptfs : ajouter la compatibilité avec Adiantum
- cryptfs : autoriser la définition de la taille du secteur dm-crypt
- cryptfs : arrondir la taille du périphérique dm-crypt à la limite du secteur de chiffrement
- cryptfs : améliorer la journalisation de la création de périphériques dm-crypt
- libfscrypt : ajout de la compatibilité avec Adiantum
- fs_mgr_fstab : ajouter la prise en charge d'Adiantum
Activer Adiantum sur votre appareil
Tout d'abord, assurez-vous que PRODUCT_SHIPPING_API_LEVEL
est correctement défini pour correspondre à la version d'Android avec laquelle il est lancé. Par exemple, un appareil lancé avec Android 11 doit disposer de PRODUCT_SHIPPING_API_LEVEL := 30
. C'est important, car certains paramètres de chiffrement ont des valeurs par défaut différentes selon les versions de lancement.
Appareils avec chiffrement basé sur les fichiers
Pour activer le chiffrement Adiantum basé sur les fichiers sur la mémoire interne de votre appareil, ajoutez l'option suivante à la dernière colonne (colonne fs_mgr_flags) de la ligne correspondant à la partition userdata
dans le fichier fstab
de l'appareil :
fileencryption=adiantum
Si votre appareil est équipé d'Android 11 ou version ultérieure, vous devez également activer le chiffrement des métadonnées. Pour utiliser Adiantum pour le chiffrement des métadonnées sur le stockage interne, les fs_mgr_flags pour userdata
doivent également contenir les options suivantes :
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Ensuite, activez le chiffrement Adiantum sur l'espace de stockage pouvant être adopté. Pour ce faire, définissez les propriétés système suivantes dans PRODUCT_PROPERTY_OVERRIDES
:
Pour Android 11 et versions ultérieures :
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Pour Android 9 et 10 :
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Enfin, ajoutez éventuellement blk-crypto-fallback.num_keyslots=1
à la ligne de commande du noyau. Cela réduit légèrement l'utilisation de la mémoire lorsque le chiffrement des métadonnées Adiantum est utilisé. Avant de le faire, vérifiez que l'option de montage inlinecrypt
n'est pas spécifiée dans fstab
.
Si elle est spécifiée, supprimez-la, car elle n'est pas nécessaire pour le chiffrement Adiantum et elle entraîne des problèmes de performances lorsqu'elle est utilisée en combinaison avec blk-crypto-fallback.num_keyslots=1
.
Pour vérifier que votre implémentation a fonctionné, générez un rapport de bug ou exécutez la commande suivante :
adb root
adb shell dmesg
Si Adiantum est correctement activé, le message suivant doit s'afficher dans le journal du noyau :
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Si vous avez activé le chiffrement des métadonnées, exécutez également la commande suivante pour vérifier que le chiffrement des métadonnées Adiantum est correctement activé :
adb root
adb shell dmctl table userdata
Le troisième champ du résultat doit être xchacha12,aes-adiantum-plain64
.
Appareils avec chiffrement complet du disque
Pour activer Adiantum et améliorer ses performances, définissez les propriétés suivantes dans PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Définir fde_sector_size
sur 4096 améliore les performances, mais n'est pas nécessaire pour qu'Adiantum fonctionne. Pour utiliser ce paramètre, la partition userdata doit commencer à un décalage aligné sur 4 096 octets sur le disque.
Dans fstab
, définissez userdata sur :
forceencrypt=footer
Pour vérifier que votre implémentation a fonctionné, générez un rapport de bug ou exécutez la commande suivante :
adb root
adb shell dmesg
Si Adiantum est correctement activé, le message suivant doit s'afficher dans le journal du noyau :
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"