SDelete v2.05
Par Mark Russinovich
Publié le 29 septembre 2023
Télécharger SDelete (304 Ko)
Introduction
L’une des caractéristiques de la conformité C2 de Windows NT/2000 (Win2K) est qu’elle implémente la protection contre la réutilisation des objets. Cela signifie que lorsqu’une application alloue de l’espace fichier ou de la mémoire virtuelle, elle ne peut pas afficher les données précédemment stockées dans les ressources que Windows NT/2K lui alloue. Windows NT remplit de zéros la mémoire et les secteurs du disque où se trouve un fichier avant de présenter le type de ressource en question à une application. Cependant, la réutilisation d’objets ne signifie pas nécessairement que l’espace occupé par un fichier avant sa suppression est rempli de zéros. En effet, Windows NT/2K a été conçu en partant du principe que le système d’exploitation contrôlait l’accès aux ressources système. Or, lorsque le système d’exploitation n’est pas actif, il est possible d’utiliser des éditeurs de disque brut et des outils de récupération pour afficher et récupérer les données que le système d’exploitation a libérées. Même lorsque vous chiffrez des fichiers avec le système EFS (Encrypting File System) de Win2K, les données de fichier non chiffrées d’origine d’un fichier sont maintenues sur le disque après la création d’une nouvelle version chiffrée du fichier.
Le seul moyen de vous assurer que les fichiers supprimés, ainsi que les fichiers que vous chiffrez avec EFS, ne peuvent pas être récupérés est d’utiliser une application de suppression sécurisée. Les applications de suppression sécurisée remplacent les données sur disque d’un fichier supprimé en utilisant des techniques qui ont pour effet de rendre les données disque irrécupérables, même en utilisant une technologie de récupération capable de lire les modèles sur les supports magnétiques qui présentent des fichiers supprimés de manière peu sécurisée. SDelete (Secure Delete) est une application de ce type. Vous pouvez utiliser SDelete aussi bien pour supprimer de manière sécurisée des fichiers existants que pour effacer en tout sécurité les données de fichiers qui existent dans les parties non allouées d’un disque (y compris les fichiers que vous avez déjà supprimés ou chiffrés). SDelete implémente la norme d’effacement et nettoyage DOD 5220.22-M du Ministère de la Défense des États-Unis, pour vous donner l’assurance qu’une fois supprimées avec SDelete, les données de vos fichiers ont disparu à jamais. Notez que SDelete supprime de manière sécurisée les données de fichiers, mais pas les noms de fichiers situés dans l’espace disque libre.
Utilisation de SDelete
SDelete est un utilitaire en ligne de commande qui accepter plusieurs options. Dans une utilisation donnée, il vous permet de supprimer un ou plusieurs fichiers et/ou répertoires, ou de nettoyer l’espace libre sur un disque logique. SDelete accepte les caractères génériques dans le spécificateur de répertoire ou de fichier.
Utilisation :
sdelete [-p passes] [-r] [-s] [-q] [-f] <file or directory [...]>
sdelete [-p passes] [-q] [-z|-c] <drive letter [...]>
sdelete [-p passes] [-q] [-z|-c] <physical disk number [...]>
Paramètre | Description |
---|---|
-c | Nettoyer l’espace libre. |
-f | Forcez les arguments contenant uniquement des lettres à traiter comme un fichier ou un répertoire plutôt qu’un disque. Non obligatoire si l’argument contient d’autres caractères (séparateurs de chemin d’accès ou extensions de fichier, par exemple). |
-p | Spécifie le nombre de passes de remplacement (la valeur par défaut est 1). |
-q | Mode silencieux. |
-r | Supprimer l’attribut En lecture seule. |
-s | Traiter récursivement les sous-répertoires. |
-z | Remplir de zéros l’espace libre (appropriée pour l’optimisation des disques virtuels). |
-nobanner | Ne pas afficher la bannière de démarrage ni le message de copyright. |
- Les disques ne doivent pas avoir de volumes pour être nettoyés.
- Pour les lettres de lecteur, incluez
:
, par exempleD:
.
Fonctionnement de SDelete
La suppression sécurisée d’un fichier dépourvu d’attributs spéciaux est relativement simple : le programme de suppression sécurisée remplace simplement le fichier avec le modèle de suppression sécurisée. Ce qui est plus délicat, c’est de supprimer de manière sécurisée les fichiers compressés, chiffrés et épars de Windows NT/2K, et de nettoyer en toute sécurité les espaces libres de disque.
Les fichiers compressés, chiffrés et épars sont gérés par NTFS dans des blocs à 16 clusters. Si un programme écrit dans une partie existante d’un tel fichier, NTFS alloue un nouvel espace sur le disque pour stocker les nouvelles données puis, une fois les nouvelles données écrites, il libère les clusters précédemment occupés par le fichier. NTFS adopte cette approche conservatrice pour des raisons liées à l’intégrité des données, dans le cas des fichiers compressés et épars, et dans le cas où une nouvelle allocation est plus grande que ce qui existe (les nouvelles données compressées sont plus volumineuses que les anciennes données compressées). Par conséquent, le remplacement d’un tel fichier ne parviendra pas à supprimer le contenu du fichier sur le disque.
Pour gérer ces types de fichiers , SDelete s’appuie sur l’API de défragmentation. L’API de défragmentation permet à SDelete d’identifier précisément les clusters d’un disque qui sont occupés par des données appartenant à des fichiers compressés, épars et chiffrés. Une fois que SDelete a identifié les clusters qui contiennent les données de fichiers, il peut ouvrir le disque pour un accès brut et remplacer ces clusters.
Le nettoyage d’espace libre constitue un autre défi. Sachant que FAT et NTFS n’offrent aucun moyen pour une application d’interagir directement avec l’espace libre, SDelete dispose de l’une des deux options. La première est qu’il peut, comme il le fait pour les fichiers compressés, épars et chiffrés, ouvrir le disque pour un accès brut et remplacer l’espace libre. Cette approche présente un inconvénient de taille : même si SDelete a été codé pour être entièrement capable de calculer les parties d’espace libre sur les lecteurs NTFS et FAT (ce qui n’est pas anodin), il court le risque d’entrer en collision avec les opérations actives sur fichiers qui se produisent sur le système. Par exemple, supposons que SDelete détermine qu’un cluster est libre et qu’au même moment, le pilote du système de fichiers (FAT, NTFS) décide d’allouer le cluster pour un fichier actuellement modifié par une autre application. Le pilote du système de fichiers écrit les nouvelles données sur le cluster, puis SDelete entre en jeu et remplace les données fraîchement écrites : les nouvelles données du fichier ont disparu. Le problème est encore pire si le cluster est alloué pour les métadonnées du système de fichiers, car SDelete endommage alors les structures sur disque du système de fichiers.
La deuxième approche, celle adoptée par SDelete, consiste à remplacer indirectement l’espace libre. Tout d’abord, SDelete alloue le plus gros fichier possible. Pour ce faire, SDelete utilise des E/S de fichier non mises en cache de sorte que le contenu du cache du système de fichiers NT ne soit pas supprimé et remplacé par des données inutiles associées au fichier encombrant de SDelete. Sachant que les E/S de fichier non mises en cache doivent être alignées sur un secteur (512 octets), il se peut qu’il reste de l’espace non alloué pour le fichier SDelete, même lorsque SDelete ne peut pas développer davantage le fichier. Pour récupérer l’espace restant éventuel, SDelete alloue ensuite le fichier mis en cache le plus gros possible. Pour ces deux fichiers, SDelete effectue un remplacement sécurisé, garantissant que l’ensemble de l’espace disque qui était libre auparavant est nettoyé de manière sécurisée.
Sur les lecteurs NTFS, la tâche de SDelete ne s’arrête pas nécessairement à l’allocation et au remplacement des deux fichiers. SDelete doit également remplir les parties libres existantes de la table MFT (Master File Table) NTFS de fichiers pouvant contenir dans un enregistrement MFT. La taille d’un enregistrement MFT est généralement de 1 Ko, et chaque fichier ou répertoire sur disque a besoin d’au moins un enregistrement MFT. Si les petits fichiers sont entièrement stockés dans leur enregistrement MFT, les fichiers qui ne peuvent pas contenir dans un enregistrement sont alloués à des clusters en dehors de la table MFT. Pour gérer l’espace MFT libre, SDelete doit simplement allouer le plus gros fichier possible – lorsque le fichier occupe tout l’espace disponible dans un enregistrement MFT, NTFS empêche le fichier de prendre du volume, car il ne reste pas de clusters libres sur le disque (ils sont détenus par les deux fichiers SDelete précédemment alloués). SDelete répète ensuite le processus. Lorsque SDelete ne peut même plus créer de fichier, il sait que tous les enregistrements qui étaient auparavant libres dans la table FT ont été entièrement remplis de fichiers remplacés de manière sécurisée.
Pour remplacer les noms de fichiers d’un fichier que vous supprimez, SDelete renomme le fichier 26 fois, en remplaçant chaque caractère du nom du fichier par un caractère alphabétique successif. Par exemple, le premier renommage de « foo.txt » serait « AAA.AAA ».
Le fait que SDelete ne supprime pas de manière sécurisée les noms de fichiers lors du nettoyage de l’espace libre sur le disque s’explique par le fait que leur suppression nécessiterait une manipulation directe des structures de répertoires. Si l’espace libre dans les structures de répertoires peut contenir des noms de fichiers supprimés, l’espace libre d’un répertoire ne peut pas être alloué à d’autres fichiers. Par conséquent, SDelete n’a aucun moyen d’allouer cet espace libre en vue de le remplacer de manière sécurisée.
Télécharger SDelete (304 Ko)
Fonctionne sur :
- Client : Windows 10 et versions ultérieures.
- Serveur : Windows Server 2012 et versions ultérieures.
- Nano Server : 2016 et versions ultérieures.