Comment puis-je supprimer en toute sécurité le contenu d'une clé USB afin que les données ne puissent pas être récupérées?


32

Je voudrais 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.


31
Un lecteur flash? Casser la chose ouverte, soulever tous les morceaux de la chose verte de circuit imprimé, et les écraser en petits morceaux brillants Itty Bitty, puis aller en acheter un autre. La destruction physique est vraiment le seul moyen d’en être sûr, car tous les problèmes d’usure et de nivellement. À l'avenir, utilisez le chiffrement intégral du disque et perdez les clés | mot de passe lorsque vous ne le souhaitez plus.
Blacklight Shining

1
@BlacklightShining - c'est la seule vraie réponse. beaucoup de bâtons bon marché sont également recyclés.
mikeserv

1
@BlacklightShining La transformation en plasma fonctionne aussi bien.
PyRulez

3
S'il est important pour vous que les données soient irrécupérables, la seule solution "sécurisée" est la destruction physique. S'il est simplement difficile de récupérer, il n'est pas nécessaire de faire plus que formater / écraser.
Sobrique

Le brûler dans un feu de charbon de bois, en veillant à ce que toutes les pièces atteignent une chaleur rouge.
Ben

Réponses:


47

TL / DR: Assurez-vous que vous avez le bon nom de périphérique, assurez-vous qu’il n’est pas monté et faites autant de remplacements aléatoires que vous pouvez vous permettre. Vous pouvez la suivre avec une commande d'effacement conçue pour le matériel Flash, si votre distribution est suffisamment récente. Dans ces vérifications, 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, écraser avec zéro avec ddest très bien. Toutefois, en raison de la construction des composants internes d'un lecteur flash, si vous utilisez une seule passe de réécriture, plusieurs couches de données masquées derrière les blocs réels stockent toujours les informations restantes.

Généralement, une partie du stockage flash est défectueuse et elle est marquée lors de la fabrication. Il y a aussi d'autres bits qui peuvent mal tourner (devenir immuables, non remplaçables ou insolubles), ces pièces doivent également être marquées comme étant défectueuses pendant leur durée de 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 nombreuses raisons pour lesquelles une clé USB de 4 Go n’affiche pas une capacité de 2 ^ 32 octets.

Le stockage Flash est également organisé en interne en blocs plus grands, parfois beaucoup plus volumineux que les systèmes de fichiers fonctionnant 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 gros blocs ne peuvent être effacés que dans leur totalité, ce qui réinitialise tous les blocs à un état connu (tous les 1 ou tous les 0). Ensuite, une écriture de données peut modifier l’un des bits (modifiez les 1 par défaut en 0 si nécessaire ou les 0 par défaut), mais une seule fois . Pour modifier des bits de retour dans la valeur par défaut, tous les besoins du segment à effacer à 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 de mémoire flash doit lire et mettre en mémoire tampon les 64 Ko des anciennes données, les effacer entièrement et réécrivez le nouveau contenu. Ce serait très lent, effacer des segments est l'opération la plus lente. En outre, un segment ne peut être effacé que par un laps de temps limité (des dizaines de milliers est typique), donc si vous apportez trop de modifications à un seul fichier, cela peut rapidement détériorer le lecteur.

Mais ce n'est pas comme ça que ça se passe. Les contrôleurs de flash intelligents écrivent simplement les nouvelles données de 4 Ko ailleurs et notent la redirection des lectures vers ces 4 Ko 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 parcourent tous les segments accessibles pour stocker les données, on parle alors de nivellement par usure .

Cela signifie que les anciennes données sont toujours sur le disque quelque part! Si vous venez d'effacer tous les blocs accessibles, tous les blocs masqués conservent une version assez récente des données. La question est de savoir si cela est accessible à un attaquant contre lequel vous souhaitez que vos données soient protégées.

Si vous avez une distribution assez récente et que le lecteur USB est programmé pour indiquer qu'il s'agit d'un lecteur flash, vous blkdiscardpouvez utiliser l' TRIMopération sous-jacente , qui est l'effacement de segment dont nous avons parlé ci-dessus. Il comporte également un indicateur 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 Effectue une suppression sécurisée. Une suppression sécurisée est identique à une suppression normale, sauf que toutes les copies des blocs supprimés éventuellement créées par le nettoyage de la mémoire doivent également être effacées. Cela nécessite l'assistance 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 flash de ressembler à un lecteur via USB) ne prend pas en charge le passage de TRIMcommande. (Le contrôleur de flash doit toujours pouvoir effacer lui-même des segments). S'il est pris en charge par le fournisseur de votre lecteur, il s'agit du moyen le plus sûr.

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

