Ich kann den Unterschied für Sie mit Angriffsszenarien motivieren.
In einem ersten Preimage-Angriff bitten wir einen Gegner, der nur hat, oder einige zu finden so dass = . Angenommen, eine Website speichert in ihren Datenbanken anstelle von . Die Website kann weiterhin die Authentizität des Benutzers überprüfen, indem das Kennwort akzeptiert und (mit einer Wahrscheinlichkeit von für einige große für falsche Positive). Nehmen wir nun an, diese Datenbank ist durchgesickert oder anderweitig komprimiert. Ein erster Preimage-Angriffm 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/2nnDies ist die Situation, in der ein Gegner nur Zugriff auf einen Nachrichtenauszug hat und versucht, eine Nachricht zu generieren, die mit diesem Wert hascht.
In einem zweiten Preimage-Angriff lassen wir dem Gegner mehr Informationen zu. Insbesondere geben wir ihm nicht nur sondern auch . Man betrachte die Hash-Funktion wobei und große Primzahlen sind und eine öffentliche Konstante ist. Offensichtlich wird dies für einen ersten Preimage-Angriff zum RSA-Problem und gilt als schwierig. Im Falle des zweiten Preimage-Angriffs wird es jedoch leicht, eine Kollision zu finden. Wenn man , istm H ( m ) = m dH(m)mp q d m ' = m p q + m H ( m p q + m ) = ( m p q + m ) dH(m)=mdmodpqpqdm′=mpq+mH(mpq+m)=(mpq+m)dmodpq=mdmodpq. Und so hat der Gegner eine Kollision mit wenig bis gar keiner Berechnung gefunden.
Wir möchten, dass One-Way-Hash-Funktionen aufgrund von Schemata für digitale Signaturen resistent gegen Second-Pre-Image-Angriffe sind. In diesem Fall wird als öffentliche Information betrachtet und (durch eine Indirektionsebene) mit jeder Kopie des Dokuments weitergegeben. Hier hat ein Angreifer Zugriff auf und . Wenn der Angreifer eine Variation des Originaldokuments (oder eine völlig neue Nachricht) so dass , könnte er sein Dokument veröffentlichen, als wäre er der ursprüngliche Unterzeichner.H(document)documentH(document)d′H(d′)=H(document)
Ein Kollisionsangriff bietet dem Gegner noch mehr Möglichkeiten. In diesem Schema bitten wir den Gegner (kann ich ihn Bob nennen?), Zwei beliebige Nachrichten und so dass . Aufgrund des Pigeonhole-Prinzips und des Geburtstagsparadoxons sind selbst 'perfekte' Hash-Funktionen quadratisch schwächer für Kollisionsangriffe als Preimage-Angriffe. Mit anderen Worten, wenn eine unvorhersehbare und irreversible Nachrichtenauszugsfunktion die Zeit benötigt, um Gewalt anzuwenden, kann eine Kollision auftreten immer in der erwarteten Zeit gefunden werden .m 2 H ( m 1 ) = H ( m 2 ) f ( { 0 , 1 } ∗ ) = { 0 , 1 } n O ( 2 n )m1m2H(m1)=H(m2)f({0,1}∗)={0,1}nO(2n)O(sqrt(2n))=O(2n/2)
Bob kann einen Kollisionsangriff auf viele Arten zu seinem Vorteil nutzen. Hier ist eine der einfachsten: Bob findet eine Kollision zwischen zwei Binärdateien und ( ), sodass b ein gültiger Microsoft Windows-Sicherheitspatch und Malware ist. (Bob arbeitet für Windows). Bob schickt seinen Sicherheitspatch die Befehlskette hoch, wo sie hinter einem Tresor den Code signieren und die Binärdatei an Windows-Benutzer auf der ganzen Welt senden, um einen Fehler zu beheben. Bob kann jetzt mit und der Signatur, die Microsoft für berechnet hat , alle Windows-Computer auf der ganzen Welt kontaktieren und infizierenb ' H ( b ) = H ( b ' ) b ' b ' bbb′H(b)=H(b′)b′b′b. Über diese Art von Angriffsszenarien hinaus ist es auch wahrscheinlicher, dass eine Hash-Funktion vor dem Bild geschützt ist, wenn angenommen wird, dass sie kollisionssicher ist.