Adiantum est une méthode de cryptage conçue pour les appareils exécutant Android 9 et versions ultérieures dont les processeurs ne disposent pas d'instructions AES . Si vous expédiez un appareil basé sur ARM avec des extensions de cryptographie ARMv8 ou un appareil basé sur x86 avec AES-NI, vous ne devez pas utiliser Adiantum. AES est plus rapide sur ces plateformes.
Pour les appareils dépourvus de ces instructions CPU AES, Adiantum fournit un cryptage sur votre appareil avec très peu de surcharge de performances. Pour les chiffres de référence, voir l' article d'Adiantum . Pour que la source d'analyse comparative s'exécute sur votre matériel, consultez la source Adiantum sur GitHub .
Pour activer Adiantum sur un appareil exécutant Android 9 ou version ultérieure, vous devez apporter des modifications au noyau et à l'espace utilisateur.
Modifications du noyau
Adiantum est pris en charge par les noyaux communs Android, version 4.9 et supérieure.
Si le noyau de votre appareil ne prend pas déjà en charge Adiantum, sélectionnez les modifications répertoriées ci-dessous. Si vous rencontrez des difficultés lors de la sélection, les appareils utilisant le chiffrement complet du disque (FDE) peuvent exclure le correctif fscrypt:
Version du noyau | Correctifs Crypto et fscrypt | correctif 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 |
Activez Adiantum dans votre noyau
Android 11 et supérieur
Si votre appareil démarre avec Android 11 ou une 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 démarre 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 cryptage 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 de l'espace utilisateur
Pour les appareils exécutant Android 10 ou version ultérieure, les modifications de l'espace utilisateur Adiantum sont déjà présentes.
Pour les appareils fonctionnant sous Android 9, sélectionnez les modifications suivantes :
- cryptfs : ajout du support d'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 crypto
- cryptfs : améliore la journalisation de la création de périphériques dm-crypt
- libfscrypt : Ajouter le support d'Adiantum
- fs_mgr_fstab : Ajouter le support d'Adiantum
Activez Adiantum sur votre appareil
Tout d’abord, assurez-vous que PRODUCT_SHIPPING_API_LEVEL
est correctement défini sur votre appareil pour correspondre à la version d’Android avec laquelle il est lancé. Par exemple, un appareil lancé avec Android 11 doit avoir PRODUCT_SHIPPING_API_LEVEL := 30
. Ceci est important car certains paramètres de chiffrement ont des valeurs par défaut différentes selon les versions de lancement.
Appareils avec cryptage basé sur les fichiers
Pour activer le chiffrement basé sur les fichiers Adiantum sur le stockage interne de votre appareil, ajoutez l'option suivante à la dernière colonne (la colonne fs_mgr_flags ) de la ligne de la partition userdata
dans le fichier fstab
de l'appareil :
fileencryption=adiantum
Si votre appareil est lancé avec Android 11 ou une version ultérieure, l'activation du cryptage des métadonnées est également requise. Pour utiliser Adiantum pour le chiffrement des métadonnées sur le stockage interne, le fs_mgr_flags pour userdata
doit également contenir les options suivantes :
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Ensuite, activez le cryptage Adiantum sur le stockage adoptable . 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éduira légèrement l'utilisation de la mémoire lorsque le cryptage des métadonnées Adiantum est utilisé. Avant de faire cela, vérifiez que l'option de montage inlinecrypt
n'est pas spécifiée dans le fstab
. S'il est spécifié, supprimez-le, car il n'est pas nécessaire pour le chiffrement Adiantum et entraîne des problèmes de performances lorsqu'il est utilisé en combinaison avec blk-crypto-fallback.num_keyslots=1
.
Pour vérifier que votre implémentation a fonctionné, rédigez un rapport de bug ou exécutez :
adb root
adb shell dmesg
Si Adiantum est correctement activé, vous devriez voir ceci 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 de sortie doit être xchacha12,aes-adiantum-plain64
.
Appareils avec cryptage complet du disque
Pour activer Adiantum et améliorer ses performances, définissez ces propriétés dans PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
La définition fde_sector_size
sur 4096 améliore les performances, mais n'est pas obligatoire pour qu'Adiantum fonctionne. Pour utiliser ce paramètre, la partition de données utilisateur doit commencer à un décalage aligné de 4 096 octets sur le disque.
Dans le fstab
, pour l'ensemble de données utilisateur :
forceencrypt=footer
Pour vérifier que votre implémentation a fonctionné, rédigez un rapport de bug ou exécutez :
adb root
adb shell dmesg
Si Adiantum est correctement activé, vous devriez voir ceci dans le journal du noyau :
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"