Prefer să mă gândesc la criptografie ca la infrastructură. Ar trebui să ne străduim să dezvoltăm o infrastructură care să minimizeze numărul de avertismente de utilizare.Nu este sarcina criptografiei să definească mesajele „semnificative” din aplicația dumneavoastră. Poți să te uiți la o anumită coliziune $m_1, m_2$ si spune cu certitudine ca Nu aplicarea unei funcții hash va vreodată atribuie acestora un sens $m_1$ și $m_2$?
Ce funcție hash ai folosi mai degrabă, una cu garanția „e greu de găsit orice coliziuni" sau unul cu garanție "este greu să găsești o coliziune, cu excepția uneori printre șiruri care sunt JPG-uri de gerbili și fișiere gzip ale lui Shakespeare"? Nu aș dori să conduc o mașină cu un autocolant de avertizare pe care scrie „mașina poate exploda dacă conduci 88.1 mph cu semnalul de viraj stânga pornit și radioul reglat la 88.1 FM”, chiar dacă avertismentul a fost corect îngust și nu aș face niciodată acele 3 lucruri în același timp.
De aceea, definițiile de securitate criptografică consideră o coliziune orice două mesaje care satisfac $H(x_1) = H(x_2)$, un fals de semnătură pe orice mesajul este un atac, criptări ale orice textul simplu ar trebui să arate imposibil de distins etc. Dacă doriți ca criptografie să fie utilizată, asigurați-vă că depuneți eforturi pentru o garanție de securitate care să pună toata lumea în largul lor.
Un al doilea motiv practic pentru a fi îngrijorat de o coliziune „nestructurată” în $H$, este că atunci când se găsește unul, este adesea o chestiune de timp înainte ca tehnicile să fie extinse pentru a găsi coliziuni „structurate”. De exemplu, găsirea coliziunilor structurate într-o funcție aleatorie (folosind atacul clasic de coliziune Yuval) este aproximativ aceeași dificultate ca și găsirea coliziunilor nestructurate (folosind forța brută standard și limitarea zilei de naștere).