web-dev-qa-db-fra.com

Comment puis-je supprimer de manière sécurisée le contenu d'une clé USB afin que les données ne puissent pas être récupérées.

J'aimerais savoir comment supprimer un lecteur flash USB via le terminal si possible afin que les données ne puissent pas être récupérées.

33
user

TL/DR: Assurez-vous d'obtenir le nom de périphérique droit, assurez-vous qu'il n'est pas monté et que vous effectuez autant d'écrasements aléatoires que vous pouvez vous permettre. Vous pouvez le suivre par une commande Erase conçue pour le matériel Flash si vous êtes sur une distribution suffisante récente. Dans ces chèques, utilisez toujours le lecteur (comme/dev/sd -h) et non le nom de la partition (qui serait/dev/sd H1)

# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#

En théorie, écrasement avec zéro avec dd est tout simplement bien. Toutefois, en raison de la construction des internes d'un flash, si vous utilisez une seule passe d'écrasement, il peut y avoir plusieurs couches de données cachées derrière les blocs réels qui stockent encore des informations de restes.

En règle générale, une partie du stockage flash est défectueuse et est marquée dans la fabrication. Il existe également d'autres bits qui peuvent mal tourner (devenant immuables, instantanés, ou non clairs), ces pièces doivent être marquées aussi bien au cours de la vie. Ces informations sont stockées dans un espace réservé, sur les mêmes puces que vos données. C'est l'une des différentes raisons pour lesquelles une clé USB de 4 Go ne montre pas la capacité de 2 ^ 32 octets.

Le stockage en flash est également organisé en interne en blocs plus gros, parfois beaucoup plus grand que les systèmes de fichiers travaillant sur le lecteur. Une taille de bloc de système de fichiers typique est de 4 Ko et les segments flash pouvant être effacés en une fois peuvent aller de 64 Ko à plusieurs mégaoctets. Ces grands blocs ne peuvent être effacés que dans tout, qui réinitialise tout le bloc à un état connu (tous les 1 ou tous les 0s). Ensuite, une écriture de données peut modifier l'un des bits (modifier les 1 SS par défaut dans 0S si nécessaire, ou modifiez les 0s par défaut en 1s), mais seulement une fois. Pour modifier l'un des bits Retour Dans la valeur par défaut, tout le segment doit être effacé à nouveau!

Ainsi, lorsque vous souhaitez modifier un bloc de 4 ko (le système de fichiers est invité à modifier un seul caractère au milieu d'un fichier), le contrôleur Flash nécessiterait de lire et de tamponner les 64kb des anciennes données, effacez tout cela et Rédigez le nouveau contenu. Ce serait très lent, les segments d'effacement sont l'opération la plus lente. En outre, un segment ne peut être effacé que par un temps limité (dizaines de milliers de dollars), de sorte que si vous apportez trop de modifications à un seul fichier, vous pouvez rapidement détériorer le lecteur.

Mais ce n'est pas comme ça que c'est fait. Les contrôleurs flash intelligents écrivent simplement les nouvelles données de 4 Ko ailleurs et apportent une note pour rediriger les lectures à ce 4 kb de données au milieu de l'ancien bloc. Ils ont besoin de plus d'espace que nous ne pouvons pas voir pour stocker ces informations sur les redirections. Ils essaient également de s'assurer qu'ils passent à travers tous les segments accessibles pour stocker des données, c'est appelé Nivellement de l'usure.

Cela signifie que typiquement anciennes données est toujours sur le lecteur quelque part! Si vous venez d'effacer tous les blocs accessibles, tous les blocs cachés conservent toujours une version assez récente des données. Que cela soit accessible à un attaquant que vous souhaitez que vos données soient protégées, constitue une question différente.

Si vous avez une distribution suffisante récente, et que le lecteur USB est programmé pour révéler qu'il s'agit d'un lecteur flash, blkdiscard peut utiliser l'opération sous-jacente TRIM, qui est le segment effaçable que nous avons parlé de dessus. Il dispose également d'un drapeau supplémentaire pour s'assurer que même les données cachées invisibles sont entièrement effacées par le matériel:

# blkdiscard -s /dev/myusbdevice

-S, --Secure Effectuer un défausse sécurisée. Un défausse sécurisé est identique à un défaussement régulier, sauf que toutes les copies des blocs jetés éventuellement créées par la collecte des ordures doivent également être effacées. Cela nécessite un support de l'appareil.

Cela ne fonctionnera pas nécessairement, comme je l'ai démontré ci-dessus. Si vous obtenez Operation not supported, votre noyau, vos utilitaires ou la puce de passerelle USB (qui permet au contrôleur de flash de ressembler à un lecteur via USB) ne prend pas en charge la commande TRIM. (Le contrôleur Flash doit toujours être capable d'effacer les segments seuls). S'il est pris en charge par le fournisseur de votre lecteur, c'est la manière la plus sûre.

Un autre moyen moins sûr de vous assurer que vous autorisez moins les anciennes données à s'attarder quelque part est de l'écraser plusieurs fois, avec des valeurs aléatoires, si possible.

Pourquoi aléatoire, vous demandez? Imaginez simplement que si le lecteur USB a été fait trop intelligent et que vous avez détecté que vous vouliez effacer un secteur et simplement effectué un changement dans un bitmap que ce secteur est maintenant gratuit et qu'il aura besoin de dégager plus tard. Comme cela signifie qu'il peut accélérer les écritures de zéros, il est donc nécessaire de faire une pendrive qui apparaît plus efficace, non? Si votre lecteur le fait, difficile à dire.

