Vor einiger Zeit ist mir aufgefallen, dass selbst wenn ich DMG-Dateien aus demselben Verzeichnis, mit denselben Dateien usw. erstelle, die Ergebnisse immer unterschiedlich sind. Nicht nur ihre Größe ist ~15 Bytes kürzer/länger voneinander, sondern ihre SHA-Prüfsummen (und ihr Inhalt, wenn sie vom HEX-Editor aus betrachtet werden) unterscheiden sich drastisch. Nur aus Neugier habe ich 5 komprimierte unverschlüsselte DMG-Dateien aus demselben Ordner erstellt, die nichts als eine einzige Textdatei enthalten. Die Ergebnisse sind:
Ich habe im Internet gesurft, in der Hoffnung, irgendetwas über den "Daten-Randomizer in APFS" zu finden, aber ... konnte offensichtlich nichts finden, und außerdem wussten nicht viele Leute tatsächlich von dieser "Funktion". Gibt es Infos dazu?
Ich verwende macOS 10.12.6, die DMG-Dateien wurden mit dem Festplattendienstprogramm erstellt, aber ich erhalte die gleichen Ergebnisse mit hdiutil.
Kopien einer bestehenden Datei dmg
sind identisch, aber separat erstellte dmg
Dateien nicht.
Das Apple Disk Image- .dmg
Format garantiert effektiv, dass keine zwei Disk-Images Bit für Bit identisch sind. Die Gleichheit zwischen Disk-Images mit denselben Inhalten ist keine praktische Anforderung des Formats.
0x6B6F6C79
/ koly
-BlocksInnerhalb des dmg
Dateiformats ist die koly
Struktur . Diese Struktur enthält eine SegmentID vom Typ uuid_t
. Dies ist ein 128-Bit-Universally Unique Identifier ( UUID ). Allein die SegmentID-Kennung stellt sicher, dass sich jede dmg
Datei um mehr als ein Bit unterscheidet.
Die Verwendung von HFSleuth auf dem Disk-Image von iTunes 11.0 zeigt die eingebettete UUID:
HFSleuth> ver
Verbose output is on
HFSleuth> fs iTunes11.dmg
KOLY header found at 200363895:
UDIF version 4, Header Size: 512
Flags:1
Rsrc fork: None
Data fork: from 0, spanning 200307220 bytes
XML plist: from 200307220, spanning 56675 bytes (to 200363895)
Segment #: 1, Count: 1
Segment UUID: 626f726e-7743259b-6086eb93-4b42fb65
Running Data fork offset 0
Sectors: 1022244
Im obigen Beispiel Segment UUID: 626f726e-7743259b-6086eb93-4b42fb65
ist die Zeile eine universell eindeutige Kennung, die in das Disk-Image eingebettet ist.
Ein Unterschied in einem Bit sollte zu einer Änderung von 50 % oder mehr in der Ausgabe einer kryptografischen Hash-Funktion führen, z. B. SHA-2.
Die Verwendung einer UUID innerhalb der Struktur soll nicht sicherstellen, dass jedes Disk-Image eindeutig ist, sondern um die Segmentidentifikation innerhalb des Disk-Images zu erleichtern. Dass eine UUID Eindeutigkeitseigenschaften über den Bereich des Disk-Image hinaus bietet, ist ein Nebenprodukt der Verwendung der UUID.
jsejcksn
Unscheinbarer Typ
L0W_P1X3L
L0W_P1X3L
L0W_P1X3L
Gordon Davisson