10 votes

Comment crypter votre appareil fonctionnant sous CyanogenMod 12.1 ?

CyanogenMod 12 et 12.1 Le paramètre "Crypter le téléphone" ne fonctionne pas et ce, depuis un certain temps. Existe-t-il un moyen de crypter le téléphone d'une autre manière ? CM peut-il être chargé sur un téléphone avec un répertoire /data crypté ? Y a-t-il d'autres moyens de garder vos données en sécurité et en bon état ? L'appareil sur lequel je travaille est un LG G3 de Verizon.

6voto

Lekensteyn Points 1552

Il existe des commandes de bas niveau qui peuvent être utilisées dans un shell pour crypter votre partition de données utilisateur. Avertissement : les instructions suivantes effacera vos données assurez-vous de faire une sauvegarde si nécessaire.

En suivant ces étapes, vous devrait être en mesure d'effacer votre partition de données et de la faire crypter par la suite (similaire à une réinitialisation d'usine) :

  1. Démarrez votre téléphone normalement (soit la récupération ne fonctionne plus, soit j'ai rencontré un autre problème).

  2. Veiller à ce que Mode débogage USB (adb) et Accès à la racine pour ADB est activé.

  3. Entrez dans un shell Root avec adb root suivi par adb shell .

  4. Facultatif : regarder les journaux en invoquant adb logcat dans une autre coquille.

  5. Entrez cette commande, tapez votre mot de passe et appuyez sur Entrée. Cette commande permet de définir votre mot de passe. Cette commande lit une ligne d'entrée ( head -1 ), supprime le saut de ligne qui suit l'entrée ( tr -d '\n' ) et le convertit en une représentation hexadécimale ( hexdump ... ). Si cela semble effrayant ou si vous n'êtes pas sûr de ce que fait cette commande, voyez ci-dessous.

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
  6. Si tout se passe bien, votre appareil définira les clés et redémarrera pour terminer le cryptage.

Ce qui précède vdc ("Volume Daemon Client") a communiqué avec la commande vold (Volume Daemon) possède quelques sous-commandes comme cryptfs pour le cryptage. Le site enablecrypto a deux modes : wipe (clair /data complètement) et inplace (censé appliquer le cryptage tout en copiant votre original /data à l'intérieur du conteneur).

Ensuite, quatre options sont disponibles à partir d'Android 5.0, l'une d'elles est password qui accepte une seule séquence hexadécimale comme clé. Ainsi, si votre mot de passe est foo alors la représentation hexadécimale est 666f6f ( f es 66 en hexagone, o es 6f voir http://www.asciitable.com/ ). La commande pour cela est :

vdc cryptfs enablecrypto wipe password 666f6f

Ceci a été testé sur un Nexus 5 (nom de code hammerhead, exécutant cm-12.1-20150814) qui possède une partition séparée pour le stockage des métadonnées. Il est important que la partition des données de l'utilisateur a le encryptable suivi soit du chemin d'accès à une partition, soit de la chaîne spéciale footer . Une ligne (abrégée) de ma /fstab.hammerhead archivo:

/dev/block/platform/msm_sdcc.1/by-name/userdata /données ext4 ..., vérifier, cryptable \= /dev/block/platform/msm_sdcc.1/by-name/metadata

Lorsque la chaîne spéciale footer ( encryptable=footer ) est présent, alors 16 KiB à la fin de la partition de données sont utilisés pour stocker les métadonnées de cryptage.

Pour plus d'informations, voir :


Annexe : extrait de logcat à partir du moment où j'ai exécuté la commande de chiffrement jusqu'à ce qu'elle se termine et redémarre (en omettant les messages graphiques sans rapport à la fin). Notez que ce Nexus 5 a une cryptographie accélérée par le matériel (QSEECom).

--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager(  184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs (  186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs (  186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs (  186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs (  186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory 
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs (  186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs (  186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs(  186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs(  186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs(  186):     Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs(  186):     Block size: 4096
08-16 12:57:21.448 I/make_ext4fs(  186):     Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs(  186):     Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs(  186):     Inode size: 256
08-16 12:57:21.448 I/make_ext4fs(  186):     Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs(  186):     Label: 
08-16 12:57:21.449 I/make_ext4fs(  186):     Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs(  186):     Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs(  186):     Block groups: 103
08-16 12:57:21.459 I/make_ext4fs(  186):     Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs(  186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs(  186):     Total files: 0
08-16 12:57:21.465 I/make_ext4fs(  186):     Total bytes: 0
08-16 12:57:42.926 D/Cryptfs (  186): Successfully created filesystem on /dev/block/dm-0

5voto

user48616 Points 212

Pour moi, le première réponse n'a pas fonctionné comme prévu. Il semble que le cryptage ait réussi, mais l'interface utilisateur est revenue très rapidement et le paramètre "Cryptage" n'indiquait pas que les dispositifs étaient cryptés. J'ai ensuite appliqué les commandes données dans l'actualisation mais ça n'a toujours pas marché. J'ai alors réduit la taille de la partition de données et il a été crypté avec succès. C'est-à-dire.

mount | grep data pour trouver le périphérique de bloc réel de la partition de données. Supposons que c'est /dev/block/mmcblk0p26 .

umount /data pour que les ext-tools fonctionnent.

e2fsck -f -p /dev/block/mmcblk0p26 pour ne pas avoir de problèmes lors du prochain redimensionnement.

tune2fs -l /dev/block/mmcblk0p26 pour obtenir le nombre de blocs. Supposons que c'est 3057395 .

resize2fs /dev/block/mmcblk0p26 3057375 c'est-à-dire qu'il faut soustraire une quantité suffisante, comme 20, du nombre de blocs d'origine.

e2fsck -f -p /dev/block/mmcblk0p26 a trouvé un inode mal placé pour moi.

Je devais aussi monter le /system afin de mettre la main sur resize2fs . Sur mon système, ce binaire était lié à une version 64 bits de libc, mais le TWRP que j'utilisais ne semblait pas le fournir. J'avais donc besoin de préfixer les commandes avec env LD_LIBRARY_PATH=/system/lib64 .

3voto

Art Points 31

A partir de CM12.1 2015-10-15 el réponse de Lekensteyn ne fonctionne plus.

Apparemment, le mkfs.f2fs qui est nécessaire pour créer le système de fichiers, a été déplacé de la base de données de l'UE à la base de données de l'UE. /system/bin/ a /sbin/

Nous devons également faire face à SELINUX. Cela signifie que nous devons effectuer plusieurs étapes supplémentaires :

  1. adb root
  2. adb shell
  3. setenforce 0
  4. mount -oremount,rw /system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto wipe password 666f6f

2voto

George Davey Points 21

Une autre mise à jour. CM13 Jan 9, 2016 construire, en utilisant le téléphone Nubia Z7 Max, NX505J

Cette commande ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs ) n'est plus nécessaire puisque le fichier vit à nouveau ici. Il n'est pas nécessaire de créer un lien symbolique.

Cette commande n'a plus besoin d'être en HEX et si vous entrez hex, votre PW sera hex.
cryptfs enablecrypto wipe password 666f6f - Cela a littéralement créé un mot de passe pour moi de 666f6f nicht foo

Je suis toujours à la recherche de ce problème car j'ai dépassé les blocs supplémentaires nécessaires pour les méta-données. Je dois maintenant surmonter le fait que l'interface graphique et les commandes manuelles de cryptage aboutissent toutes deux à un cryptage qui n'est viable que pendant un cycle de démarrage. Je ferai un rapport lorsque j'aurai réussi à crypter.

Actuellement, je crypte et cela fonctionne bien et je démarre la première fois et il dit que le téléphone est crypté. En utilisant TWRP, je peux confirmer que /data est crypté mais les mots de passe HEX et ASCI que j'essaie dans TWRP ne fonctionnent pas. Au redémarrage suivant, le système d'exploitation Android ne peut pas démarrer complètement CM13. Il confirme que j'ai le bon mot de passe de cryptage et ensuite je n'obtiens qu'un seul démarrage crypté. Après le premier démarrage crypté réussi, il se bloque sur l'étape d'animation du cycle de démarrage par la suite. Les meilleures pratiques en matière de sécurité recommandent désormais le cryptage AES256 pour les téléphones.

2voto

Whit3rd Points 3496

Ayant un Moto X 2013 fonctionnant sous Cyanogenmod 12.1, je n'ai pas non plus réussi à le faire crypter. Finalement, j'ai réussi avec ces étapes :

  1. Activez Root dans les paramètres du développeur sur le téléphone et ouvrez un shell (application Terminal, peut également être activée dans les paramètres du développeur).
  2. Entrez su et confirmez l'accès Root
  3. Entrez setenforce 0
  4. Maintenant ouvert Paramètres Allez sur Sécurité et sélectionnez Crypter le téléphone . Android va alors redémarrer et commencer à crypter le téléphone.

Je suis arrivé à cette solution en combinant La réponse de Art y ce fil du forum .

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X