Warum führt das Schreiben zufälliger Daten mit dd zu Festplattenpartitionen?

11

Vor dem Ausführen des ddBefehls gab der Befehl lsblkdie folgende Ausgabe zurück:

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

Der Befehl dd if=/dev/urandom of=/dev/sda conv=fsync status=progresswird ausgeführt. Das Gerät verliert jedoch die Stromversorgung und schaltet sich aus. Wenn die Stromversorgung wiederhergestellt wird, gibt der Befehl lsblkdie folgende Ausgabe zurück:

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk
Motiviert
quelle
@RuiFRibeiro - Vielen Dank für die Analogie. Es ist jedoch nicht klar, warum dddies zu Partitionen führen würde, insbesondere wenn der Befehl zum Löschen von Datenträgern vorgesehen ist.
Motiviert am
1
Zufall: Es ist sehr unwahrscheinlich, dass dies mit dem Stromausfall zusammenhängt. Sie schreiben zufällige Daten auf das Gerät. Einige dieser zufälligen Daten gingen in die ersten Blöcke. Hier leben die Partitionstabellen. Sie haben wahrscheinlich eine Partition definiert.
Strg-Alt-Delor
Kannst du das Ergebnis von file /dev/sda*und posten sudo fdisk -l /dev/sda*?
Phuclv
@phuclv - Wenn ich den Prozess gestartet habe, wird die Ausgabe dann noch wertvoll sein?
Motiviert am
1
@Motiviert Beachten Sie, dass der ddZweck nicht das Löschen von Datenträgern per se ist. Das Schreiben zufälliger Daten auf eine Festplatte kann zu zufälligen Ergebnissen führen.
jjmontes

Antworten:

20

Mehrere Möglichkeiten:

  • Linux unterstützt viele verschiedene Partitionstabellentypen, von denen einige nur sehr wenige magische Bytes verwenden, und dann ist es leicht, zufällige Daten (*) falsch zu identifizieren [so ist es möglich, zufällig eine etwas "gültige" Partitionstabelle zu generieren].

  • Einige Partitionstabellentypen verfügen auch über Sicherungen am Ende der Festplatte (insbesondere GPT), die abgerufen werden könnten, wenn der Start des Laufwerks durch zufälligen Müll ersetzt würde.

  • Das Gerät funktioniert nicht ordnungsgemäß und wurde getrennt, bevor das Schreiben der Daten abgeschlossen wurde, oder es werden weiterhin alte Daten zurückgegeben, sodass die Partitionstabelle erhalten bleibt. Manchmal passiert dies mit USB-Sticks.

  • ...

(*) Erstellen Sie 1000 Dateien mit zufälligen Daten und sehen Sie, was dabei herauskommt:

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

Das Ziel des zufälligen Shredderns eines Laufwerks besteht darin, alte Daten endgültig verschwinden zu lassen. Es gibt kein Versprechen, dass das Laufwerk danach leer, unbenutzt und in makellosem Zustand erscheint.

Es ist üblich, ein Null-Wischen durchzuführen, um dies zu erreichen. Wenn Sie LVM verwenden, ist es normal, dass LVM die ersten Sektoren eines von Ihnen erstellten LV auf Null setzt, damit alte Daten nicht stören.

Es gibt auch ein spezielles Dienstprogramm ( wipefs), mit dem Sie alte Magic-Byte-Signaturen entfernen können, mit denen Sie Metadaten für Dateisysteme und Partitionstabellen entfernen können.

Frostschutz
quelle
Die Geräte wurden zuvor mit dem Befehl ATA Secure Erase gelöscht. Ich gehe davon aus, dass dies Daten so entfernen würde, dass 1. sie nicht wiederherstellbar sind 2. keine Partitionsinformationen überleben. Wenn dies zutrifft, wollen Sie damit sagen, dass beim Ausführen des ddBefehls die Erzeugung zufälliger Daten bei Unterbrechung zu Daten führen kann, die wie Partitionstabellen aussehen? Dies sind auch SATA-Festplatten (Nicht-SSD).
Motiviert
5
Zufällige Daten können wie alles aussehen. Das bedeutet es, zufällig zu sein. Kennen Sie den Satz der unendlichen Affen? Es heißt, wenn eine ausreichend große Anzahl von Affen lange genug zufällig auf Schreibmaschinen tippt, wird einer von ihnen irgendwann das gesamte Werk von Shakespeare produzieren. Eine MBR-Partitionstabelle ist sehr klein (nur 64 Byte), hat keine Prüfsummen oder Überprüfungen und ein sehr dichtes Format. Es ist sehr wahrscheinlich, dass eine zufällige Zeichenfolge von 64 Bytes eine gültige Partitionstabelle erzeugt. Andere Partitionstabellenformate sind ähnlich einfach.
Jörg W Mittag
Ja, die Partitionstabelle ist nur 64 Byte groß (am Ende), der Partitionstyp ist nur 1 Byte und die Einträge müssen rechtmäßig oder sequentiell sein. Daher ist es sinnvoll, den ersten Cluster / Sektor / 512 Byes auf MBR auf Null zu setzen. Sie möchten auch kein unvorhersehbares Startverhalten, weniger wahrscheinlich, aber dennoch ein Risiko.
McKenzm
18

Wie hier zu sehen ist, ist der MBR (Master Boot Record) relativ einfach; https://en.wikipedia.org/wiki/Master_boot_record .

Wenn Sie verwenden /dev/urandom, können Sie immer etwas erstellen, das wie eine Partitionstabelle aussieht. Die Lösung besteht darin, die Partitionstabellenbereiche mit Null zu füllen und dev/urandomfür den Rest zu verwenden.

Linux unterstützt auch andere zusätzliche Festplattenformate, die möglicherweise ebenfalls ausgelöst werden können, sodass beim Füllen mit zufälligen Daten "ungültige" Partitionen angezeigt werden.

Adam Waldenberg
quelle
13

Das, was eine Sammlung von 512 Bytes als Master Boot Record definiert, ist das Vorhandensein der Werte 0x55 0xAAam Ende. Es gibt eine 1: 65.536 Chance von/dev/urandom , einen solchen Wert zu erzielen: Nicht allzu wahrscheinlich, aber ähnlich unwahrscheinliche Dinge passieren die ganze Zeit.

(Einige andere Partitionstabellen, wie die Apple Partition Map , haben ähnlich kurze Signaturen. Möglicherweise haben Sie stattdessen eine davon generiert.)

Kennzeichen
quelle
3

War eine solche Partition einige Zeit zuvor auf dieser Festplatte vorhanden? Wenn die Festplatte GPT verwendet, wurde möglicherweise der sekundäre GPT-Header wiederhergestellt und hatte immer noch die alte Partitionstabelle.

https://en.wikipedia.org/wiki/GUID_Partition_Table

Jakub Fojtik
quelle