Eine Datei zu löschen ist recht simpel. Bevor sie in den Papierkorb verschoben wird, sprich mit DeleteFile() gelöscht wird, werden drei Aktionen durchgeführt.
1.) Datei wird geöffnet und merhmalig mit einem bestimmten Bytemuster überschrieben, zb. $AA, $55, $FF, $00 und danach Zuifallsbytes. Diesen Vorgang nennt man Wipe.
2.) Datei wird mit einem Zufallsnamen versehen und die Dateiattribute werden zufällig geändert, besonders die Daties.
3.) Datei wird nun Sektorenweise verkleinert, Truncation. Und nach jeder Verkleinerung, um 512 Bytes, wird die komplette Festplatte vollgeschrieben um sicherzustellen das die freigewordenen Sektoren/Cluster auch wiederverwendet wurden. Auf diese Weise zerstört man die FAT-Verlinkungen der ehemals belegten Cluster der zu löschenden Datei.
Alle 3 obigen Schritte lassen sich mit direkten Zugriffen auf die Festplatte und deren FAT natürlich wesentlich effizienter programmieren als das mit normalen Windows-
API möglich ist.
ABER! nun kommen wir zum eigentlichen Unterschied zwischen unserer zu löschenden Datei und deren inhaltlichen Daten. Denn die Datei kann man ohne Problem vollständig löschen deren enthaltene Daten aber eben NICHT.
Dazu muß man den gesammten Lebenszyklus dieser Datei und iherer Daten betrachten. Zb. eine WinWord DOC Datei soll gelöscht werden. Das ist kein Problem aber die in dieser Datei enthaltenen Daten können nie 100%'tig gelöscht werden. Denn WinWord hat im Windows-
OS schon diese Daten an allen möglichen Orten verstreut. Sie liegen in Fragmenten in der Swap Datei, in verschiedenen anderen temporären Dateien, in WinWord eigenen Auslagerungsdateien wie die Zwischenablage und in unbenutzen Sektoren der FAT die während des Löschens der Datei schon längst nicht mehr zu dieser Datei zugeordnet sind. Solche FAT Sektoren mit den ursprünglichen Daten der Datei entstehen immer dann wenn die Datei in ihrer Größe mehr oder weniger Sektoren auf der HD benötigt, die Datei also gekürzt oder vergrößert wird.
Das Löschen einer Datei vernichtet also auf Systemen wie Windows + Anwendungen wie WinWord + Benutzerverhalten nicht im mindestens auch die sicherheitsrelevanten Daten selber. Ergo: ohne entsprechend sicheres Betriebsystem, ohne entsprechende Anwendung und dem nötigen Benutzerverhalten ist das nachträgliche sichere Löschen von Dateien ziemlich sinnfrei.
Fazit: jede Software die von sich selber behauptet Dateien UND deren Daten auf Windowssystemen sicher löschen zu können MUSS eine Werbe-lüge sein.
Abhilfe, im begrenzten Rahmen, würden:
- online Hardwareerweeiterungen sein, wie auf Hardware basierende Verschlüsselungen direkt in den Festplatten
- softwaremäßige virtuelle Laufwerke die die Daten immer verschlüsselt ablegen, gibts als Freeware mit Sourcen
- die NTFS eigene Verschlüsslung falls man dem Microsoft eigenen Verschlüsselungsverfahren vertrauen möchte, ist in Win2k/XP von Hause aus kostenlos integriert.
Diese Verfahren verhindern aber eben nicht das das Betriebsystem selber die sicherheitsrelaventen Daten verstreut. Sie verhindern nicht das die Anwendung selber, wie WinWord, die Daten an andere Orte verstreut, und sie verhindern nicht das der Anwender selber unsachgemäß seine Daten verteilt.
Das sichere Löschen von Dateien macht also nur dann Sinn wenn man auch sicherstellen kann das vorher nicht die geringste Information über die Daten irgendwo anders hin verteilt wurde. Und exakt das ist auf Windowssystemen fast unmöglich und macht das sichere Löschen also fast sinnlos.
Gruß Hagen