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.