Hace bastante tiempo, noté que incluso si creo archivos DMG desde el mismo directorio, con los mismos archivos, etc., los resultados son siempre diferentes. No solo su tamaño es ~ 15 bytes más corto / más largo entre sí, sino que sus sumas de verificación SHA (y sus contenidos, cuando se ven desde el editor HEX) difieren drásticamente. Solo por curiosidad, he creado 5 archivos DMG sin cifrar comprimidos de la misma carpeta que contienen nada más que un solo archivo de texto. Los resultados son:
- 0.dmg | tamaño - 26204 bytes, suma de comprobación - 5ba9ba0ee4d8ec5ba4718f1b491baf31c2c4e642
- 1.dmg | tamaño - 26221 bytes, suma de comprobación - a86d76f6c07ee5a81c0aefb31b6fd40ef787ebd5
- 2.dmg | tamaño - 26235 bytes, suma de comprobación - a31f4cf29e4e2858b7ac63c82574499200d81108
- 3.dmg | tamaño - 26209 bytes, suma de comprobación - f3c19414279b6d6b94b90341453906e4a69e28dd
- 4.dmg | tamaño - 26 217 bytes, suma de comprobación - 9603c0334125762fc7908343e3ee400e038fe779
He estado navegando en Internet con la esperanza de encontrar algo sobre el "aleatorizador de datos en APFS", pero ... obviamente no pude encontrar una sola cosa, y además, no mucha gente sabía realmente sobre esta "característica". ¿Hay alguna información al respecto?
Estoy ejecutando macOS 10.12.6, los archivos DMG se crearon con Disk Utility, pero obtengo los mismos resultados con hdiutil.
Respuestas:
Las copias de una existente
dmg
serán idénticas pero losdmg
archivos creados por separado no lo serán.Efectivamente garantizado para diferir
El formato Apple Disk Image
.dmg
garantiza efectivamente que no habrá dos imágenes de disco idénticas bit por bit. La igualdad entre imágenes de disco que contienen el mismo contenido no es un requisito práctico del formato.UUID dentro del
0x6B6F6C79
/koly
BloqueDentro del
dmg
formato de archivo está lakoly
estructura . Esta estructura incluye un SegmentID de tipouuid_t
. Este es un Identificador Universalmente Único ( UUID ) de 128 bits . El identificador SegmentID solo asegurará que cadadmg
archivo difiera en más de un bit.El uso de HFSleuth en la imagen de disco de iTunes 11.0 muestra el UUID incorporado:
En el ejemplo anterior, la línea
Segment UUID: 626f726e-7743259b-6086eb93-4b42fb65
es un identificador universalmente único incrustado en la imagen del disco.Diferencias de un bit y funciones hash
Una diferencia en un bit debería dar como resultado un cambio del 50% o más en una salida de función hash criptográfica, como SHA-2.
El uso de un UUID dentro de la estructura no es para garantizar que cada imagen de disco sea única, sino para facilitar la identificación de segmentos dentro de la imagen de disco. Que un UUID proporcione propiedades de unicidad más allá del alcance de la imagen del disco es un subproducto del uso del UUID.
fuente