Benutzer:Bananenfalter/GMR (Signaturverfahren)

aus Wikipedia, der freien Enzyklopädie

Weblinks

Alter Artikel

GMR ist ein digitales Signaturverfahren, das nach seinen Erfindern Shafi Goldwasser, Silvio Micali und Ronald L. Rivest benannt ist.

Wie auch RSA beruht GMR auf der Faktorisierungsannahme, dass es bijektive Funktionen gibt, die schnell zu berechnen sind, bei denen die Berechnung der Umkehrfunktion jedoch sehr aufwändig ist.
Im Gegensatz zu RSA lässt sich für GMR jedoch beweisen, dass es selbst bei einem adaptiven aktiven Angriff nicht möglich ist, auch nur eine neue Signatur zu fälschen.

Das Verfahren im Einzelnen

Man benötigt ein kollisionsresistentes Permutationspaar mit Geheimnis mit dem Definitionsbereich . Der Besitzer des Geheimnisses kann die Umkehrfunktionen und leicht berechnen. Für alle anderen ist das schwer.

Um eine einzige Nachricht zu signieren muss der Sender eine Referenz aus zufällig wählen und authentisch veröffentlichen. Um eine n bit lange Nachricht zu signieren berechnet er die Signatur . Der Empfänger kann die Umkehrfunktion davon berechnen und das Ergebnis mit der Referenz vergleichen.

Offensichtlich besteht das Problem darin, für jede Nachricht eine neue Referenz zu veröffentlichen. Dies wird mit Referenzbäumen realisiert.


Notizen

http://www.infosec.pku.edu.cn/course/2004/GMR84.pdf – Originalpaper http://www.semper.org/sirene/publ/FoPf_91GMR.VIS91.ps.gz

Permutationspaar:

  • Verifizieren beginnend mit MSB
  • einfach zu berechnen

Umkehrpermutation:

  • Signieren beginnend mit LSB
  • Wurzelziehen mod n ist schwer, Berechnung nur mittels Kenntnis von p, q prim mit n = p · q

Probleme:

  • Jedes Zwischenergebnis ist die korrekte Signatur der bis dahin verkürzten Nachricht. → präfixfreie Nachricht
  • Einmalreferenzen müssen authentisch sein. → Referenzenbaum

Handbook of Cryptography, S.468 ff.

  • GMR ist Einmal-Signatur-Schema → durch Erweiterung mit Referenzbaum kann man mehrere Nachrichten signieren
  • eher theoretischer Natur, aber trotzdem praktisch umsetzbar → Sirene: Fox/Pfitzmann
  • kollisionsfreie Permutation: es ist praktisch unmöglich ein Paar x,y \in D, x \neq y zu finden, für welches f_0(x) = f_1(y)
  • Einwegpermutation mit Falltür: unter Kenntnis einer Zusatzinformation (hier p, q) ist es effizient möglich f_0^{-1} und f_1^{-1} zu bestimmen.
  • Wenn ein Angreifer die Umkehrpermutation berechnen könnte, dann wäre es leicht eine Kollision zu finden: wähle x, berechne z = f_0(x) und y = f_1^{-1}(z), dann ist f_0(x) = f_1(y).
  • Wahl von p und q: p \equiv 3 \pmod 4 und q \equiv 7 \pmod 8 – notwendig, da sonst nicht gewährleistet ist, dass die Permutation kollisionsresistent ist (siehe Beweis) → Sicherheit kann auf Faktorisierungsannahme zurückgeführt werden

Parameter:

… zufällig gewählter Verifikationsparameter (Referenz, eine binäre Zeichenkette)
… öffentlicher Verifikationsschlüssel
… privater Signierschlüssel

Eine binäre Zeichenkette kann mit dem Verifikationsparameter signiert werden. Man beachte dabei die umgekehrte Reihenfolge, in der die einzelnen Zeichen bearbeitet werden:

Der Signierer sendet Nachricht und Signatur an den Empfänger. Dieser kann nun die Signatur überprüfen:

Ist die berechnete Referenz gleich dem Verifikationsparameter , so kann davon ausgegangen werden, dass die Nachricht vom Besitzer des privaten Schlüssels signiert und seit dem nicht verändert wurde. Die Authentizität des Signierers muss auf andere Weise sichergestellt werden, zum Beispiel indem öffentliche Schlüssel zertifiziert werden.

Der Verifikationsparameter sollte erst mit der Nachricht veröffentlicht werden, da es für einen Angreifer sonst über einen längeren Zeitraum mit entsprechend hohem Rechenaufwand möglich sein könnte, eine Kollision und somit eine andere Nachricht zu finden, welche bei gleichem Verifikationsparameter die gleiche Signatur erzeugt. [Quelle!?]


Referenzbaum

  • authentication trees
  • öffentlicher Binärbaum mit Blattknoten
  • (vorerst) nicht-öffentliche zufällige Referenzen

Erstellen eines Referenzbaumes:

  1. Wähle zufällige Wurzelreferenz und weitere Referenzen und .
  2. Erstelle mittels GMR Signatur für Verkettung von und mit dem Verifikationsparameter :
  3. Wähle zufällige Referenzen und . Signiere diese mit dem Verifikationsparameter :
  4. Und so weiter: Dies kann für jeden Ast beliebig oft wiederholt werden. Immer werden zwei neue zufällig gewählte Referenzen mit der übergeordneten Referenz signiert. Um Blattknoten zu erhalten muss der Binärbaum Ebenen haben.

Es muss mindestens die Wurzelreferenz öffentlich bekannt sein. Neue Äste können bei Bedarf erstellt werden. Soll eine Nachricht signiert werden, dann wählt man eine der noch nicht veröffentlichten Referenzen . Diese wird mit einem noch nicht verwendeten Blattknoten als Verifikationsparamter signiert: . Um eine Signatur zu überprüfen benötigt der Verifizierer immer mindestens die Referenzen und deren Signaturen des gesamten Astes vom Wurzelknoten bis zum entsprechenden Blattknoten sowie den Verifikationsparameter für die Nachricht und dessen Signatur . und dessen Signatur werden, wie im Fall ohne Referenzbäume immer erst mit der Nachricht veröffentlicht.

→ Beispiel

Referenzbaum…
Referenzbaum…