Este vreun algoritm de hash existent suficient de puternic?
Da; de fapt, orice algoritm hash sigur din punct de vedere criptografic (cum ar fi SHA-2, SHA-3, Blake2) ar fi suficient de puternic.
Pentru a sublinia acest lucru, permiteți-mi să subliniez că MD5 este suficient de puternic. Acum, MD5 este considerat destul de slab (și nimeni de aici nu ar susține utilizarea lui); cu toate acestea, chiar și cu slăbiciunile sale cunoscute, este încă suficient de puternic împotriva acestui atac specific.
MD5 are o ieșire de 128 de biți (în contrast cu funcțiile hash criptografice pe care le folosim în practică, care au ieșiri mult mai mari). În plus, există modalități cunoscute de a genera „coliziune”, adică perechi de intrări pe care MD5-hash la aceeași valoare. Cu toate acestea, acele metode presupun că atacul are control asupra ambelor intrări - în acest caz, editorul valid generează imaginea validă, iar atacatorul nu poate modifica ceea ce semnează editorul și, prin urmare, slăbiciunea de coliziune a MD5 nu se aplică. MD5 nu are slăbiciuni cunoscute la atacurile „a doua preimagine” sau la un atac „multitarget a doua preimagine” (care este exact ceea ce este), așa că singura abordare pe care o are atacatorul este hash-ul diferitelor intrări până când găsește o potrivire.
Acum, presupunem că există 60.000 USD \aproximativ 2^{16}$ semnături valabile; dacă atacatorul ghiceste, aceasta are aproximativ a $2^{-128+16} = 2^{-112}$ probabilitatea de hashing la una dintre ținte. Cu alte cuvinte, pentru a avea o șansă de una la o mie de a găsi o imagine care se îndreaptă către una dintre ținte, ar trebui să indice $2^{102}$ imagini.
Acum, se estimează că industria globală de minerit bitcoin evaluează aproximativ $2^{68}$ hashes pe secundă (de fapt, puțin mai puțin); asta înseamnă că, dacă atacul ar putea să dedice toată acea procesare [1] pentru a ataca sistemul dvs., ar trebui să se ocupe de el timp de aproximativ $2^{34}$ secunde (sau aproximativ 500 de ani) pentru a ajunge la acea șansă de 1 la o mie.
Dacă schimbi MD5 cu un cripto hash real, acei 500 de ani se transformă într-un interval de timp de tip „moartea la căldură a universului”.
[1]: Desigur, infrastructura actuală de minerit bitcoin este construită în jurul SHA-256 - voi ignora acest detaliu.