Podem dois arquivos de firmware diferentes ter a mesma soma de md5?

5

Podem dois arquivos binários diferentes ter a mesma soma md5? Um arquivo de firmware binário tem um número de versão diferente e marcado como revisado, um pequeno bug corrigido. Mas ambos os arquivos têm a mesma soma md5, eu diria que o arquivo revisado não pode ter a mesma soma md5 - isso pode ser um erro?

    
por minto 09.10.2016 / 12:48

6 respostas

9

O que as respostas existentes deixam de apontar é porque uma colisão é considerada improvável neste caso.

O MD5, como qualquer algoritmo de hashing, foi deliberadamente projetado para que uma colisão não aconteça se você alterar apenas alguns caracteres. Você tem que mudar a maioria, senão todos, para voltar ao mesmo hash. Isso porque o objetivo de um hash é detectar erros de um único bit (ou poucos bits); Nesse domínio do problema, você deseja que as alterações menores ativem definitivamente uma alteração de hash. Com falhas, embora agora saibamos que o MD5 é, essa propriedade vale até hoje.

Então, a menos que a nova versão do firmware seja completamente diferente , e a menos que você tenha testemunhado um fenômeno de uma vez em um milhão, as chances são enormes simplesmente recebeu a versão antiga novamente. Parabéns, porque este é o processo de verificação de hash que funciona exatamente como pretendido. :)

    
por Lightness Races in Orbit 10.10.2016 / 00:39
18

Claro. A vulnerabilidade de colisão do MD5 é bem conhecida (consulte Crypto.SE , Wikipedia ). Embora ainda seja um evento de baixa probabilidade, isso pode ser feito. No entanto, no seu caso, suspeito de um erro ao copiar os arquivos.

    
por muru 09.10.2016 / 12:57
10

Geralmente, dois arquivos podem ter o mesmo hash md5 somente se o conteúdo for exatamente o mesmo. Até mesmo um único bit de variação gerará um valor de hash completamente diferente.

No entanto, há uma ressalva: Uma soma md5 é de 128 bits (16 bytes). Como o número de diferentes conteúdos de arquivo possíveis é infinito, e o número de diferentes somas md5 possíveis é finito, existe uma possibilidade (embora pequena probabilidade na maioria dos casos) de colisão de hashes. Em outras palavras, dois arquivos diferentes podem produzir a mesma soma quando hash com md5.

Por causa disso, é melhor em alguns casos usar um hash de bit maior (mais possíveis saídas diferentes), reduzir a probabilidade (já baixa) de uma colisão de hash acidental e aumentar a dificuldade de criar uma colisão de hash deliberada por meio de força bruta.

Exemplos de hashes de bits mais altos incluem a família de hashes SHA-2, especialmente sha256 , sha384 ou sha512 (que é o melhor.) O número após sha indica o número de bits correspondentes o algoritmo de hash gera.

    
por heemayl 09.10.2016 / 12:58
3

Como outros já disseram, uma colisão MD5 é hipoteticamente possível, mas extremamente implausível (1 em 2 ^ 128 é apenas 1 em 340.282.366.920.938.463.463.374.607.431.768.211.456 chances), e você provavelmente tem um erro de cópia de arquivo.

Eu recomendaria fazer uma comparação byte a byte dos dois arquivos, usando um dos muitos métodos descritos aqui: link .

Ou apenas diff file1 file2 - e a menos que você receba a mensagem "Arquivos binários arquivo1 e arquivo2 diferem", os arquivos são os mesmos.

    
por Dewi Morgan 09.10.2016 / 22:34
1

Todas as respostas acima ignoram o detalhe mais importante:

Uma soma de verificação MD5 é definida para ter 128 bits. Isso significa que existem apenas 2 ^ 128 valores MD5 diferentes. Quantas imagens diferentes de firmware são possíveis? Bem, isso depende de quão grande eles são, e isso depende de qual porcentagem de seqüências aleatórias de bytes pode ser considerada um firmware válido. As possibilidades são, no entanto, existem mais de 2 ^ 128 possíveis imagens de firmware.

muito mais, o que significa que deve ser duplicados.

Mas, a chance de qualquer imagem de firmware dada corresponder a uma soma de verificação MD5 dada é apenas 1 em 2 ^ 128, o que é um número muito pequeno.

MUITO pequeno.

Assim, a chance de quaisquer dois desenvolvedores acidentalmente criar imagens diferentes que tenham a mesma soma de verificação MD5 a qualquer momento durante a existência da civilização humana é muito pequena para você se preocupar.

Isso é acidentalmente . Deliberadamente é uma questão diferente. Se você está trabalhando para a NSA, então 128 bits não serão suficientes para satisfazer seus chefes, e o MD5 tem vulnerabilidades conhecidas que o tornam mais fraco que 128 bits.

Mas se você estivesse trabalhando para a NSA, provavelmente já sabia disso.

    
por james large 10.10.2016 / 00:56
0

Muito improvável mas possível. Verifique o tamanho do arquivo e as datas para mais informações. Se os arquivos forem diferentes, seria ainda mais improvável que eles tivessem o mesmo tamanho e hash.

    
por Gringo Suave 09.10.2016 / 19:46