He creado varios archivos DMG desde la misma carpeta. ¿La suma de comprobación es diferente en cada uno?

3

Hace bastante tiempo me he dado cuenta de que incluso si creo archivos DMG desde el mismo directorio, con los mismos archivos, etc., los resultados siempre son 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 desde la misma carpeta que contiene nada más que un solo archivo de texto. Los resultados son:

  • 0.dmg | tamaño - 26 204 bytes, suma de comprobación - 5ba9ba0ee4d8ec5ba4718f1b491baf31c2c4e642
  • 1.dmg | tamaño - 26 221 bytes, suma de comprobación - a86d76f6c07ee5a81c0aefb31b6fd40ef787ebd5
  • 2.dmg | tamaño - 26 235 bytes, suma de comprobación - a31f4cf29e4e2858b7ac63c82574499200d81108
  • 3.dmg | tamaño - 26 209 bytes, suma de comprobación - f3c19414279b6d6b94b90341453906e4a69e28dd
  • 4.dmg | tamaño - 26 217 bytes, suma de comprobación - 9603c0334125762fc7908343e3ee400e038fe779

He estado navegando por Internet con la esperanza de encontrar algo sobre el "aleatorizador de datos en APFS", pero ... obviamente no pude encontrar nada, y además, no mucha gente sabía realmente sobre esto " característica". ¿Hay alguna información al respecto?

Estoy ejecutando macOS 10.12.6, los archivos DMG se crearon con la Utilidad de Discos, pero obtengo los mismos resultados con hdiutil.

    
pregunta L0W_P1X3L 22.03.2018 - 18:29

1 respuesta

3

Las copias de un dmg existente serán idénticas, pero los archivos dmg creados por separado no lo serán.

Garantizado efectivamente para diferir

El formato Apple Disk Image .dmg garantiza efectivamente que no haya dos imágenes de disco idénticas bit a bit. La igualdad entre las imágenes de disco que contienen los mismos contenidos no es un requisito práctico del formato.

UUID dentro del 0x6B6F6C79 / koly Bloque

Dentro del formato de archivo dmg está la estructura koly . Esta estructura incluye un ID de segmento de tipo uuid_t . Este es un identificador único universal de 128 bits ( UUID ). El identificador de SegmentID solo asegurará que cada archivo dmg difiera en más de un bit.

El uso de HFSleuth en la imagen de disco de iTunes 11.0 muestra el UUID incorporado:

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

En el ejemplo anterior, la línea Segment UUID: 626f726e-7743259b-6086eb93-4b42fb65 es un identificador único universal incrustado en la imagen del disco.

Diferencias de un bit y funciones hash

Una diferencia en un bit debe dar como resultado un cambio del 50% o más en una salida de función criptográfica hash, como SHA-2.

El uso de un UUID dentro de la estructura no es para asegurar que cada imagen de disco sea única, sino para facilitar la identificación del segmento dentro de la imagen de disco. Que un UUID proporcione propiedades únicas más allá del alcance de la imagen de disco es un subproducto del uso del UUID.

    
respondido por el Graham Miln 23.03.2018 - 08:43

Lea otras preguntas en las etiquetas