Manchmal muss eine Datei in einem Dateisystem gelöscht werden, und es muss sichergestellt werden, dass die Datei wirklich nicht mehr vorhanden ist. Eine Datei, die beispielsweise vertrauliche Kennwörter enthält, sollte vollständig von der Festplatte gelöscht werden.
Wenn Sie ein einfaches rm
Dateisystem auswählen, wird der Inode ("Zeiger") auf die Datei gelöscht. Der Inhalt der Datei auf der physischen Festplatte wird jedoch nicht gelöscht. Diese werden dort belassen, bis sie überschrieben werden, wenn das Dateisystem den freien Speicherplatz benötigt.
Auf vielen Dateisystemen ermöglicht das Shred-Programm ein derart sicheres Löschen. Auf einem CoW-Dateisystem wie btrfs ist dieser Ansatz jedoch unbrauchbar . Das Problem wird durch die Tatsache verschlimmert, dass die Datei möglicherweise auf Volume-Snapshots vorhanden ist.
Gibt es eine Möglichkeit, eine Datei auf einem btrfs-Dateisystem sicher zu löschen ? Reicht es aus, alle Zeiger (auf allen Datenträgern) zu löschen und den freien Platz mit Nullen zu füllen ?
quelle
Antworten:
Sicheres Löschen ist für jedes Dateisystem eine schwierige Aufgabe. Sofern das Dateisystem nicht sehr eigenartig ist und garantiert, dass keine anderen Kopien der Datei herumliegen, müssen Sie den gesamten freien Speicherplatz auf dem Gerät freigeben. Während Sie mit größerer Wahrscheinlichkeit viele Teile der Datei auf Copy-on-Write-Dateisystemen finden, haben selbst "statische" Dateisysteme diese Garantie in der Praxis nicht, da viele Dateien bearbeitet werden und daher Teile aus früheren Versionen der Datei vorhanden sind Datei herumliegen.
Beachten Sie, dass das Löschen mit Nullen so gut ist wie das Löschen mit zufälligen Bytes, und dass Sie nicht mehrere Durchgänge benötigen. Das Löschen mit Nullen hinterließ Restdaten, die unter Laborbedingungen mit den Festplattentechnologien der 1980er Jahre teilweise wiederhergestellt werden konnten. das gilt heute nicht mehr. Siehe Warum ist es um ein Vielfaches besser, Nullen (oder zufällige Daten) auf eine Festplatte zu schreiben, als es nur einmal zu tun?
Sie können die vertraulichen Klartextdaten entfernen, indem Sie alles auf der Festplatte verschlüsseln. Richten Sie ein ecryptfs- Volume über diesem Dateisystem ein und verschieben Sie alle Ihre (vertraulichen) Dateien dorthin . Überschreiben Sie dann den gesamten freien Speicherplatz des Dateisystems. Sie können das meiste davon löschen, indem Sie das Dateisystem mit füllen
cat /dev/zero >zero
. Möglicherweise sind noch einige Informationen in unvollständigen Blöcken enthalten (Blöcke, die den letzten Teil einer Datei enthalten, gefolgt von etwas Müll - möglicherweise Reste einer vertraulichen Datei). Um sicherzustellen, dass keine unvollständigen Blöcke vorhanden sind, verschieben Sie alles im Dateisystem in ecryptfs (die Dateien von ecryptfs verwenden ganze Blöcke, zumindest bei typischen Setups mit Blöcken von 4 KB). Stellen Sie sicher, dass Sie dies auf alle Volumes anwenden und alle Snapshots löschen, die vertrauliche Klartextdaten enthalten.Möglicherweise befinden sich noch einige Informationen im Journal. Ich weiß nicht, wie ich das schrubben soll.
Auf SSDs können aufgrund der Blockneuzuweisung möglicherweise Daten verbleiben, die nicht mit normalen Softwaremitteln gelesen werden können, sondern durch Hacken der Firmware oder durch physischen Zugriff wiederhergestellt werden können. Dort können Sie nur die SSD vollständig löschen.
quelle
0
ok und nicht TRIMING-abhängig sein,1
stattdessen alle schreiben ? Oder verwenden einige Laufwerke die Komprimierung für alles?Hmmm, btrfs scheint alle gängigen Zerkleinerungsmethoden zu besiegen ...
nodatacow
, die jedoch keine Auswirkungen auf bereits vorhandene Dateien zu haben scheint.debugfs
. Es ist nur für ext-Dateisysteme, aber es gibt einen Patch dafür, der funktionieren könnte. Sie können es verwenden, um die betroffenen Blockadressen herauszufinden und sie dann direkt in / dev / sdXY zu überschreiben. Dies ist jedoch sehr gefährlich und funktioniert möglicherweise nicht (insbesondere, wenn mehr Schnappschüsse der Datei vorhanden sind).Der sauberste Versuch (für wirklich wirklich sensible Daten) wäre:
Dies ist vielleicht nicht der billigste Ansatz, aber angesichts der geringen Speicherkosten von heute und der Schwierigkeiten, die Sie mit den anderen Optionen haben würden, ist dies möglicherweise der billigste (in Bezug auf die Arbeitsstunden).
quelle
nodatacow
Setzt den Standardstatus desC
Flags für neu erstellte Dateien. Sicher könnte man es genauchattr +C ~/.browser/logins.sqlite
und dannshred
?Es gibt
shred(1)
für Unix / Linux (sollte in den Paketen Ihrer Distribution enthalten sein). Ich empfehle das EFF .quelle