7 votes

Décryptage de la carte microSD sur un autre appareil Android ou un ordinateur de bureau

Je cherche une solution qui permettrait de crypter une carte microSD externe avec les conditions suivantes :

  • carte micro carte mémoire externe est no fusionné avec le stockage interne ;
  • La microSD externe cryptée est montée lors du démarrage automatique ;
  • le contenu d'une carte microSD cryptée peut être consulté en un autre Appareil Android et PC Windows/Linux si le smartphone où cette carte a été utilisée a été physiquement détruit au-delà de toute réparation.

La motivation derrière ces critères découle de mon flux de travail sur un ordinateur de bureau. Tous ont à la fois le système et les disques de stockage entièrement cryptés avec VeraCrypt . Je les ai configurés de manière à ce que j'entre un mot de passe lors du premier démarrage, et tous les volumes favoris sont automatiquement montés et je démarre dans un système entièrement fonctionnel. D'autre part, si pour une raison quelconque je ne peux plus démarrer (par exemple, un disque système manquant ou corrompu), je peux retirer le disque de données crypté, le brancher sur n'importe quelle autre machine fonctionnant sous Windows/Linux/MacOS avec VeraCrypt installé et décrypter mes fichiers en un rien de temps.

Cependant, je ne peux pas obtenir le même résultat avec le cryptage par défaut proposé par Android. Pour crypter la carte SD, il faut la fusionner avec la mémoire interne, et si l'appareil ne démarre pas, il n'y a aucun moyen facile de récupérer/décrypter mes données de la carte externe.

J'ai cherché dans Google Play et je n'ai pas trouvé d'application tierce similaire à VeraCrypt.

Il existe des sujets connexes, mais je n'ai pas trouvé de réponse dans aucun d'entre eux non plus :

J'utilise un Moto G5s enraciné fonctionnant sous Android 8.1, mais une réponse indépendante du fournisseur serait préférable.

6voto

Irfan Latif Points 16863

Je ne connais pas de solution GUI qui réponde à vos besoins mais je peux vous parler de solutions CLI qui fonctionnent.

LE CRYPTAGE DU DISQUE :

la carte microSD externe n'est pas fusionnée avec le stockage interne

Vous parlez de l'Android Stockage adoptif . En fait, il n'est pas fusionné (comme dans le cas de LVM ), il est simplement décrypté et monté comme un système de fichiers séparé. Android démarre émulant /sdcard de /mnt/expand/[UUID] qui autrement est de /data/media/ . De plus, certaines applications sont également mobile à cette nouvelle adopté stockage. En cas de FDE (sur la base de dm-crypt ), la clé est stockée à /data/misc/vold/expand_*.key qui peut être utilisé pour monter la carte SD sur tout système d'exploitation utilisant le noyau Linux (y compris Android). Tout ce dont vous avez besoin est dmsetup . Voir 本答 pour les détails.

le contenu d'une carte microSD cryptée peut être consulté sur un autre appareil Android et un PC Windows/Linux

Dans le cas d'un stockage adaptable, vous pouvez sauvegarder la clé maîtresse dans un endroit sûr afin qu'elle puisse être utilisée au cas où l'appareil serait effacé ou ne serait plus amorçable. Ou si vous ne voulez pas utiliser le cryptage natif d'Android, vous pouvez configurer manuellement les paramètres suivants dm-crypt FDE (plain / LUKS) sur la carte SD à l'aide de cryptsetup .

LE CRYPTAGE DU SYSTÈME DE FICHIERS :

Les versions récentes d'Android utilisent principalement FBE qui est basé sur Linux cryptage au niveau du système de fichiers (pour ext4 y f2fs ). Il n'utilise pas de clé unique, mais la clé maîtresse génère des clés par fichier sur le champ. Sur Android, les clés maîtresses cryptées sont sauvegardées dans le fichier /data/misc/vold/user_keys/ . Les stockages Device Encrypted (DE) et Credential Encrypted (CE) rendent les choses encore plus compliquées. De plus, FBE avec Adoptable Storage ne fonctionne pas sur Nougat et Oreo, et n'a pas l'air très stable sur Pie. Ce n'est donc pas une option très fiable pour le moment.

Il est également possible de configurer manuellement FBE en utilisant fscrypt (o e4crypt / f2fscrypt ) à condition que votre noyau soutient il. Mais encore une fois, il y a de multiples problèmes avec l'implémentation dans l'espace utilisateur ainsi que dans l'espace noyau, particulièrement en ce qui concerne gestion des clés . Ce n'est donc pas une option très réaliste.

fscrypt va très probablement remplacer ecryptfs ; une autre fonctionnalité native du noyau Linux. C'est un système de fichiers empilés qui peut chiffrer n'importe quel autre système de fichiers. Mais fscrypt ( chiffrement par fichier ) "est plus efficace en mémoire car il évite de mettre en cache les pages cryptées et décryptées dans le cache des pages" . Vous pouvez utiliser ecryptfs aussi sur Android si le noyau est construit avec CONFIG_ECRYPT_FS .

LE CRYPTAGE PAR FUSÉE :

Toutes les options discutées ci-dessus sont natives du noyau Linux, donc ne fonctionneront pas (ou du moins très mal) sous Windows (désolé, je n'ai pas d'expérience avec Mac). Cependant, vous pouvez opter pour des solutions basées sur FUSE qui ont plus ou moins de support sous Windows. Par exemple encfs y gocryptfs sont des systèmes de fichiers cryptographiques empilables ; plus utiles dans des situations telles que sauvegardes incrémentielles .

Si vous voulez vous en tenir à veracrypt qui fonctionne aussi parfaitement, est encore plus performant que sous Windows s'il est associé à dmsetup pour utiliser les services cryptographiques natifs du noyau Linux.

Une autre solution basée sur FUSE dislocker peut décrypter Bitlocker. Mais FUSE sur FUSE peut entraîner une baisse des performances, et doit donc être évité avec le bon choix de pilotes de systèmes de fichiers.


la microSD externe cryptée est montée au démarrage automatiquement

Vous ne trouverez pas d'option avec des interactions gracieuses avec l'interface graphique pour entrer un mot de passe au démarrage car contrairement à Linux, il n'y a pas de terminal login o crypttab o PAM . L'interaction avec l'utilisateur n'est possible qu'en développant une application à démarrage automatique, qui ne sera pas en service avant que zygote / system_server et tous les services (natifs / Java) sont pleinement opérationnels. Vous pouvez aussi essayer de pirater le paquet SystemUI du framework Android pour obtenir les mêmes informations d'identification demandées par l'interface utilisateur (dans le cas de FDE/FBE).

Une approche simple consisterait à mettre un init.d ou créer un init service. Cela devrait fonctionner avec l'une des méthodes décrites ci-dessus. Cette réponse peut être utile. J'ai utilisé EncFS pour étendre mon stockage externe sur les appareils K et L (détails ici ). La carte SD a été montée par un init service, le mot de passe a été enregistré dans /data qui était à son tour chiffrée par FDE.


NOTES :

  • Les méthodes de cryptage décrites ci-dessus couvrent tous les systèmes de fichiers couramment utilisés, notamment FAT , exFAT , NTFS , ext4 , f2fs etc.
  • Si vous n'utilisez pas Adoptable Storage, il est préférable de créer deux partitions sur la carte SD afin de laisser vold service mount first partition on boot. La première partition peut être de quelques centaines de Mo. Utilisez la deuxième partition pour le cryptage.
  • Les applications en ligne de commande utilisées pour le cryptage sont disponibles ici pour Android.

RELATION :

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