Pourquoi au hasard, vous demandez? Imaginez si la clé USB était trop intelligente et si elle détectait que vous vouliez effacer un secteur et apportiez une modification à une image bitmap que ce secteur est maintenant libre et devra être effacé ultérieurement. Comme cela signifie que cela peut accélérer les écritures de zéros, il en résulte une clé USB qui semble plus efficace, non? Difficile à dire si votre lecteur le fait.

À l'extrême, le lecteur peut simplement se rappeler combien vous avez effacé depuis le début. Il lui suffit de stocker environ 4 octets d'informations pour le faire, sans rien effacer des données que vous souhaitez supprimer. Tout cela pour que ça puisse paraître très vite.

Si vous écrasez les données avec des valeurs aléatoires et imprévisibles, ces optimisations sont impossibles. Le lecteur doit donc s'assurer que les données sont stockées dans les puces flash. Mais vous ne pourrez toujours pas exclure que certains des secteurs précédemment utilisés sont toujours là avec vos anciennes données, mais le lecteur n'a pas jugé important de l'effacer pour l'instant, car il n'est pas accessible normalement. Seule la TRIMcommande réelle peut le garantir.

Pour automatiser le remplacement avec des valeurs aléatoires, vous pouvez envisager d’utiliser shred, par exemple:

# shred -vzn88 /dev/myusbdrive

Les options utilisées:

  • -v pour en montrer les progrès
  • -z à zéro à la dernière phase
  • -n8 est de faire 8 passes de remplacements aléatoires

Si possible, utilisez les deux blkdiscardet shred, si blkdiscard -svotre lecteur le prend en charge, c'est la solution optimale, mais vous ne pouvez pas nuire à l' shredavance pour éliminer les erreurs de microprogramme.

Oh, et toujours double-triple-vérifier l'appareil que vous essayez d'effacer! dmesg peut vous aider à voir quel est le dernier périphérique inséré, et il est également intéressant de vérifier le nom du périphérique avec lequel vous voulez effacer ls -al, même pour les numéros de nœud des périphériques, ainsi que la blkidsortie permettant de voir quelles partitions sont disponibles et que vous N'AVEZ PAS vouloir effacer.

N'utilisez jamais ces commandes sur un disque interne que vous souhaitez continuer à utiliser - blkdiscardcela ne fonctionnera que sur des disques SSD, mais cela ne vaut pas la peine d'essayer de perdre des données!

Il peut y avoir d'autres moyens d'effacer les données en toute sécurité à mesure que la technologie progresse.

Une autre manière mentionnée est la SECURITY ERASEcommande ATA qui peut être émise via des hdparmcommandes. D'après mon expérience, ce 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 implémentée dans les périphériques de stockage les moins coûteux.

L' opération TRIM/ DISCARDest beaucoup plus récente que la SECURITY ERASEcommande et a été créée en réponse aux fonctions flash. Elle a donc beaucoup plus de chances d'être implémentée, même sur des clés USB bon marché, mais elle n'est pas encore omniprésente. Si vous souhaitez effacer une carte SD / micro SD insérée dans un dongle USB et blkdiscardsignalez qu’elle n’est pas prise en charge, vous pouvez essayer un autre lecteur / dongle de carte et / ou le faire sur un ordinateur doté d’un logement SD / MMC direct. .


Merci pour l'information de pointe. blkdiscardest dans Debian Jessie, et seulement dans les deux dernières versions d’Ubuntu, mais pas dans Ubuntu LTS 14.04. blkdiscarda été ajouté au paquet util-linuxversion 2.23.
RobertL

Savez-vous comment se blkdiscardcompare à la hdparmsolution dans un autre commentaire de @zhenech (en particulier le lien: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ).
RobertL

Pas sûr que ce soit également le cas avec les lecteurs flash, mais cela pourrait valoir la peine de lire howtogeek.com/234683/…
hhaslam11

1
@RobertL Egal, d'une mauvaise manière. La plupart des lecteurs flash bon marché n’implémentent ni ATA Secure Erase ni TRIM, les deux méthodes vont donc probablement échouer.
Crépuscule

27

