Ich möchte wissen, wie man ein USB-Flash-Laufwerk nach Möglichkeit über das Terminal löscht, damit keine Daten wiederhergestellt werden können.
flash-memory
data-destruction
Benutzer
quelle
quelle
Antworten:
TL / DR: Vergewissern Sie sich, dass Sie den richtigen Gerätenamen erhalten, dass dieser nicht aktiviert ist, und führen Sie so viele zufällige Überschreibungen durch, wie Sie sich leisten können. Sie können einen Löschbefehl für Flash-Hardware ausführen, wenn Sie über eine ausreichend aktuelle Distribution verfügen. Verwenden Sie bei diesen Überprüfungen immer das Laufwerk (wie / dev / sd h ) und nicht den Partitionsnamen (das wäre / dev / sd h1 ).
Theoretisch ist das Überschreiben mit Null in
dd
Ordnung. Aufgrund der Art und Weise, wie die Interna eines Flash-Laufwerks aufgebaut sind, können bei Verwendung eines einzelnen Überschreibdurchgangs mehrere Datenebenen hinter den eigentlichen Blöcken verborgen sein, in denen noch verbleibende Informationen gespeichert sind.In der Regel ist ein Teil des Flash-Speichers fehlerhaft und wird während der Herstellung entsprechend gekennzeichnet. Es gibt auch andere Teile, die schief gehen können (unveränderlich, unsetzbar oder unklar werden). Diese Teile müssen auch während der Lebensdauer als fehlerhaft markiert werden. Diese Informationen werden in einem reservierten Bereich auf denselben Chips wie Ihre Daten gespeichert. Dies ist einer der Gründe, warum ein 4-GB-USB-Stick keine Kapazität von 2 ^ 32 Byte aufweist.
Der Flash-Speicher ist auch intern in größeren Blöcken organisiert, manchmal viel größer als die Dateisysteme, die auf dem Laufwerk arbeiten. Eine typische Blockgröße des Dateisystems beträgt 4 KB. Die Flash-Segmente, die auf einmal gelöscht werden können, reichen von 64 KB bis hin zu mehreren Megabyte. Diese großen Blöcke können nur vollständig gelöscht werden, wodurch der gesamte Block auf einen bekannten Zustand zurückgesetzt wird (alle Einsen oder alle Nullen). Danach kann ein Datenschreibvorgang jedes der Bits ändern (ändern Sie die Standard-Einsen in Nullen, falls erforderlich, oder ändern Sie die Standard-Einsen in Einsen), jedoch nur einmal . Um eines der Bits wieder auf den Standardwert zurückzusetzen, muss das gesamte Segment erneut gelöscht werden!
Wenn Sie also einen 4-KB-Block ändern möchten (das Dateisystem wird aufgefordert, ein einzelnes Zeichen in der Mitte einer Datei zu ändern), muss der Flash-Controller alle 64 KB der alten Daten lesen und puffern, alle löschen und schreibe den neuen Inhalt zurück. Dies wäre sehr langsam, das Löschen von Segmenten ist die langsamste Operation. Außerdem kann ein Segment nur zeitlich begrenzt gelöscht werden (Zehntausende sind typisch). Wenn Sie also zu viele Änderungen an einer einzelnen Datei vornehmen, kann dies das Laufwerk schnell beschädigen.
Aber so wird es nicht gemacht. Intelligente Flash-Controller schreiben die neuen 4-KB-Daten einfach an eine andere Stelle und notieren, dass die Lesevorgänge auf diese 4-KB-Daten in der Mitte des alten Blocks umgeleitet werden sollen. Sie benötigen mehr Speicherplatz, als wir sehen können, um diese Informationen über Weiterleitungen zu speichern. Sie versuchen auch sicherzustellen, dass sie alle zugänglichen Segmente durchlaufen, um Daten zu speichern. Dies wird als Verschleißausgleich bezeichnet .
Dies bedeutet, dass sich normalerweise noch alte Daten auf dem Laufwerk befinden ! Wenn Sie gerade alle zugänglichen Blöcke gelöscht haben, behalten alle ausgeblendeten Blöcke immer noch eine recht aktuelle Version der Daten. Ob dies für einen Angreifer möglich ist, vor dem Ihre Daten geschützt werden sollen, ist eine andere Frage.
Wenn Sie eine ausreichend aktuelle Distribution haben und das USB-Laufwerk so programmiert ist, dass es sich um ein Flash-Laufwerk handelt,
blkdiscard
können Sie den zugrunde liegendenTRIM
Vorgang verwenden, bei dem es sich um das oben beschriebene Segmentlöschen handelt. Es hat auch ein zusätzliches Flag, um sicherzustellen, dass selbst die unsichtbaren versteckten Daten von der Hardware vollständig gelöscht werden:Es wird nicht unbedingt funktionieren, wie ich oben gezeigt habe. Wenn Sie erhalten
Operation not supported
, unterstützen entweder Ihr Kernel, Ihre Dienstprogramme oder der USB-Gateway-Chip (der es dem Flash-Controller ermöglicht, über USB wie ein Laufwerk auszusehen) das Übergeben vonTRIM
Befehlen nicht. (Der Flash-Controller muss weiterhin in der Lage sein, Segmente selbstständig zu löschen.) Wenn dies vom Hersteller Ihres Laufwerks unterstützt wird, ist dies der sicherste Weg.Eine andere, weniger sichere Möglichkeit, um sicherzustellen, dass weniger der alten Daten irgendwo verweilen, besteht darin, sie mehrmals mit zufälligen Werten zu überschreiben, sofern dies möglich ist.
Warum zufällig, fragst du? Stellen Sie sich vor, das USB-Laufwerk wäre zu intelligent und Sie hätten festgestellt, dass Sie einen Sektor löschen möchten, und hätten nur eine Änderung an einer Bitmap vorgenommen, die besagt, dass dieser Sektor jetzt frei ist und später gelöscht werden muss. Dies bedeutet, dass das Schreiben von Nullen beschleunigt werden kann, sodass ein Pendrive effizienter erscheint , oder? Ob Ihr Laufwerk es tut, ist schwer zu sagen.
Im Extremfall kann sich das Laufwerk von Anfang an daran erinnern, wie viel Sie gelöscht haben, und es muss lediglich etwa 4 Byte an Informationen gespeichert werden, um dies zu tun, und nichts aus den Daten löschen, die Sie löschen möchten. Alles so, dass es sehr schnell aussehen könnte.
Wenn Sie die Daten mit zufälligen, nicht vorhersehbaren Werten überschreiben, sind diese Optimierungen nicht möglich. Das Laufwerk muss also sicherstellen, dass die Daten in den Flash-Chips gespeichert werden. Sie können jedoch immer noch nicht ausschließen, dass einige der zuvor verwendeten Sektoren noch alte Daten enthalten. Das Löschen des Laufwerks war jedoch noch nicht wichtig, da es normalerweise nicht verfügbar ist. Nur der tatsächliche
TRIM
Befehl kann das garantieren.Um das Überschreiben mit zufälligen Werten zu automatisieren, sollten Sie folgende Aspekte untersuchen
shred
:Die verwendeten Optionen:
Verwenden Sie nach Möglichkeit beide,
blkdiscard
undshred
wennblkdiscard -s
dies von Ihrem Laufwerk unterstützt wird, ist dies die optimale Lösung, aber es kann nicht schaden,shred
vorher einen Fehler in der Firmware auszuschließen.Oh, und überprüfen Sie das Gerät, das Sie löschen möchten, immer doppelt und dreifach! dmesg kann Ihnen dabei helfen, das zuletzt eingefügte Gerät zu ermitteln, und es lohnt sich, den Gerätenamen, mit dem Sie löschen möchten
ls -al
, auch für die Knotennummern des Geräts und dieblkid
Ausgabe zu überprüfen, um festzustellen , welche Partitionen möglicherweise verfügbar sind, die Sie NICHT verwenden will klären.Verwenden Sie diese Befehle niemals auf einem internen Laufwerk, das Sie weiterhin verwenden möchten -
blkdiscard
funktioniert nur auf Solid-State-Laufwerken, aber es lohnt sich nicht, Daten zu verlieren!Es kann andere Möglichkeiten geben, Daten im Laufe der Technologie sicher zu löschen.
Eine andere Möglichkeit ist der ATA-
SECURITY ERASE
Befehl, der überhdparm
Befehle ausgegeben werden kann. Nach meiner Erfahrung wird es auf Flash-Laufwerken nicht wirklich unterstützt. Es wurde für Enterprise-Festplatten entwickelt und ist nicht immer in kostengünstigen Speichergeräten implementiert.Die
TRIM
/DISCARD
-Operation ist viel neuer als derSECURITY ERASE
Befehl und wurde als Reaktion auf die Flash-Funktionen erstellt. Daher ist die Wahrscheinlichkeit, dass sie auch auf billigen USB-Laufwerken implementiert wird, sehr viel höher, sie ist aber immer noch nicht allgegenwärtig. Wenn Sie eine SD- / Micro-SD-Karte in einem USB-Dongle löschen möchten und melden, dassblkdiscard
sie nicht unterstützt wird, können Sie einen anderen Dongle / Kartenleser verwenden und / oder dies in einem Gerät mit einem direkten SD- / MMC-Steckplatz tun .quelle
blkdiscard
ist in Debian Jessie und nur in den letzten beiden Versionen von Ubuntu enthalten, nicht jedoch in Ubuntu LTS 14.04.blkdiscard
wurde der Paketversionutil-linux
2.23 hinzugefügt .blkdiscard
man diehdparm
Lösung in einem anderen Kommentar von @zhenech vergleicht (speziell der Link: ata.wiki.kernel.org/index.php/ATA_Secure_Erase ) ?Mir ist klar, dass dies keine wirkliche Antwort auf Ihre Frage ist, aber der einfachste Weg besteht darin, das Laufwerk physisch zu zerstören. Wenn Sie sich genug Sorgen um die Sicherheit machen, um sicherzustellen, dass die Daten nicht wiederherstellbar sind, ist der Wert dieser Daten wahrscheinlich um ein Vielfaches höher als die Kosten des Laufwerks selbst, und die physische Methode ist billig und zuverlässig.
quelle
Fast alle verfügbaren Funktionen zum sicheren Löschen wurden für das Drehen von Magnetmedien entwickelt, bei denen der Computer normalerweise den physischen Speicherort [1] der für die Datei verwendeten Blöcke bestimmen und über dieselben Blöcke schreiben kann. Solid-State-Speichercontrollerchips abstrahieren den physischen Speicherort der Daten vom System und verschieben sie gern.
Ihre Frage hängt wirklich davon ab, wer Ihre Daten sucht. Wenn Sie sich Gedanken über zufällige Verluste oder zufälligen Diebstahl machen, ist ein reguläres Format in Ordnung. Wenn Sie befürchten, von einem hochmotivierten, technisch kompetenten Benutzer mit erheblichen Ressourcen angesprochen zu werden [2], verbrennen Sie das Laufwerk einfach und geben Sie 10 USD für ein neues aus.
Ja, es gibt eine logische Blockzuordnung. Der logische Block A wird jedoch immer dem physischen Block B zugeordnet.
Diese Person öffnete das Laufwerk, zog den Speicherchip von der Karte und las den Flash-Speicher direkt unter Umgehung des Controllers
quelle
Der einfachste und schnellste Weg, den ich kenne, besteht darin, Nullen (0) auf das gesamte Laufwerk zu schreiben:
Wo
/dev/sdX
befindet sich der Geräteknoten Ihres USB-Sticks?Einige schlagen einen gründlicheren Prozess mit mehr Iterationen und anderen Mustern vor. Hierzu stehen spezielle Dienstprogramme zur Verfügung. Das GNU-Paket coreutils enthält den
shred
Befehl speziell für diesen Zweck. Viele Leute nutzen auchbadblocks -w
, was Teil des e2fsprogs-Pakets ist. Unter FreeBSD wird dasshred
Dienstprogramm aufgerufengshred
und sollte entweder in den Ports/usr/ports/sysutils/coreutils
oder verfügbar sein/usr/ports/sysutils/fileutils
.quelle
Dies sollte in der Lage sein, Ihr Flash-Laufwerk sicher zu löschen, wenn Sie es wiederverwenden möchten: http://linux.die.net/man/1/scrub Wenn nicht, dann schmelzen Sie es ...
quelle