La solita risposta è così: qual è la probabilità che un asteroide canaglia si schianti sulla Terra entro il secondo successivo, cancellando la civiltà come la conosciamo e uccidendo qualche miliardo di persone? Si può sostenere che qualsiasi evento sfortunato con una probabilità inferiore a quella non è in realtà molto importante.
Se abbiamo una funzione di hash "perfetta" con il formato di uscita n , e abbiamo p messaggi agli hash (lunghezza singolo messaggio non è importante), quindi probabilità di collisione è di circa p 2 /2 n + 1 (questa è un'approssimazione che è valido per "piccolo" p , cioè sostanzialmente inferiore a 2 n / 2 ). Ad esempio, con SHA-256 ( n = 256 ) e un miliardo di messaggi ( p = 10 9 ) la probabilità è di circa 4,3 * 10 -60 .
Una roccia spaziale assassina di massa accade in media una volta ogni 30 milioni di anni. Questo porta ad una probabilità di un tale evento si verifichi nel secondo prossimo a circa 10 -15 . Sono 45 ordini di grandezza più probabili della collisione SHA-256. In breve, se trovi delle collisioni SHA-256 spaventose, le tue priorità sono sbagliate.
In una configurazione di sicurezza, in cui un utente malintenzionato può scegliere i messaggi che verranno sottoposti a hash, l'utente malintenzionato può utilizzare sostanzialmente più di un miliardo di messaggi; tuttavia, scoprirai che le probabilità di successo dell'attaccante saranno ancora minime. Questo è il punto centrale dell'utilizzo di una funzione hash con output a 256 bit: in modo che i rischi di collisione possano essere trascurati.
Naturalmente, tutto quanto sopra presuppone che SHA-256 sia una funzione di hash "perfetta", che è lungi dall'essere provata. Tuttavia, SHA-256 sembra abbastanza robusto.