Chapitre 18 Effacer des données « pour de vrai »
On a vu dans la partie Comprendre que lorsqu’on efface un fichier, son contenu n’est pas vraiment supprimé. Cependant, il existe des programmes qui permettent d’effacer des fichiers et leur contenu, ou du moins qui tentent de le faire, avec les limites expliquées auparavant.
18.1 Un peu de théorie
18.1.1 La méthode de Gutmann
La documentation du paquet secure-delete, que nous utiliserons dans la prochaine recette, inspirée d’une publication de Peter Gutmann publiée en 1996171, nous dit (en anglais) :
Le processus d’effacement fonctionne comme suit :
- la procédure d’écrasement (en mode sécurisé) remplace le contenu du fichier […]. Après chaque passage, le cache du disque est vidé ;
- le fichier est tronqué, de sorte qu’un attaquant ne sache pas quels blocs du disque appartenaient au fichier ;
- le fichier est renommé, de sorte qu’un attaquant ne puisse tirer aucune conclusion sur le contenu du fichier supprimé à partir de son nom ;
- finalement, le fichier est supprimé. […] 172
Pour un disque dur magnétique de moins de 20 ans173 : il suffit d’écraser les données quelques fois avec des données aléatoires.
Le NIST (National Institute of Standards and Techonology, organisme gouvernemental états-unien définissant les protocoles de sécurité utilisés, entre autres, par les administrations de ce pays) a publié une étude de 2006 174 de la NSA, qui semble conclure que sur les disques durs magnétiques récents, les données sont tellement collées les unes aux autres qu’il devient pratiquement impossible de se livrer à des analyses magnétiques pour retrouver les traces de données effacées.
Par conséquent, nous nous contenterons dans les recettes qui suivent de quelques réécritures aléatoires.
Cependant, cette méthode n’est pas adaptée aux disques SSD. Or, les disques SSD tendent de nos jours à remplacer les disques durs…
Il s’agira une fois de plus de faire le bon compromis, au cas par cas, entre la rapidité et le niveau de protection souhaité, en fonction de la taille des données à écraser, de l’âge du disque dur, et de la confiance qu’on accorde au NIST.
18.1.2 Pour les clés USB, disques SSD et autres mémoires flash
Pour les clés USB ou autre mémoire flash ‑ comme les cartes SD, ou disques SSD ‑ une étude datant de 2011175 a montré que la situation était réellement problématique.
Cette étude démontre qu’il est impossible, quel que soit le nombre de réécritures, d’avoir la garantie que tout le contenu d’un fichier donné a bien été recouvert. Même si cela rend inaccessibles les données en branchant simplement la clé, elles sont toujours visibles pour quiconque regarderait directement dans les puces de mémoire flash.
La seule méthode qui a fonctionné de façon systématique était de réécrire plusieurs fois l’intégralité de la clé USB. Dans la plupart des cas, deux passages ont suffi, mais sur certains modèles, vingt réécritures ont été nécessaires avant que les données ne disparaissent pour de bon.
Partant de ces constats, la réponse préventive semble être de chiffrer systématiquement les clés USB, opération rendant vraiment plus difficile l’extraction des informations directement depuis les puces de mémoire flash. Et pour nettoyer a posteriori, l’écrasement entier, malgré ses limites, protège tout de même contre les attaques purement logicielles.
La seule solution pour rendre illisibles les données de ces supports est de les détruire physiquement.
18.1.3 D’autres limites de l’effacement « sécurisé »
Il peut encore rester des informations sur le fichier permettant de le retrouver, notamment si l’on utilise un système de fichiers journalisé comme ext4, Btrfs, HFS+, ReFS, NTFS, un système d’écriture, de compression ou de sauvegarde (que ce soit sur disque, par exemple avec RAID176 ou via un réseau). Voir à ce sujet la première partie.
18.2 Sur d’autres systèmes
On a vu qu’il est illusoire, si l’on utilise un système d’exploitation propriétaire, de rechercher une réelle intimité. Bien qu’il existe des logiciels supposés effacer des fichiers avec leur contenu sous Windows et macOS, il est donc bien plus difficile de leur faire confiance.
18.3 Allons-y
On peut effacer le contenu :
18.4 Supprimer des fichiers… et leur contenu
Durée : Cinq minutes de préparation, puis quelques secondes à plusieurs heures d’attente en fonction de la taille du fichier à effacer et de la méthode utilisée.
Voici donc la méthode à suivre pour se débarrasser de fichiers, en prenant soin de rendre illisible ce qu’ils contenaient.
Attention : cette méthode ne fonctionne qu’avec les disques durs mécaniques. Après avoir recouvert le contenu de fichiers sur une clé USB (ou tout autre support de stockage utilisant de la mémoire flash comme une carte SD ou un disque SSD) il y a de fortes chances qu’il se trouve encore inscrit dans une région inaccessible du périphérique !
18.4.1 Installer les logiciels nécessaires
Si ce n’est pas déjà fait, il nous faut
installer le paquet
nautilus-wipe
,
puis redémarrer l’ordinateur.
Ce paquet est présent par défaut dans Tails.
18.5 Effacer « pour de vrai » tout un disque
Avant de se débarrasser d’un disque dur, de le recycler, de réinstaller un système propre, ou encore d’envoyer un ordinateur en panne au service après-vente, il peut être judicieux de mettre des bâtons dans les roues des gens qui voudraient récupérer les données qu’il contenait. Pour cela, la meilleure solution est encore de réécrire l’intégralité du disque avec des données aléatoires.
Avant d’utiliser cette recette, il faut réfléchir à deux fois et sauvegarder soigneusement les données à conserver. Si elle est bien appliquée, elle rend en effet les données très difficiles à récupérer, même en analysant le disque dans un laboratoire.
18.6 Effacer tout le contenu d’un disque
Durée : Cinq minutes de préparation, puis plusieurs heures d’attente en fonction de la taille du disque.
Pour effacer un volume complet (disque ou partition), on va utiliser la
commande
shred
de façon à ce qu’elle recouvre la totalité des données trois fois avec des
données aléatoires. Cette commande permet donc, en plus de l’effacement des
fichiers, de recouvrir l’espace effacé de telle manière qu’il devient quasiment
impossible de retrouver ce qu’il contenait auparavant.
Pour recouvrir le contenu d’un disque, il est nécessaire de ne pas être en
train de l’utiliser… s’il contient le système d’exploitation
habituellement utilisé, il faut donc mettre le disque dur dans un autre
ordinateur ou utiliser un système live. shred
étant
un outil standard, n’importe quel système live devrait faire l’affaire.
La commande est très simple. Elle exige seulement de connaître l’emplacement du périphérique (son chemin) que l’on veut effacer, puis de faire preuve de patience car le processus prend plusieurs heures.
18.6.1 Trouver le chemin du périphérique
Avant tout, il faut savoir repérer sans se tromper le chemin utilisé par le système d’exploitation pour désigner le support de stockage qu’on veut effacer.
Si l’on souhaite effacer un disque interne, commencer par débrancher tous les disques durs externes, clés USB, lecteurs de cartes mémoire ou autres périphériques de stockage branchés sur l’ordinateur. D’une part, cela évitera de les effacer par erreur ; d’autre part, cela rendra la recherche du disque interne plus facile.
Bien sûr, il ne faut pas faire cela si c’est justement le contenu d’un disque externe que l’on souhaite rendre inaccessible.
18.6.1.1 Ouvrir l’utilitaire de gestion des disques
Ouvrir Disques : afficher la vue d’ensemble des Activités en
appuyant sur la touche (⌘ sur un Mac),
puis taper disque
et cliquer sur Disques.
18.6.1.2 Chercher le chemin du périphérique
La partie située à gauche indique la liste des disques connus du système. On peut cliquer sur l’un d’entre eux afin de voir plus d’informations apparaître sur la partie droite. Les icônes, la taille indiquée ainsi que le nom des disques devraient permettre d’identifier celui que l’on cherche.
Si cela ne suffit pas, il est possible de jeter un œil à l’organisation des partitions, en regardant le tableau qui apparaît dans la partie droite :
- si le disque à effacer contenait un système GNU/Linux non chiffré, il doit y avoir au moins deux partitions, l’une avec un système de fichiers Swap, l’autre en général Ext3 ou Ext4 ;
- si le disque à effacer contenait un système GNU/Linux chiffré, il doit y avoir au moins deux partitions, l’une avec un système de fichiers Ext2, l’autre LUKS ;
- si le disque à effacer contenait un système Windows, il doit y avoir une ou plusieurs partitions notées NTFS ou FAT.
Par ailleurs, le périphérique correspondant au disque interne est généralement le premier de la liste.
Une fois le disque trouvé et sélectionné, on pourra lire le chemin du disque dans la partie de droite en bas, à côté de l’étiquette Périphérique.
Le chemin du périphérique commence par /dev/
suivi de trois
lettres et éventuellement d’un chiffre, les premiers caractères étant dans la plupart des cas sd
, hd
, ou mmcblk
: par
exemple, /dev/sdx1
. Noter le chemin quelque part, sans le chiffre (par exemple
/dev/sdx
) : il faudra l’écrire tout à l’heure à la place de LE-PÉRIPHÉRIQUE
.
Attention : ce chemin n’est pas nécessairement toujours le même. Il vaut mieux recommencer cette courte procédure après avoir redémarré l’ordinateur, branché ou débranché une clé USB ou un disque dur. Cela évitera les mauvaises surprises… comme perdre le contenu d’un autre disque dur.
18.6.2 Lancer la commande shred
Ouvrir un Terminal : ouvrir la vue d’ensemble
activités en appuyant sur la touche (⌘ sur un
Mac), puis taper term
et cliquer sur Terminal.
Saisir la commande suivante en veillant à remplacer LE-PÉRIPHÉRIQUE
par le chemin de
périphérique déterminé précédemment :
pkexec shred -n 3 -v LE-PÉRIPHÉRIQUE
Si l’on préfère utiliser la méthode originale de Gutmann (plus longue,
et peut-être plus sûre), il faut remplacer -n 3
par -n 25
dans la
ligne de commande.
Une fois la commande tapée et vérifiée, appuyer sur la touche
Entrée (↲ ou return). Un mot de passe est demandé, car
cette commande nécessite les
privilèges d’administration, le saisir.
La commande shred
va alors écrire dans le terminal ce qu’elle
fait (puisqu’on le lui a demandé en ajoutant à la commande shred
l’option -v
, qui signifie, dans le cadre de cette commande, que l’ordinateur
doit être « verbeux » — c’est-à-dire « bavard ») :
shred: /dev/sdb: pass 1/3 (random)...
shred: /dev/sdb: pass 2/3 (random)...
shred: /dev/sdb: pass 3/3 (random)...
À la fin de la procédure, le terminal affiche à nouveau le signe $
,
qui symbolise l’invite de commande.
On peut alors fermer le terminal.
18.6.3 Réutiliser le disque
Attention, cette méthode efface non seulement les données d’un volume complet mais, à la fin de l’opération, le disque n’a plus ni table de partitions, ni système de fichiers. Pour le réutiliser, il est nécessaire de créer entièrement au moins une nouvelle partition et son système de fichiers, avec l’application Disques par exemple.
18.7 Rendre irrécupérables des données déjà supprimées
Durée : Cinq minutes de préparation, puis de plusieurs minutes à plusieurs heures d’attente, selon la taille du disque à nettoyer et selon la méthode utilisée.
Lorsque des fichiers ont déjà été effacés sans précautions particulières, les données qu’ils contenaient se trouvent toujours sur le disque. L’objectif de cette recette est de recouvrir les données qui subsisteraient, en écrasant l’espace libre d’un disque dur. Cette méthode ne supprime donc aucun fichier visible dans le navigateur de fichiers.
Attention : comme les autres façons d’effacer un fichier « pour de vrai », cela ne marche pas avec certains systèmes de fichiers « intelligents » qui, pour être plus efficaces, ne vont pas montrer tout l’espace libre au logiciel chargé d’y recouvrir les traces. Il ne faut pas non plus faire confiance à cette méthode pour les clés USB, les cartes SD ou les disques SSD et préférer recouvrir plusieurs fois l’intégralité des données qu’ils contiennent.
18.7.0.1 Dans Tails
Le paquet nautilus-wipe
est déjà installé par défaut dans Tails.
Il nous suffit donc de consulter la documentation, en cliquant
sur l’icône Documentation de Tails se trouvant sur le bureau.
Puis, dans l’index qui s’ouvre, chercher la section
Chiffrement et vie privée et cliquer sur la page Effacer des fichiers de
façon sécurisée et nettoyer l’espace disque.
18.7.0.2 Avec une Debian chiffrée
Si ce n’est pas déjà fait, il nous faut installer le paquet
nautilus-wipe
,
puis redémarrer l’ordinateur.
Il nous faut ensuite ouvrir un navigateur de fichiers, puis naviguer jusqu’au disque que l’on veut nettoyer. Effectuez ensuite un clic-droit dans la partie droite du navigateur de fichiers et sélectionnez Écraser l’espace disque disponible. Une fenêtre s’ouvre nous demandant de confirmer la suppression de l’espace disque disponible, et proposant également quelques Options.
Nous pouvons choisir le nombre de passes effectuées afin de recouvrir les données de notre périphérique, ainsi que quelques options de comportement lors de l’effacement des données. Les options par défaut sont suffisantes pour les disques magnétiques actuels.
Cliquer ensuite sur Écraser l’espace disque disponible. L’effacement peut prendre du temps. Dans certains cas, le mot de passe d’administration est demandé.
Remarquons qu’un dossier appelé tmp.XXXXXXXXXX est créé dans le dossier. Nautilus Wipe va créer ce fichier à l’intérieur et en augmenter la taille autant que possible, afin d’utiliser tout l’espace libre disponible, puis l’écrasera de manière sécurisée. Une fois l’effacement terminé, une fenêtre L’écrasement a réussi s’ouvre, précisant que L’espace disque disponible sur la partition ou le périphérique « … » a été écrasé avec succès.
Peter Gutmann, 1996, Secure Deletion of Data from Magnetic and Solid-State Memory (en anglais).↩︎
Source : fichier
README.gz
de secure-delete installé sur une Debian dans/usr/share/doc/secure-delete
.↩︎Utilisant la technologie PRML, apparue en 1990 (en anglais).↩︎
NIST, 2006, Guidelines for Media Sanitization (en anglais).↩︎
Michael Wei et al., 2011, Reliably Erasing Data From Flash-Based Solid State Drives (en anglais).↩︎
RAID signifie « regroupement redondant de disques indépendants » (Redundant Array of Independent Disks en anglais). C’est un système qui répartit des données sur plusieurs disques afin d’améliorer soit les performances, la sécurité ou la tolérance aux pannes (Wikipédia, 2021, RAID (informatique))[https://fr.wikipedia.org/wiki/RAID_(informatique)]↩︎