76 A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr 75 A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr Der Besitzer des Geheimnisses soll aber die Inversen der Funktionen berechnen können. Konstruktion unter Faktorisierungsannahme: Solche kollisionsresistenten Permutationenpaare kann man unter der Faktorisierungsannahme mit den üblichen Geheimnissen konstruieren (vgl. §3.4.1): Das Geheimnis s<strong>in</strong>d wieder zufällig <strong>und</strong> stochastisch unabhängig gewählte große Primzahlen p <strong>und</strong> q, diesmal sogar mit der Anforderung p ≡ 3 mod 8, q ≡ 7 mod 8. 3.5 GMR: E<strong>in</strong> kryptographisch starkes Signatursystem Wie <strong>in</strong> §3.4.1 unter „Zur Primzahlerzeugung“ erwähnt, gibt es auch mit diesen Eigenschaften genug Primzahlen. GMR, benannt nach den ersten Buchstaben der Nachnamen se<strong>in</strong>er Erf<strong>in</strong>der Shafi Goldwasser, Silvio Micali <strong>und</strong> Ronald L. Rivest, ist historisch das erste praktikable, kryptographisch starke Signatursystem. Man kann zeigen, daß es selbst bei e<strong>in</strong>em adaptiven aktiven Angriff unmöglich ist, auch nur e<strong>in</strong>e neue Signatur zu fälschen (egal unter was für e<strong>in</strong>e s<strong>in</strong>nlose Nachricht), wenn die Faktorisierungsannahme gilt. (Vgl. <strong>in</strong> §3.1.3: Es ist sicher gegen den schwächsten Erfolg c2 <strong>und</strong> beim stärksten Angriff b. adaptiv.) Veröffentlicht wurde es <strong>in</strong> [GoMR_88]. Die Permutationen s<strong>in</strong>d im wesentlichen die Quadrierfunktion, von der wir ja schon wissen, daß das Geheimnis zum Invertieren, d.h. hier zum Wurzelziehen hilft. Erstens ist aber die Quadrierfunktion ke<strong>in</strong>e Permutation, sondern bildet immer 4 Wurzeln auf dasselbe Quadrat ab (vgl. §3.4.1.7). Deswegen müssen wir den Def<strong>in</strong>itionsbereich so e<strong>in</strong>schränken, daß von diesen vieren immer nur noch genau e<strong>in</strong>e dar<strong>in</strong> liegt. Dazu wählt man Dn = {x ∈ ZZ * x n | ( n )=1, x < n/2}.68 Das Zeichen „
78 A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr 77 A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr R f 0 f 1 Daraus folgt ( 2 n ) = –1. Nehmen wir nun an, jemand habe e<strong>in</strong>e Kollision gef<strong>und</strong>en, also x, y mit f0 (x)=f1 (y). Dann gilt s(1) s(0) Bild 3-22: M<strong>in</strong>i-GMR für e<strong>in</strong>e 1-Bit-Nachricht. s(0) <strong>und</strong> s(1) s<strong>in</strong>d die möglichen Signaturen. <strong>Sicherheit</strong>, Skizze: E<strong>in</strong>en echten aktiven Angriff gibt es hier nicht, da nur e<strong>in</strong>e Nachricht signiert wird. Es kann aber se<strong>in</strong>, daß e<strong>in</strong> Fälscher die Signatur unter m = 0 erhalten hat <strong>und</strong> daraus die unter m=1 fälschen möchte oder umgekehrt. Man ahnt anhand von Bild 3-22, daß das heißt, daß der Angreifer e<strong>in</strong>e Kollision f<strong>in</strong>det. Ganz so e<strong>in</strong>fach ist es aber nicht: Er hat ja bei der e<strong>in</strong>en Hälfte der Kollision die Hilfe des Unterzeichners gehabt, der das Geheimnis kennt <strong>und</strong> sowieso Kollisionen berechnen kann. Wir müssen zeigen, daß der Fälscher auch ohne diese Hilfe an irgende<strong>in</strong>e Kollision kommt: O.B.d.A. wird nur der erste Fall betrachtet, also m = 0 ist gegeben. Wir nehmen an, daß es hierfür e<strong>in</strong>en guten Fälschungsalgorithmus F mit E<strong>in</strong>gabe (n, R, s(0)) gäbe, <strong>und</strong> zeigen, daß es dann auch e<strong>in</strong>en guten Kollisionsf<strong>in</strong>de-Algorithmus K gibt: K : E<strong>in</strong>gabe n. Wähle e<strong>in</strong>e „Signatur“ S0 ∈ Dn zufällig. (Hier wird gebraucht, daß das alle<strong>in</strong> mit dem öffentlichen Schlüssel geht. Da S0 nicht mit dem Signieralgorithmus gewählt wird, wird es nicht mit s(0) bezeichnet. Entsprechendes gilt unten für die Bezeichnung S1 statt s(1).) Berechne R := f0(S0 ). Verwende nun F mit E<strong>in</strong>gabe (n, R, S0 ). Wenn F erfolgreich ist, nenne das Ergebnis S1 . Ausgabe: (S0 , S1 ). x2 ≡ ± (2y) 2 mod n. Das Vorzeichen „–“ ist nicht möglich, weil –1 ke<strong>in</strong> Quadrat mod n ist. Also s<strong>in</strong>d x <strong>und</strong> 2y zwei Wurzeln derselben Zahl. Nach §3.4.1.9 können wir damit def<strong>in</strong>itiv faktorisieren, wenn sie wesentlich verschieden s<strong>in</strong>d, d.h. x ≠ ±2y. Dies folgt daraus, daß sie schon verschiedene Jacobi-Symbole haben: Wegen x, y ∈ Dn haben x <strong>und</strong> y das Jacobi-Symbol +1, <strong>und</strong> wegen §3.4.1.8 gilt ( ±2y ) = (±1) • (2) • (y) = 1 • (–1) • 1 ≠ 1 = (x n n n n n ). Das Umkehren mittels Geheimnis geht so: Ist x = f –1 0 (y) gesucht, so testet man zunächst, ob y selbst e<strong>in</strong> Quadrat ist (s. §3.4.1.7). Andernfalls ist nach Def<strong>in</strong>ition von f0 : y = –x2 , d.h. –y = x2 . Man zieht also die Wurzel aus y bzw. –y nach dem Verfahren aus §3.4.1.8. Die so erhaltene Wurzel w ist selbst e<strong>in</strong> Quadrat (vgl. §3.4.1.6), hat also das Jacobi-Symbol +1. Je nachdem, ob sie < oder ≥ n/2 ist, setzt man x = +w bzw. –w. Für f –1 1 (y) ist zusätzlich nach dem Wurzelziehen modulo n durch 2 zu dividieren. Da 2 das Jacobi-Symbol –1 hat, f –1 1 (y) aber im Def<strong>in</strong>itionsbereich der Permutationen liegen, also Jacobi- Symbol 1 haben muß, muß wegen der Multiplikativität des Jacobi-Symbols der Wert nach dem Wurzelziehen Jacobi-Symbol –1 haben. Hierzu werden nach dem Wurzelziehen mod p <strong>und</strong> mod q die Ergebnisse mit unterschiedlichem Vorzeichen <strong>in</strong> den CRA e<strong>in</strong>gesetzt. Klar ist, daß dieses K immer e<strong>in</strong>e Kollision f<strong>in</strong>det, wenn se<strong>in</strong> Aufruf von F erfolgreich ist. Zu zeigen ist also nur, daß F hier genauso oft erfolgreich ist, wie wenn es mit e<strong>in</strong>er „echten“ Referenz <strong>und</strong> Signatur aufgerufen wird. Echte Referenzen s<strong>in</strong>d zufällig, <strong>und</strong> das hiesige R ist auch zufällig (weil S0 zufällig ist <strong>und</strong> f0 e<strong>in</strong>e Permutation ist, also jedes R bei genau e<strong>in</strong>en S0 vorkommt). Bei diesem R ist S0 die (e<strong>in</strong>zige) richtige Signatur. 3.5.3 Gr<strong>und</strong>signaturen: Große Tupel kollisionsresistenter Permutationen Allgeme<strong>in</strong>eres: Wenn man kollisionsresistente Permutationenpaare mit Geheimnis präzis def<strong>in</strong>iert (s. [GoMR_88]), benötigt man nicht nur e<strong>in</strong> Paar (f0, f1), sondern e<strong>in</strong>e ganze Familie davon <strong>in</strong> Abhängigkeit von e<strong>in</strong>em Schlüssel, damit jeder, der so e<strong>in</strong> Paar braucht, e<strong>in</strong>s wählen kann, von dem nur er das Geheimnis kennt. Dazu gehört e<strong>in</strong> Schlüsselgenerierungsalgorithmus gen, mit dem man das Geheimnis <strong>und</strong> den öffentlichen Schlüssel wählen kann. Bei der konkreten Konstruktion war das automatisch der Fall: gen ist der Algorithmus zur Wahl von p <strong>und</strong> q, die das Geheimnis s<strong>in</strong>d, <strong>und</strong> zur Berechnung des öffentlichen Schlüssels n. Für jedes n ergibt sich e<strong>in</strong> anderes Paar, man müßte also genauer f (n) 0 , f1 (n) schreiben. Die Kollisionsresistenz wird wieder so def<strong>in</strong>iert, daß ke<strong>in</strong> polynomialer Algorithmus für lange Schlüssel mit signifikanter Wahrsche<strong>in</strong>lichkeit Kollisionen f<strong>in</strong>det, analog zur Faktorisierungsannahme. Außerdem braucht man, daß man alle<strong>in</strong> mit dem öffentlichen Schlüssel effizient e<strong>in</strong> zufälliges Element des jeweiligen Def<strong>in</strong>itionsbereichs wählen kann. Konkret geht das so: Wir bauen jetzt als zweiten Schritt GMR so aus, daß e<strong>in</strong>e beliebig lange Nachricht signiert werden kann (aber nach wie vor nur e<strong>in</strong>e e<strong>in</strong>zige). Die Idee ist dieselbe wie oben für e<strong>in</strong> Bit: Man hätte gern für jede dieser Nachrichten e<strong>in</strong>e Funktion fm (so wie oben f0 <strong>und</strong> f1 für die zwei Nachrichten m = 0 bzw. 1). Als öffentlichen Schlüssel wählt man wieder zusätzlich zu n e<strong>in</strong>e Referenz R69 , <strong>und</strong> die Signatur unter die Nachricht m soll Wahl e<strong>in</strong>es zufälligen Elementes aus Dn: Man wählt z ∈ ZZ * n zufällig <strong>und</strong> quadriert es; ist z2 < n/2, so wählt man x := z2 , andernfalls x := –z2 . s(m) := f m –1 (R) 3.5.2 M<strong>in</strong>i-GMR für e<strong>in</strong>e Nachricht aus nur e<strong>in</strong>em Bit se<strong>in</strong> (Bild 3-23), wobei man f m –1 wieder nur mit Hilfe des Geheimnisses berechnen kann. Wenn nur e<strong>in</strong>e Nachricht signiert werden soll, <strong>und</strong> diese nur e<strong>in</strong> Bit lang se<strong>in</strong> wird, kann man e<strong>in</strong>fach e<strong>in</strong> kollisionsresistentes Permutationenpaar nehmen: Der geheime Signierschlüssel s ist (p, q); der öffentliche Testschlüssel t besteht aus n <strong>und</strong> e<strong>in</strong>er sogenannten Referenz R, die der Unterzeichner zufällig aus Dn wählt. Die Signatur unter die Nachricht m = 0 ist f –1 0 (R), die unter m = 1 ist f1 –1 (R) (Bild 3-22). 69 Für diesen vere<strong>in</strong>fachten Fall, daß die Referenz dem Angreifer vor se<strong>in</strong>er Wahl der zu signierenden Nachricht bekannt ist, ist die <strong>Sicherheit</strong> von GMR nicht bewiesen; wir sehen auch nicht, wie sie bewiesen werden könnte.