Au plus extrême, le lecteur pourrait tout simplement se rappeler à quel point le départ que vous avez effacé et que tout ce qu'il faut stocker, c'est environ 4 octets d'informations pour le faire, et ne rien clarifier à partir des données que vous souhaitez disparaître. Tout pour que cela puisse sembler très vite.

Si vous écrasez les données avec des valeurs aléatoires, imprévisibles, ces optimisations sont impossibles. Donc, le lecteur doit s'assurer que les données se terminent par stockées à l'intérieur des copeaux de flash. Mais vous ne pourrez toujours pas exclure que certains des secteurs précédemment utilisés sont toujours là avec des données anciennes sur les vôtres, mais le lecteur n'a tout simplement pas été considéré comme important pour l'effacer pour l'instant, car ce n'est pas accessible normalement. Seule la commande TRIM peut garantir cela.

Pour automatiser l'écrasement avec des valeurs aléatoires, vous pouvez envisager d'utiliser shred, comme:

# shred -vzn88 /dev/myusbdrive

Les options utilisées:

  • -v pour le faire montrer les progrès
  • -z à zéro en tant que phase finale
  • -n8 est de faire 8 passes aléatoires de surprises

Si possible, utilisez les deux blkdiscard et shred, si blkdiscard -s est pris en charge par votre lecteur, c'est la solution optimale, mais ne peut pas faire mal à faire un shred à l'avance pour exclure les erreurs de micrologiciels.

Oh, et toujours double-triple-vérifiez l'appareil que vous essayez de clarifier! DMESG peut aider à voir quel était le dernier périphérique inséré, et il vaut également la peine de vérifier le nom de l'appareil que vous avez l'intention d'effacer avec ls -al, même pour les numéros de nœud de périphériques, et la sortie blkid pour voir quelles partitions peuvent être disponibles que vous ne voulez pas effacer.

N'utilisez jamais ces commandes sur un lecteur interne que vous souhaitez utiliser en utilisant - blkdiscard ne fonctionnera que sur des lecteurs d'état solides, mais il ne vaut pas la peine d'essayer de perdre des données!

Il peut y avoir d'autres moyens de clarifier de manière sécurisée des données car la technologie progresse.

L'ATA SECURITY ERASE commande pouvant être émise via des commandes hdparm. D'après mon expérience, il n'est pas vraiment pris en charge sur les lecteurs flash. Il a été conçu pour les disques durs d'entreprise et la fonctionnalité n'est pas toujours mise en œuvre dans les appareils de stockage des coûts les plus bas.

L'opération TRIM/DISCARD est beaucoup plus récente que la SECURITY ERASE Commande et a été créée en réponse aux fonctionnalités Flash, il a donc de nombreuses chances d'être mises en œuvre, même dans des lecteurs USB bon marché, mais ce n'est toujours pas omniprésent. Si vous souhaitez effacer une carte SD/MICRO SD dans un dongle USB, et blkdiscard Rapports Il n'est pas pris en charge, vous pouvez essayer d'essayer un lecteur de dongle/carte différent et/ou de le faire dans une machine avec un emplacement direct SD/MMC.

47
chexum

Je me rends compte que ce n'est pas vraiment une réponse à votre question, mais le moyen le plus simple est de détruire physiquement le lecteur (le brisant à plusieurs reprises avec un Sledgehammer, mais le déchiquetage ou l'incinération industrielle sont également des options). Si vous êtes assez inquiet sur la sécurité vouloir vous assurer que les données sont irrécupérables, la valeur de ces données est probablement plusieurs fois plus que le coût du lecteur lui-même et la méthode physique est bon marché et fiable.

27
MPLewis

Presque toutes les fonctions de suppression sécurisée disponibles ont été conçues pour filer les supports magnétiques, où l'ordinateur peut généralement déterminer l'emplacement physique [1] des blocs utilisés pour le fichier et écrire sur ces mêmes blocs. Les puces de contrôleur de stockage de l'état solide Résumé L'emplacement physique des données du système et aime le déplacer.

Votre question dépend vraiment de savoir qui va après vos données. Si vous êtes préoccupé par une perte aléatoire ou un vol occasionnel, un format régulier ira bien. Si vous craignez d'être ciblé par un utilisateur hautement motivé et techniquement compétent avec des ressources substantielles à leur disposition [2], alors simplement incinérer le lecteur et dépenser 10 $ sur un nouveau.

  1. oui, il y a la cartographie logique. Mais le bloc logique A piliera toujours au bloc physique B.

  2. cette personne ouvrirait la route, tirez la carte mémoire de la carte et lisez directement la mémoire flash, contourner le contrôleur.

2
user149598

Le moyen le plus simple et le plus rapide que je connaisse est d'écrire des zéros (0) à l'ensemble du lecteur:

dd if=/dev/zero of=/dev/sdX

/dev/sdX est le nœud de l'appareil de votre ThumbDrive.

Certains suggèrent un processus plus complet avec plus d'itérations et d'autres modèles. Des utilitaires spécifiques sont disponibles pour le faire. Le GNU CARUTILS Package contient la commande shred _ spécifiquement à cette fin. De nombreuses personnes utilisent également badblocks -w, Qui fait partie du package E2FSPROGS. Sur FreeBSD the shred utilitaire s'appelle gshred et doit être disponible dans les ports /usr/ports/sysutils/coreutils ou /usr/ports/sysutils/fileutils.

1
RobertL

Cela devrait pouvoir essuyer en toute sécurité votre lecteur flash si vous envisagez de la réutiliser: http://linux.die.net/man/1/scrub Sinon, puis fondez-le ...

0
Nathaniel Suchy