Je réalise que ce n’est pas vraiment une réponse à votre question, mais le moyen le plus simple est de détruire physiquement le disque dur (le briser de façon répétée avec un marteau de forge suffit généralement, mais le broyage industriel ou l’incinération sont également des options). Si vous êtes suffisamment préoccupé par la sécurité pour vouloir vous assurer que les données sont irrécupérables, leur valeur est probablement bien plus que le coût du lecteur lui-même, et la méthode physique est économique et fiable.


5
S'il s'agit d'un lecteur flash remplaçable bon marché, optez pour la destruction physique. Si vous utilisez un marteau, assurez-vous de disposer de la puce de stockage réelle. Il y a quelques semaines, j'ai craqué d'ouvrir un vieux lecteur flash pour le plaisir, et l'essentiel de son volume physique était en fait un boîtier et de l'air.
Blacklight Shining

1
Hormis ma réponse, je suis tout à fait d’accord: c’est juste difficile de les écraser via l’accès ssh :) Étant donné le manque de fiabilité de ces dongles pour le stockage des données, il est étonnamment difficile de les faire se débarrasser des mêmes données.
Chexum

D'accord - s'il est important pour vous que les données soient irrécupérables, la destruction physique est la seule option. Regardons les choses en face, comparé à la valeur commerciale des données, même les disques les plus chers ne sont probablement pas si importants. Si ce n'est pas si important, presque tout effacement / écrasement est «suffisant».
Sobrique

1
Cette méthode est non seulement la plus efficace, mais aussi la plus amusante. Ne ratez jamais une occasion d'utiliser une masse et d'être payé pour cela.
Zetetic

2

Presque toutes les fonctions de suppression sécurisée disponibles ont été conçues pour des supports magnétiques en rotation, l'ordinateur permettant généralement de déterminer l'emplacement physique [1] des blocs utilisés pour le fichier et d'écrire sur ces mêmes blocs. Les puces de contrôleur de stockage à semi-conducteurs extraient l'emplacement physique des données du système et aiment les déplacer.

Votre question dépend vraiment de qui va après vos données. Si vous êtes préoccupé par une perte aléatoire ou un vol occasionnel, un format standard conviendra. Si vous craignez d'être ciblé par un utilisateur hautement motivé, techniquement compétent et disposant de ressources importantes [2], incinérez simplement le disque et dépensez 10 dollars pour un nouveau.

  1. oui, il existe un mappage de bloc logique. Mais le bloc logique A mappera toujours sur le bloc physique B.

  2. cette personne ouvrirait le lecteur, retirerait la puce mémoire de la carte et lirait la mémoire flash directement, en contournant le contrôleur


1

Le moyen le plus simple et le plus rapide que je connaisse consiste à écrire des zéros (0) sur l'intégralité du lecteur:

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

/dev/sdXest le nœud de périphérique de votre clé USB.

Certains suggèrent un processus plus complet avec plus d'itérations et d'autres modèles. Des utilitaires spécifiques sont disponibles pour cela. Le paquet GNU coreutils contient la shredcommande spécifiquement à cette fin. Beaucoup de gens utilisent également badblocks -w, qui fait partie du paquet e2fsprogs. Sur FreeBSD, l' shredutilitaire est appelé gshredet devrait être disponible dans les ports /usr/ports/sysutils/coreutilsou /usr/ports/sysutils/fileutils.


Ce n'est pas vraiment suffisant pour effectuer un nettoyage sécurisé. Je voudrais au moins 20 séries d'écritures de choses aléatoires. Mieux encore, j'utiliserais un outil pour essuyer en toute sécurité, par exemple shred. Même si certaines personnes disent que cela n’a aucun sens et que la réduction à zéro est suffisante - je n’aurais pas confiance en cela.
Monsune

4
@monsune C'est juste une légende urbaine. Bien que certaines normes exigent cela , il ne semble pas y avoir d’attaque pratique.
Gilles 'SO- arrête d'être méchant'

Les lecteurs flash utilisent le nivellement d'usure pour ne pas détruire les cellules du flash trop rapidement. Imaginez-le comme ceci: le disque a 1200 cellules mais vous dit seulement qu'il en a 1000 et que le contrôleur sélectionne la cellule sur laquelle il écrit. Donc, après un jj, vous avez effacé 1000 cellules mais pas les 200 en réserve et celles-ci peuvent être lisibles en reliant le flash réel à un contrôleur sans réserve. Je suggérerais de faire un effacement sécurisé après le DD, mais tous les supports Flash ne le supportent pas.
Zhenech

@ zhenech, qu'est-ce que "Secure Erase"?
RobertL


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.