![]() |
|
||||||||||||||||||
|
|||||||||||||||||||
|
|||||||||||||||||||
|
||
|
TFT Monitor bei
Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich. Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps. Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung. Günstige Shareware Programme als direkte Downloads im Software Portal. Bis zu 70% sparen durch Preisvergleich. |
||
|
Marcus Nasarek
| README |
|
Was passiert eigentlich, wenn Sie eine Datei löschen? Dieser Artikel erläutert die Zusammenhänge und zeigt, wie Sie Dateien kritischen Inhalts zuverlässig und endgültig entsorgen. |
Die alte Festplatte läuft chronisch voll, der Kauf einer größeren Platte steht an. Um das resultierende Loch in der Haushaltskasse zu minimieren, bietet sich ein Verkauf der alten Harddisk in einem der vielen Online-Auktionshäuser an.
Im Lauf der Zeit verewigte sich die komplette Familie elektronisch auf dem Datenträger -- und natürlich sollen vor dem Verkauf alle persönlichen Dokumente, Briefe, Kündigungen, Bewerbungen, Fotoalben und diverse Zugangsdaten von der Platte verschwinden. Das fällt unter Windows vergleichsweise schwer, unter Linux dagegen reicht zur Not ein Einzeiler in einem Terminal.
Vielleicht wissen Sie, wie Sie eine Datei oder ein Verzeichnis löschen. Zumindest die grafischen Oberflächen verhalten sich da alle ähnlich: Sie markieren die Datei oder das Verzeichnis mit einem Mausklick und mit einem beherzten Druck auf die [Entf]-Taste verschwinden die Daten -- jedenfalls auf den ersten Blick. Auch falls die Applikation sie nicht ohnehin erst in den Papierkorb [1] verschoben hat, liegen die Daten weiterhin auf der Festplatte -- in mehr oder weniger kleinen Stücken. Erst wenn die Platte sich wieder füllt und Sie die "gelöschten" Bereiche mit neuen Daten überschreibt, verabschieden sich die alten Daten allmählich.
Greifen Sie auf der Kommandozeile zu rm, verspricht auch das nicht viel mehr Erfolg: Das Kommando entfernt nur die Einträge in den entsprechenden Journalen der Dateisysteme. Ohne diese findet das Dateisystem zwar den Weg zu den Daten nicht mehr; diese verschwinden aber auch hier noch längst nicht.
Mit dem folgenden Aufruf löschen Sie das Verzeichnis meine_daten/ nebst aller Unterverzeichnisse und enthaltenen Dateien ohne Rückfrage.
rm -rf meine_daten/
Richtiger müsste es eigentlich heißen: Sie entfernen das Namensschild von den Dateien und Verzeichnissen. Das Kommando löscht nämlich nur den entsprechenden Eintrag aus einer Zuordnungstabelle. Jede Partition enthält eine Übersicht, wo auf der Festplatte eine Datei oder ein Verzeichnis liegt. Das gilt für alle modernen Dateisysteme, sie unterscheiden sich lediglich in Art der Ablage und den Techniken zum Auslesen der Daten.
Gerade bei letzterem weichen die einzelnen Ansätze aber deutlich von einander ab. Wesentliche bleibt aber, dass beim "Löschen" einer Datei oder eines Verzeichnisses das System einfach den Hinweis aus der Übersicht löscht und somit den Speicher wieder freigibt. An der verzeichneten Stelle auf der Festplatte die Daten selbst tatsächlich zu entfernen oder zu überschreiben, bereitet im laufenden Betrieb zuviel Mehraufwand.
Sie haben also optimale Chancen, eine voreilig gelöschte Datei vollständig wiederherzustellen, wenn Sie alle Schreibvorgänge auf die entsprechende Partition vermeiden und sich sofort auf die Suche nach dem verlorenen File machen. Im Internet finden Sie unter [2] eine Übersicht über die notwendigen Schritte, um gelöschte Daten auf einer Ext2-Partition mit einfachen Mitteln wiederherstellen. Eine detailierte Erläuterung liefert ein entsprechendes Howto [3], das ebenfalls online steht.
Um die Daten auf einer Festplatte endgültig loszuwerden, nutzen aber auch das Neuformatieren oder Partitionieren nicht viel. Beim Formatieren schreiben aktuelle Betriebssysteme einfach die Zuordnungstabelle des Dateisystems neu, beim Partionieren nur die entsprechenden Einträge in der Partitionstabelle der Festplatte. Die Daten auf der Festplatte fristen zwar nun namenlos ihr Dasein im Verborgenen, sind aber nach wie vor vorhanden.
Um gelöschte Daten auf einer Festplatte wiederzuherstellen, brauchen Sie nur wenige Grundlagen. Der Kasten "Partitionen" erläutert das Prinzip, nach dem die Festplatte und das Betriebssystem die Dateien und Verzeichnisse verwalten.
Suchen Sie nur bestimmte Phrasen oder Zeichenfolgen, wie beispielsweise Zugangsdaten oder persönliche Daten, helfen Ihnen schon die Befehle dd, hexdump und fgrep weiter. Dazu benötigen Sie meist privilegierten Zugriff als root auf die Partition.
Zum Üben empfiehlt sich ein USB-Speicherstick als externe "Festplatte", den Sie mit verschiedenen Dateisystemen formatieren und mit Testdaten beschreiben. Angenommen, das zu analysierende Gerät befindet sich im System unter /dev/sda, dann heißt die erste Partition /dev/sda1.
Mit dem Hexeditor hexdump stöbern Sie durch die Sektoren der Partition und machen sich so ein Bild von den vorhandenen Daten. Der folgende Aufruf erzeugt einen Auszug des betreffenden Laufwerks, wobei er druckbare Zeichen als ASCII-Code ausgibt (Abbildung ((1))). Den Inhalt von bereits gelöschten Textdateien erkennen Sie -- bis auf Umlaute -- sofort.
hexdump -v -e '"%07.7_ad: " 60/1 "%_p" "\n"' /dev/sda1 | less
Falls Sie ein Schwierigkeiten mit dieser Darstellungsweise haben, starten Sie einfach den Midnight Commander in einer Konsole und experimentieren Sie etwas mit der Darstellung von Dateien. Dieser Datei-Manager beherrscht ebenfalls die Anzeige von Dateien in hexadezimaler Form (Abbildung ((2))).
Dateien liegen aber nicht zwingend in aufeinanderfolgenden Sektoren der Festplatte, sondern verteilen sich häufig über weit verstreute Bereiche. Dieser Fall der verteilten Ablage heißt Fragmentierung. Es kommt also darauf an, wie das jeweilige Dateisystem den Ort der Ablage wählt, um größtmögliche Schreib- und Lesegeschwindigkeiten zu erreichen. Da eine Datei aber immer mindestens einen Cluster belegt, liegen bei kleinen Textdateien -- unter 4096 Byte -- die Chancen gut, das File vollständig zu erwischen.
Dieses Vorgehen eignet sich natürlich nicht zur systematischen Suche nach bestimmten Daten. Wenn Sie eine bestimmte Zeichenfolge kennen, die in der gesuchten Dateien vorkommt (zum Beispiel fangen LaTeX-Dateien stets mit /document an), hilft ein kleines Skript beim Eingrenzen der Suche. Dem Skript in Listing 1 übergeben Sie das Laufwerk, den Suchbegriff und die Anzahl der zu untersuchenden Sektoren. Bei einem Treffer nehmen Sie die Umgebung der Fundstelle anhand des ausgegebenen Sektors genauer in Augenschein.
| Listing 1 |
#!/bin/bash
# zeigeSektor.sh
for ((i=0;i<=$MAX;i=$i+1));
do
val=`dd if=$1 skip=$i bs=512 count=1 2>/dev/null | hexdump -v -e '"%_p"' | fgrep $2`
if [ "$val" ];
then
echo -e "Sektor $i:\n$val"
fi
done
|
Ein Aufruf des Skriptes aus Listing 1 erzeugt bei einer Suche nach dem Begriff Sesam auf dem Gerät /dev/sda1 eine Ausgabe wie in Listing 2.
| Listing 2 |
john@jack:~$ sudo ./zeigeSektor.sh /dev/sda1 Sesam Sektor 101: Das ist ein Geheimnis. Das Passwort f..r die Hoehle ist "Sesam oeffne Dich!". Aber keinem verraten!........................................................ ............................................................................. ............................................................................. ............................................................................. ............................................................................. ................................................. |
Zur Analyse der Umgebung nehmen Sie das Kommando dd mit den Parametern skip und count zu Hand. Mit skip überspringen Sie die angegebene Anzahl von Blöcken. Die Option count beendet das Programm nach der gegebenen Anzahl an Blöcken. Den Wert für den Parameter skip entnehmen Sie der Ausgabe des obigen Skriptes.
Der Parameter count gibt die Länge des analysierten Bereichs an. Beide Werte variieren mitunter etwas, um die Umgebung zu untersuchen. Mit einer geschickten Kombination der Parameter kopieren Sie die interessanten Bereiche heraus. Falls Sie zum Beispiel im Sektor 32 eine interessante Zeichenkette finden, untersuchen Sie mit folgendem Aufruf die umgebenden 5 Sektoren:
dd if=/dev/sda1 skip=30 count=5 bs=512 2>/dev/null | hexdump -v -e '"%_p"' | less
Dieses Beispiel demonstriert lediglich die Vorgehensweise. Zur Analyse oder dem Wiederherstellen größerer Dateien aus den Rohdaten einer Festplatte verwenden Sie vorzugsweise Disk-Editoren. Mit Hilfe eines solchen Programms navigieren Sie leicht durch die Datenflut und kopieren Auszüge heraus.
Professionelle Datenretter stellen selbst aus überschriebenen Bereichen mit Hilfe einer Oberflächenanalyse Daten wieder. Dabei nutzen sie die Tatsache aus, dass der Lesekopf nicht hundertprozentig genau die alte Spur trifft und am Rand oft Reste der Daten übrig bleiben.
Wollen Sie die Daten der Festplatte also unwiederbringlich löschen, setzen Sie besser auf standardisierte Löschmethoden. Zu den in Deutschland bekanntesten zählen:
Die genannten Algorithmen überschreiben die Sektoren mehrfach mit Daten bestimmter Muster. Die Muster bestehen aus den Bytes 0x00, 0xFF und Zufallswerten. Um echte Zufallsdaten zu generieren, die niemand errät und anschließend von den Lesesignalen wieder abzieht, wenden die meisten Verfahren einen Zufallszahlen-Generator an.
Gute Sicherheit erreichen Sie bereits mit Hilfe spezieller Gerätedateien unter Linux, wie zum Beispiel dem Device /dev/urandom, das einfache Zufallsfolgen erzeugt. Mit /dev/zero produzieren Sie beliebig viele Null-Bytes (0x00). Einer Kombination aus beiden Dateien liefert schon die komplette Werkzeugbox.
Der Kasten "Wie der Zufall will" erläutert Hintergründe zur Qualität der beiden Zufallsgeneratoren /dev/random und /dev/urandom. Als brauchbar für einen stetig fließenden Strom von Zufallszahlen für derart große Bereiche wie eine Festplatte erweist sich in der Praxis nur /dev/urandom.
Die beiden Dateien /dev/zero und /dev/urandom wenden Sie jetzt analog nach einem der obigen Verfahren kombiniert an. Für den Hausgebrauch genügt das Ausführen eines Skriptes wie in Listing 3. Aber Vorsicht: Gemäß dem Ziel, die Daten unwiederbringlich zu löschen, sollten Sie unbedingt sicher bei der Wahl des Gerätes sein.
| Listing 3 |
#!/bin/bash
# erase.sh
# Parameter $1 ist das zu löschende Gerät
BLOCKSIZE=8192
echo -e "Zu löschendes Gerät: $1\nBlockgröße beim Schreiben: $BLOCKSIZE"
echo "[`date +"%a %T"`] Durchgang 1"
dd if=/dev/zero of=$1 bs=$BLOCKSIZE
echo "[`date +"%a %T"`] Durchgang 2"
dd if=/dev/urandom of=$1 bs=$BLOCKSIZE
echo "[`date +"%a %T"`] Durchgang 3"
dd if=/dev/zero of=$1 bs=$BLOCKSIZE
echo "[`date +"%a %T"`] $1 gelöscht"
|
Das Skript in Listing 2 schreibt einmal Nullen über das gesamte Laufwerk, anschließend Zufallswerte und dann wieder Nullen. Die drei Durchgänge reichen in der Regel. Um eine 80 GByte große Festplatte zu löschen, läuft das kleine Programm allerdings bereits einige Stunden.
Bei Verschlusssachen mit Geheimschutzes sehen Datenschützer sieben Durchläufe vor, ebenso beim Standard 5220.22-M des US-Verteidigungsministeriums. Der Peter-Gutmann-Algorithmus -- technologisch der modernste -- erfordert jedoch mit 35 Durchläufen die meiste Geduld beim Anwender. Wenn Sie nach dem Ausführen des Skriptes auf dem Laufwerk nachschauen, dürften hier nur noch Nullen zu sehen sein.
| Wie der Zufall will |
|
Die speziellen Dateien Der Zufallszahlengenerator des Kernels bedient sich beim Berechnen der Zahlenfolgen verschiedener interner Werte und angeschlossener Geräte, um eine geeignete Entropie der Zahlenverteilung zu erreichen. Entropie drückt das Maß der Zufälligkeit der in einer bestimmten Zeit erzeugten Zahlenfolge aus. Anwendungen lesen aus den Dateien Da das mitunter eine Zeitlang dauert, erlaubt zwar der Non-Blocking-I/O-Modus das Abschalten dieser Blockade. Dadurch erhöht sich jedoch nicht die Ausgabegeschwindigkeit. Die von Die Datei Vor allem bei Anwendungen mit Schlüsseln geringer Halbwertszeit, wie beispielsweise Sitzungsschlüssel in einer Web Session, beim Auffüllen von Bereichen mit Rauschen oder Kurzzeitauthentisierungen in Challenge-Response-Verfahren reicht |
Analog zum Löschen einer Festplatte löschen Sie mit dem Skript in Listing 2 prinzipiell auch eine einzelne Datei sicher von der Platte. Ganze Verzeichnisse rekursiv zu löschen schafft dieses Programm aber nicht. Bliebe nur der Weg, das Programm zu erweitern oder auf eine Alternative umzusteigen.
Anwendungen, wie zum Beispiel Wipe, bringen eine wesentlich größeren Komfort mit. Die meisten Distributionen enthalten enthalten die Software bereits, und mit dieser löschen Sie durch einen Aufruf sicher ganze Verzeichnisbäume:
wipe -r <I>Verzeichnis<I>
Allerdings arbeitet Wipe nur zuverlässig, wenn Sie den Schreib-Cache der Festplatte deaktivieren. Das Programm verlangt bei jeden Durchgang nach einem exklusiven Zugriff auf die Platte, wie auf der Web-Seite des Projektes [8] erläutert.
In der Regel erreichen Sie dies, indem Sie einen Kernel mit Mandantory Locking verwenden und das entsprechende Laufwerk unter Linux mit der Option mand von Mount einbinden. Erfüllt das System diese Voraussetzung nicht oder legt das Dateisystem die Dateien beim Überschreiben gar an anderer Stelle ab, nützt auch ein Programm wie Wipe wenig und wiegt in falscher Sicherheit.
Wipe verwendet Peter-Gutmann-Muster zum Erzeugen der Zeichenfolgen, die es zum Überschreiben nutzt. Dabei greift es auf die speziellen Dateien /dev/urandom und /dev/random zum Erzeugen der nötigen Entropie zurück. Um die Geschwindigkeit etwas anzukurbeln, nutzt Wipe zudem den Mersenne Twister Pseudo-Zufallszahlengenerator (PRNG).
| Partitionen |
|
Eine Festplatte verwaltet die enthaltenen Daten in 512 Byte großen Sektoren. Das von modernen Fesplatten dafür genutzte Logical Block Addressing (LBA) nummeriert die Sektoren der Reihe nach durch. Gleichzeitig steuert und überwacht die Festplatte eine große Zahl weiterer Parameter, die über Schnittstellen abfragbar sind. Dazu gehören diverse Temperaturmessungen, vor allem aber auch schadhafte Sektoren. Diese markiert das Gerät und stellt sie nicht mehr zur Verfügung. Steigt diese Zahl aber sprunghaft an, steht wahrscheinlich der Totalausfall kurz bevor. Diese als fehlerhaft markierten Sektoren liegen außerhalb des Zugriffs normaler Mitteln, sie könnten aber noch Daten enthalten. Mit speziellen Tools kommt ein Fachmann in Regel auch an diese Daten. Die Wahrscheinlichkeit, dass nun gerade hochsensible Daten in diesen Sektoren lagern, dürfte in dem meisten Fällen jedoch verhältnismäßig klein sein. Auf einer Festplatte muss eine Partition enthalten sein, die wiederum ein bestimmte Anzahl von Sektoren zusammenfasst. Als Wegweiser zu den Partionen einer Festplatte fungiert die Partitionstabelle. Sie befindet sich auf dem ersten Sektor, dem Master Boot Record (MBR) genau ab Byte 446 und ist 64 Byte lang. Der MBR enthält zudem den Bootloader. Das Betriebssystem verwaltet die Daten einer Partition über eine Art Datenbank, deren Aufbau manchmal einer Tabelle gleicht. So funktioniert zum Beispiel die File Allocation Table (FAT), von der es unter DOS und Windows diverse Varianten gab, um den größer werdenden Partitionen gerecht zu werden: FAT12, FAT16, FAT32. Linux kennt eine große Zahl von Dateisystemen. Üblicherweise kommt die Typen Ext2, Ext3 oder ReiserFS zum Einsatz. Die beiden letztgenannten kommen einer echten Datenbank schon näher: Sie verwalten ihre Einträge sehr effektiv in Journalen und eröffnen gerade für größere Partionen viele Vorteile. Allerdings erschweren sie das Auffinden der gelöschten Daten ein wenig. Dateisysteme fassen aus Performancegründen die Sektoren nochmals zu Clustern zusammen. Je nach Dateisystem und Größe der Partition fallen die Cluster unterschiedlich groß aus. Bei einer Cluster-Größe von vier KByte belegt eine Datei immer das ganzzahlig Vielfache davon, mindestens jedoch einen ganzen Cluster. Auch eine Datei mit nur einem einzigen Byte Inhalt belegt dann auf der Festplatte mindestens 4096 Byte. |
Interessant ist, dass das US-Verteidigungsministerium für das Löschen von streng geheimen Daten auf magnetischen Datenträgern grundsätzlich die physikalische Vernichtung vorschreibt. Man muss sich also bei brisanten Daten immer der Tatsache bewußt sein, dass Software nicht unfehlbar sein kann. Die erreichte Sicherheit beim Einsatz von Linux-Bordmitteln dürte allerdings für die überwiegende Anzahl der Anwender ausreichend sein. (agr)
| Infos |
|
[1] LinuxUser 07/2002, S. 78, "Ex und hopp"
[2] Gelöschte Dateien unter Linux wiederherstellen: http://wiki.yak.net/592 [3] Dateien aus dem Ext2-Dateisystem wiederherstellen: http://www.faqs.org/docs/Linux-mini/Ext2fs-Undeletion.html [4] Bundesministerium des Inneren: http://www.bmi.bund.de [5] Anweisung zum Behandeln sensibler Daten in amerikanischen Behörde: http://www.dss.mil/isec/nispom_0195.htm [6] Bruce Schneiers Homepage: http://www.schneier.com [7] Peter Gutmanns Homepage: http://www.cs.auckland.ac.nz/~pgut001/ [8] Wipe: http://wipe.sourceforge.net [9] Unabhängiges Landeszentrum für den Datenschutz Schleswig-Holstein: http://www.datenschutzzentrum.de/systemdatenschutz/meldung/sm111.htm |
| Der Autor |
|
Marcus Nasarek schätzt vor allem den Unterhaltungswert einer Linux-Konsole und beschäftigt sich schwerpunktmäßig mit Sicherheit in heterogenen Infrastrukturen. |
Copyright © 2006 Linux New Media AG
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite
|
Datenschutz |
© 2010 Linux New Media AG
[Linux-Magazin]
[LinuxUser]
[EasyLinux]
[Linux-Community]
[Ubuntu User]
[Linux Technical Review]
[Linux Magazine]
[Linux Pro Magazine]
[Ubuntu User]
[EasyLinux Poland]
[Linux Magazine Poland]
[Linux Magazine Brasil]
[EasyLinux Brasil]
[Linux Magazine Spain]