Posso motivare la differenza per te con scenari di attacco.
In un primo attacco preimage , chiediamo ad un avversario, dato solo , di trovare o qualche tale che = . Supponiamo che un sito Web memorizzi nei suoi database anziché . Il sito Web può comunque verificare l'autenticità dell'utente accettando la password e confrontando (con probabilità di per alcuni grandi per falsi positivi). Supponiamo ora che questo database sia trapelato o sia altrimenti compreso. Un primo attacco preimagem m ′ H ( m ′ ) H ( m ) { u s e r n a m e , H ( p a s s w o r d ) } { u s e r n a m e , p a s s w o r d } H ( i nH(m)mm′H(m′)H(m){username,H(password)}{username,password}1 / 2 n nH(input)=?H(password)1/2nnè la situazione in cui un avversario ha accesso solo a un digest di messaggi e sta cercando di generare un messaggio che ha un hash su questo valore.
In un secondo attacco preimage , consentiamo all'avversario ulteriori informazioni. In particolare, non solo gli diamo ma gli diamo anche . Considera la funzione hash dove e sono numeri primi grandi e è una costante pubblica. Ovviamente per un primo attacco preimage questo diventa il problema di RSA e si ritiene che sia difficile. Tuttavia, nel caso del secondo attacco preimage trovare una collisione diventa facile. Se si imposta ,mH(m)mH(m)=mdmodpqpqdm′=mpq+mH(mpq+m)=(mpq+m)dmodpq=mdmodpq. E così l'avversario ha trovato una collisione con poco o nessun calcolo.
Vorremmo che le funzioni di hash in un modo fossero resistenti agli attacchi di seconda immagine a causa di schemi di firma digitale, nel qual caso è considerato informazione pubblica e viene trasmesso (attraverso un livello di riferimento indiretto) ad ogni copia del documento. Qui un utente malintenzionato ha accesso a entrambi i e . Se l'attaccante può presentare una variazione del documento originale (o un messaggio completamente nuovo) tale che potrebbe pubblicare il suo documento come se fosse il firmatario originale.H(document)documentH(document)d′H(d′)=H(document)
Un attacco di collisione consente all'avversario ancora più opportunità. In questo schema, chiediamo all'avversario (posso chiamarlo Bob?) Di trovare due messaggi e tali che . A causa del principio del buco del piccione e del paradosso del compleanno, anche le funzioni di hash "perfette" sono quadraticamente più deboli rispetto agli attacchi preimage. In altre parole, dato un imprevedibile e irreversibile messaggio digest funzione che impiega tempo per la forza bruta, una collisione può si trova sempre nel tempo previsto .m1m2H(m1)=H(m2)f({0,1}∗)={0,1}nO(2n)O(sqrt(2n))=O(2n/2)
Bob può usare un attacco di collisione a suo vantaggio in molti modi. Ecco uno dei più semplici: Bob trova una collisione tra due binari e ( ) tale che b sia una valida patch di sicurezza di Microsoft Windows e sia malware. (Bob funziona per Windows). Bob invia la sua patch di sicurezza nella catena di comando, dove dietro un caveau firmano il codice e spediscono il file binario agli utenti Windows in tutto il mondo per correggere un difetto. Bob ora può contattare e infettare tutti i computer Windows in tutto il mondo con e la firma che Microsoft ha calcolato perbb′H(b)=H(b′)b′b′b. Al di là di questo tipo di scenari di attacco, se si ritiene che una funzione hash sia resistente alle collisioni, anche quella funzione hash è più probabile che sia preimage.