Digamos que temos um bilhão de imagens exclusivas, um megabyte cada. Calculamos o hash SHA-256 para o conteúdo de cada arquivo. A possibilidade de colisão depende de:
- o número de arquivos
o tamanho do arquivo único
Até onde podemos ir ignorando essa possibilidade, assumindo que seja zero?
Respostas:
A resposta usual é a seguinte: qual é a probabilidade de um asteróide desonesto colidir com a Terra no próximo segundo, obliterando a civilização como a conhecemos e matando alguns bilhões de pessoas? Pode-se argumentar que qualquer evento azarado com uma probabilidade menor do que isso não é realmente muito importante.
Se tivermos uma função hash "perfeita" com tamanho de saída n , e temos p mensagens de hash (comprimento mensagem individual não é importante), então a probabilidade de colisão é de cerca de p 2 /2 n + 1 (esta é uma aproximação que é válido para p "pequeno" , ou seja, substancialmente menor que 2 n / 2 ). Por exemplo, com SHA-256 ( n = 256 ) e um bilhão de mensagens ( p = 10 9 ), a probabilidade é de 4,3 * 10 -60 .
Um rock espacial assassino em massa acontece cerca de uma vez a cada 30 milhões de anos, em média. Isso leva a uma probabilidade de um evento desse tipo ocorrer no próximo segundo a cerca de 10 a 15 . São 45 ordens de magnitude mais prováveis que a colisão do SHA-256. Resumindo, se você acha as colisões do SHA-256 assustadoras, suas prioridades estão erradas.
Em uma configuração de segurança, onde um invasor escolhe as mensagens que serão divididas em hash, o invasor pode usar substancialmente mais de um bilhão de mensagens; no entanto, você descobrirá que a probabilidade de sucesso do invasor ainda será muito pequena. Esse é o objetivo de usar uma função hash com uma saída de 256 bits: para que os riscos de colisão possam ser negligenciados.
Obviamente, tudo isso pressupõe que o SHA-256 é uma função hash "perfeita", que está longe de ser comprovada. Ainda assim, o SHA-256 parece bastante robusto.
fonte
A possibilidade de uma colisão não depende do tamanho dos arquivos, apenas do número deles.
Este é um exemplo do paradoxo do aniversário . A página da Wikipedia fornece uma estimativa da probabilidade de uma colisão. Se você executar os números, verá que todos os discos rígidos já produzidos na Terra não podem conter arquivos de 1 MB suficientes para obter uma probabilidade de colisão de 0,01% para o SHA-256.
Basicamente, você pode simplesmente ignorar a possibilidade.
fonte
Primeiro de tudo, não é zero, mas muito próximo de zero .
A questão principal é o que acontece se realmente ocorrer uma colisão ? Se a resposta for "uma usina nuclear explodirá", é provável que você não deva ignorar a possibilidade de colisão. Na maioria dos casos, as consequências não são tão graves e você pode ignorar a possibilidade de colisão.
Além disso, não esqueça que seu software (ou uma pequena parte dele) pode ser implantado e usado simultaneamente em um zilhão de computadores (alguns minúsculos microcomputadores incorporados que estão em quase todos os lugares hoje em dia). Nesse caso, você precisa multiplicar a estimativa obtida pelo maior número possível de cópias.
fonte