Was ist der Unterschied zwischen einem zweiten Preimage-Angriff und einem Kollisionsangriff?

24

Wikipedia definiert einen zweiten Preimage-Angriff als:

Wenn eine feste Nachricht m1 gegeben ist, finde eine andere Nachricht m2, so dass Hash (m2) = Hash (m1) ist.

Wikipedia definiert einen Kollisionsangriff als:

finde zwei willkürlich verschiedene Nachrichten m1 und m2, so dass Hash (m1) = Hash (m2) ist.

Der einzige Unterschied, den ich sehen kann, ist, dass in einem zweiten Preimage-Angriff m1 bereits existiert und dem Angreifer bekannt ist. Das scheint mir jedoch nicht von Bedeutung zu sein - das Endziel besteht immer noch darin, zwei Nachrichten zu finden, die denselben Hash erzeugen.

Was sind die wesentlichen Unterschiede bei der Durchführung eines zweiten Preimage-Angriffs und eines Kollisionsangriffs? Was sind die Unterschiede in den Ergebnissen?

(Abgesehen davon kann ich diese Frage nicht richtig kennzeichnen. Ich versuche, die Tags "Cryptography Security Pre-Image Collision" anzuwenden, habe aber nicht genug Reputation. Kann jemand die entsprechenden Tags anwenden?)

Thomas Owens
quelle
1
Ihr Eindruck ist richtig - das ist der Unterschied. Der Teil, in dem Sie sich irren, ist, dass dies ein RIESIGER Unterschied in der Praxis ist. Es ist eine Sache, in der Lage zu sein, zwei Dinge zu finden, die eine Kollision haben, und eine ganz andere, in der Lage zu sein, eine Kollision für einen bestimmten Klartext zu finden. Wenn Sie beispielsweise eine bestimmte Nachricht fälschen möchten, ist es nutzlos, existenzielle Fälschungen begehen zu können. Sie benötigen eine andere Nachricht, die mit der Nachricht, die Sie abgefangen haben, identisch ist.
Adrian Petrescu
@Adrian Petrescu: Könnten Sie das beantworten und vielleicht noch etwas näher darauf eingehen? Fügen Sie Dinge hinzu, wie zum Beispiel, wann jede (Sie stellen eine Situation für einen Preimage-Angriff, aber nicht für einen Kollisionsangriff bereit) am besten geeignet ist?
Thomas Owens

Antworten:

27

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)mmH(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)dH(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 ' bbbH(b)=H(b)bbb. Ü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.

Ross Snider
quelle
Das ist wunderschön erklärt. Viel mehr Mathe, als ich gesucht habe, aber ich schätze die Mühe sehr - ich bin dir durch alle gefolgt. Vielen Dank.
Thomas Owens
Und wow. Ein RIT-Kommilitone.
Thomas Owens
1
Wie geht es Thomas? Ich glaube du hattest Physik mit meinem Freund Alan Meekins. Schön, RIT-Leute hier zu sehen! Vielen Dank auch für die Annahme der Antwort.
Ross Snider
Ziemlich gut. Wenn Sie sich im Herbst auf dem Campus aufhalten und an Sicherheit interessiert sind, können wir Sie vielleicht persönlich einholen. Ich habe diesen Sommer einige angewandte Sicherheitsarbeiten durchgeführt (Anwenden von Stenografie, Steganalyse, Verschlüsselung mit öffentlichen Schlüsseln, digitale Signaturen) und würde gerne etwas über die theoretische Seite erfahren (so sehr ich daran interessiert bin - ich habe die nicht Zeit oder mathematischer Hintergrund, um eine Menge der Arbeiten zu diesem Thema durchzuarbeiten).
Thomas Owens
[email protected]
Ross Snider
2

Kollisionsangriffe mögen viel einfacher sein, aber wenn sie erfolgreich sind, sind sie viel weniger nützlich.

Jukka Suomela
quelle
1

Das Problem, das Ross als das Problem des diskreten Protokolls bezeichnet, ist in Wirklichkeit ein ganz anderes Problem, das RSA-Problem, das viel mehr mit der Berechnung von Roots als mit dem diskreten Protokoll zusammenhängt.


quelle
2
Das ist sicherlich wahr! Hoppla. Ursprünglich habe ich das diskrete Protokollproblem verwendet und später die Details des Schemas bearbeitet. Guter Fang. Ich bin mir nicht sicher, ob dies eine neue Antwort darstellt - es war wahrscheinlich sinnvoller, unter meiner Antwort einen Kommentar zu hinterlassen.
Ross Snider