La respuesta habitual es la siguiente: ¿cuál es la probabilidad de que un asteroide deshonesto se estrelle en la Tierra en el próximo segundo, destruyendo la civilización tal como la conocemos y matando a unos pocos miles de millones de personas? Se puede argumentar que cualquier evento desafortunado con una probabilidad menor que eso no es realmente muy importante.
Si tenemos una función hash "perfecto" con tamaño de salida n , y tenemos p mensajes en Hash (longitud del mensaje individual no es importante), entonces la probabilidad de colisión es de aproximadamente p 2 /2 n + 1 (esto es una aproximación que es válido para "pequeño" p , es decir, sustancialmente más pequeño que 2 n / 2 ). Por ejemplo, con SHA-256 ( n = 256 ) y mil millones de mensajes ( p = 10 9 ), entonces la probabilidad es de aproximadamente 4.3 * 10 -60 .
Una roca espacial de asesino en masa ocurre aproximadamente una vez cada 30 millones de años en promedio. Esto conduce a una probabilidad del evento un tales que ocurre en el siguiente segundo a alrededor de 10 -15 . Son 45 órdenes de magnitud más probables que la colisión SHA-256. En pocas palabras, si las colisiones SHA-256 dan miedo, sus prioridades son incorrectas.
En una configuración de seguridad, donde un atacante puede elegir los mensajes que serán procesados, entonces el atacante puede usar sustancialmente más de mil millones de mensajes; sin embargo, encontrará que la probabilidad de éxito del atacante seguirá siendo muy pequeña. Ese es el objetivo de usar una función hash con una salida de 256 bits: para que se puedan ignorar los riesgos de colisión.
Por supuesto, todo lo anterior supone que SHA-256 es una función hash "perfecta", que está lejos de ser probada. Aún así, SHA-256 parece bastante robusto.