Activer Adiantum

Adiantum est une méthode de cryptage conçu pour les appareils fonctionnant sous Android 9 et plus dont les processeurs manquent AES instructions. Si vous expédiez un dispositif à base d' ARM avec ARMv8 Cryptography Extensions ou un dispositif basé sur x86 avec AES-NI, vous ne devriez pas utiliser Adiantum. AES est plus rapide sur ces plates-formes.

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 connaître les numéros d' étalonnage, voir le papier Adiantum . Pour la source d' étalonnage pour fonctionner sur votre matériel, consultez la source de Adiantum sur GitHub .

Pour activer Adiantum sur un appareil exécutant Android 9 ou supérieur, 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 éprouvez des problèmes picorage, les appareils utilisant le chiffrement complet du fscrypt: disque (FDE) peut exclure le fscrypt: patch.

Version du noyau Correctifs crypto et fscrypt dm-crypt Patch
4.19 4.19 noyau dm-crypt Patch
4.14 4.14 noyau dm-crypt Patch
4.9 noyau 4.9 dm-crypt Patch

Activer Adiantum dans votre noyau

Android 11 et supérieur

Si votre appareil est lancé 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 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 de l'espace utilisateur

Pour les appareils fonctionnant sous Android 10 ou plus, les modifications de l' espace utilisateur Adiantum sont déjà présents.

Pour les appareils fonctionnant sous Android 9, sélectionnez les modifications suivantes :

Activer Adiantum sur votre appareil

Tout d' abord, assurez -vous que votre appareil a PRODUCT_SHIPPING_API_LEVEL correctement réglé sur la version Android , il lance avec. Par exemple, un lancement de l' appareil avec Android 11 doit avoir PRODUCT_SHIPPING_API_LEVEL := 30 . Ceci est important car certains des paramètres de cryptage ont des valeurs par défaut différentes selon les versions de lancement.

Appareils avec chiffrement basé sur les fichiers

Pour activer le chiffrement basé sur des fichiers Adiantum sur le stockage interne de l' appareil, ajoutez l'option suivante à la dernière colonne (la colonne fs_mgr_flags) de la ligne de la userdata partition du périphérique fstab fichier:

fileencryption=adiantum

Si votre appareil lance avec Android 11 ou plus, puis d' activer le cryptage des métadonnées est également nécessaire. 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 le stockage adoptable . Pour ce faire, définissez les propriétés système suivantes en 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, le cas échéant ajouter 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 chiffrement des métadonnées Adiantum est utilisé. Avant de le faire, vérifiez que la inlinecrypt option de montage ne soit pas spécifié dans le fstab . S'il est spécifié, retirez - le, car il n'est pas nécessaire pour le chiffrement Adiantum, et il provoque des problèmes de performance lorsqu'il est utilisé en combinaison avec blk-crypto-fallback.num_keyslots=1 .

Pour vérifier que votre implémentation a fonctionné, enregistrez un rapport de bogue ou exécutez :

adb root
adb shell dmesg

Si Adiantum est activé correctement, 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 la production devrait être xchacha12,aes-adiantum-plain64 .

Appareils avec chiffrement intégral du disque

Pour activer Adiantum et d' améliorer ses performances, définir ces propriétés dans PRODUCT_PROPERTY_OVERRIDES :

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

Réglage fde_sector_size 4096 améliore les performances, mais pas nécessaire pour Adiantum au travail. Pour utiliser ce paramètre, la partition userdata doit commencer à un décalage aligné de 4096 octets sur le disque.

Dans le fstab , pour voir userdata:

forceencrypt=footer

Pour vérifier que votre implémentation a fonctionné, enregistrez un rapport de bogue ou exécutez :

adb root
adb shell dmesg

Si Adiantum est activé correctement, vous devriez voir ceci dans le journal du noyau :

device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"