Muito tempo atrás eu notei que mesmo se eu criar arquivos DMG do mesmo diretório, com os mesmos arquivos e etc, os resultados serão sempre diferentes. Não apenas seu tamanho é menor que 15 bytes mais curto, mas suas somas de verificação SHA (e seu conteúdo, quando visualizadas pelo editor HEX) diferem drasticamente. Apenas por curiosidade, eu criei 5 arquivos DMG não criptografados compactados da mesma pasta contendo apenas um único arquivo de texto. Os resultados são:
- 0.mg | tamanho - 26 204 bytes, soma de verificação - 5ba9ba0ee4d8ec5ba4718f1b491baf31c2c4e642
- 1.dmg | tamanho - 26 221 bytes, soma de verificação - a86d76f6c07ee5a81c0aefb31b6fd40ef787ebd5
- 2.dmg | tamanho - 26 235 bytes, soma de verificação - a31f4cf29e4e2858b7ac63c82574499200d81108
- 3.dmg | tamanho - 26 209 bytes, soma de verificação - f3c19414279b6d6b94b90341453906e4a69e28dd
- 4.dmg | tamanho - 26 217 bytes, soma de verificação - 9603c0334125762fc7908343e3ee400e038fe779
Eu tenho navegado na internet na esperança de encontrar algo sobre o "randomizador de dados no APFS", mas ... obviamente não consegui encontrar nada, e além disso, poucas pessoas realmente sabiam sobre esse "recurso". Existe alguma informação sobre isso?
Estou executando o macOS 10.12.6, os arquivos DMG foram criados usando o Utilitário de Disco, mas obtenho os mesmos resultados com o hdiutil.
Respostas:
Cópias de um existente
dmg
será idêntico, mas criado separadamentedmg
arquivos não.Efetivamente garantido para diferir
o Imagem de disco da Apple
.dmg
O formato garante efetivamente que duas imagens de disco não serão bit por bit idênticas. Igualdade entre imagens de disco contendo o mesmo conteúdo não é um requisito prático do formato.UUID dentro do
0x6B6F6C79
/koly
QuadraDentro do
dmg
formato de arquivo é okoly
estrutura . Essa estrutura inclui um SegmentID do tipouuid_t
. Este é um identificador exclusivo universal de 128 bits ( UUID ). O identificador de SegmentID sozinho garantirá que cadadmg
arquivo difere em mais de um bit.Usando HFSleuth na imagem de disco do iTunes 11.0 mostra o UUID incorporado:
No exemplo acima, a linha
Segment UUID: 626f726e-7743259b-6086eb93-4b42fb65
é um identificador universalmente exclusivo incorporado na imagem de disco.Diferenças de um bit e funções hash
Uma diferença em um bit deve resultar em 50% ou mais de alteração em uma saída de função hash criptográfica, como SHA-2.
O uso de um UUID dentro da estrutura não é para garantir que cada imagem de disco seja única, mas para facilitar a identificação do segmento dentro da imagem do disco. Que um UUID fornece propriedades de exclusividade além do escopo da imagem de disco é um subproduto do uso do UUID.
fonte