Kryptologie II Sommersemester 2008 Persönliche Mitschrift von Yves Radunz Inhaltsverzeichnis 1 Hash-Verfahren 1.1 Einführung . . . . . . . . . . . 1.2 Zufallsorakelmodell - ZOM . . 1.3 Die MD und SHA-Hashfamilien 1.4 MACs . . . . . . . . . . . . . . 1.5 Digitale Signaturverfahren . . . 1.6 Das RSA-Signaturverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 9 11 12 19 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 23 26 27 29 31 32 33 34 35 38 3 Zero Knowledge Beweise 3.1 Interaktive Beweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Zero-Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 42 Index 43 2 Der 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diskrete Logarithmus Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . Generisches DLP . . . . . . . . . . . . . . . . . . . . . . Die Index-Calculus-Methode . . . . . . . . . . . . . . . . Existentielle Fälschungen . . . . . . . . . . . . . . . . . Elliptische Kurven über R . . . . . . . . . . . . . . . . . Elliptische Kurven über endlichen Körpern . . . . . . . Effiziente Berechnung von Vielfachen von Punkten auf E One-time Signatur (Lompat) . . . . . . . . . . . . . . . Verbindliche Signaturen (undeniable signatures) . . . . . Fail-Stop-Signaturen . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . Vorlesung am 15.04.2008 5 6 Kapitel 1 Hash-Verfahren 1.1 Einführung Schutzziele 1. Vertraulichkeit • Geheimhaltung • Anonymität • Unbeobachtbarkeit 2. Integrität • von Nachrichten und/oder Daten 3. Zurechenbarkeit • Authentikation • Unabstreitbarkeit • Identifikation 4. Verfügbarkeit • von Daten • von Rechenressourcen • von Informationsdienstleistungen Klassifikation von Hashverfahren • schlüsselloses Hashverfahren Text x (MDC: Manipulation Detection Code) / x0 unsicher h h y = h(x0 ) 0 authentisch y = h(x) _ _ _ _ _ _/ y == y 0 ? 7 1.1. EINFÜHRUNG KAPITEL 1. HASH-VERFAHREN • symmetrischer Schlüssel unsicher x k (MAC: Message Authentication Code) / x0 /h ho y 0 = h(x0 ) y = h(x) unsicher / y == y 0 ? _ _ _ _ sicher _ _ _ _ _ _ • Bei asymmetrischen Schlüsseln sprechen wir nicht von Hashverfahren, sondern von digitalen Signaturen. Definition (gültiges Paar, Kollisionspaar) Sei h : X → Y eine Hashfunktion. Ein Paar (x, y) ∈ X × Y heißt gültig, falls y = h(x) gilt. Ein Paar (x, x0 ) ∈ X × X mit x 6= x0 und h(x) = h(x0 ) heißt Kollisionspaar . Die Anzahl |Y | der Hashwerte bezeichnen wir mit m. Ist auch X endlich, d.h. n = |X| < ∞, so bezeichnen wir h als eine (n, m)-Hashfunktion. In diesem Fall verlangen wir meist, dass m ≤ n2 ist. h wird dann Kompressionsfunktion genannt. Problem 1, Einweg-Hashfunktion Gegeben seien h : X → Y und y ∈ Y . Gesucht ist x ∈ X : h(x) = y. Falls es einen immensen Aufwand erfordert, dieses Problem zu lösen, so heißt h Einweg-Hashfunktion (auch one-way hashfunction oder preimage resistant hashfunction). Problem 2, schwache Kollisionsresistenz Gegeben seien h : X → Y und x ∈ X. Gesucht ist x0 ∈ X : h(x) = h(x0 ), x 6= x0 . Falls es einen immensen Aufwand erfordert, dieses Problem zu lösen, so heißt h schwach kollisionsresistent (auch weakly collision resistant oder second preimage resistant). Problem 3 Gegeben sei h : X → Y . Gesucht sind x, x0 ∈ X mit h(x) = h(x0 ) und x 6= x0 . Falls es einen immensen Aufwand erfordert, dieses Problem zu lösen, so heißt h stark kollisionsresistent. Wir bezeichnen derartige Hashfunktionen auch einfach nur als kollisionsresistent. Einweg-Hashfunktion ⇒ schwach kollisionsresistent? Einweg-Hashfunktionen müssen nicht schwach kollisionsresistent sein: Sei h eine Einweg-Hashfunktion. Dann ist auch h0 (xb) = h(x), b ∈ 2 eine Einweg-Hashfunktion, aber nicht schwach kollisionsresistent, denn: h0 (x0) = h(x) = h0 (x1) und x = h0−1 (y)div2. Schwache Kollisionsresistenz ⇒ Einweg-Hashfunktion? Schwach kollisionsresistente Hashfunktionen müssen keine Einweg-Hashfunktionen sein: x0 b=0 Sei h eine schwach kollisionsresistente Hashfunktion. Dann ist h0 (xb) = eine h(x)1 b = 1 1 schwach kollisionsresistente Hashfunktion, welche jedoch mit Wahrscheinlichkeit 2 eine leichte Berechnung eines Urbildes zulässt. 8 KAPITEL 1. HASH-VERFAHREN 1.2. ZUFALLSORAKELMODELL - ZOM Satz 1.1. (Starke Kollisionsresistenz ⇒ schwache Kollisionsresistenz) Sei h : X → Y eine stark kollisionsresistente (n, m)-Hashfunktion. Dann ist h auch schwach kollisionsresistent. Beweis: Wir nehmen an, h wäre nicht schwach kollisionsresistent. Sei A ein probabilistischer Algorithmus, der für einen zufällig gewählten Text x ∈ X mit Erfolgswahrscheinlichkeit ε > 0 ein zweites Urbild zu h(x) liefert. Dann findet der folgende Algorithmus B mit der selben Wahrscheinlichkeit ε ein Kollisionspaar: X 2 B(h) { x0 = A(x); P(x 6= x0 ) = ε if (x0 6= x) return (x, x0 ); return ?; } Dies stellt einen Widerspruch zu der (starken) Kollisionsresistenz von h dar. Satz 1.2. (Starke Kollsisionsresistenz ⇒ Einwegfunktion) Sei h : X → Y eine stark kollisionsresistente (n, m)-Hashfunktion. Dann ist h auch eine Einweg-Hashfunktion. Beweis: Annahme: h ist keine Einweg-Hashfunktion. Sei A ein Invertierungsalgorithmus für h. Wir definieren nun einen Algorithmus B durch: X 2 B(h) { x = selectrandom (X); y = h(x); x0 = A(x); if (x 6= x0 ) return (x, x0 ); return ?; } Behauptung: P(B = (x, x0 )) ≥ 12 . Sei C = {h−1 (y)|y ∈ h(X)}. P P |C| |C|−1 ⇒ P(B = (x, x0 )) = c∈C |X| · |C| = c∈C n1 · (|C| − 1) P = n1 c∈C |C| − 1 = n1 (n − |C|) = 1 − n1 |Y | = 1 − m n m ≥ 1 − 2m = 12 Bemerkung Aus den vorhergehenden Sätzen folgt auch, dass es schwach kollisionsresistente Hashfunktionen gibt, die nicht stark kollisionsresistent sind. Analog gibt es Einweg-Hashfunktionen, die nicht (stark) kollisionsresistent sind. Vorlesung am 17.04.2008 1.2 Zufallsorakelmodell - ZOM Definition Zufallsorakelmodell Der Gegner wird mit einer zufällig aus der Klasse Y X gewählten Hashfunktion konfrontiert, d.h. die einzige Möglichkeit, Informationen über h zu gewinnen, besteht darin, für bestimmte Texte x die zugehörigen Hashwerte h(x) zu erfragen. Proposition 1.1. Sei X0 = {x1 , ..., xk } ⊆ X und seien y1 , ..., yk ∈ Y . Dann gilt für eine zufällig aus F (X, Y ) = Y X gewählten Funktion h und für jedes Paar (x, y) ∈ (X \ X0 ) × Y : 1 P (h(x) = y|h(xi ) = yi , i = 1, ..., k) = m . 9 1.2. ZUFALLSORAKELMODELL - ZOM KAPITEL 1. HASH-VERFAHREN Algorithmus: FindPreImage Gegeben seien eine Hashfunktion h, das Bild y und eine maximale Anzahl an Fragen q. Der Algorithmus A wählt zufällig x1 , ..., xq und berechnet h(x1 ), ..., h(xq ). q q Dann finden A mit einer Wahrscheinlichkeit von 1 − ( m−1 m ) ≈ m ein Urbild von y. Es ist also q ≈ mP = O(m) erforderlich, wobei P die gewünschte Erfolgswahrscheinlichkeit ist. Analog erhalten wir derartige Wahrscheinlichkeiten für die Probleme 2 und 3 (Kollisionssuche). (m−1)! Für das dritte Problem erhalten wir die Wahrscheinlichkeit P = 1 − (m−q)!m q−1 durch den Ge2 q burtstagsangriff . Mit 1 − x ≈ e−x erhalten wir die Näherung P ≈ q(q−1) ≈ 2m . 2m √ √ √ √ Wir erhalten damit q ≈ 2mP = 2P m = O( m). Demnach sollte man eine Hashwertlänge von etwa 128 (oder besser: 160) Bit verwenden. Bemerkung (Geburtstagsangriff ) Der Name Geburtstagsangriff stammt von dem Geburtstagsparadoxon, welches nach der Anzahl der Personen fragt, ab der mit Wahrscheinlichkeit 21 mindestens zwei von ihnen am gleichen Tag des Jahres Geburtstag haben. Erweiterung einer Hashfunktion auf Texte beliebiger Länge Gegeben sei eine Kompressionsfunktion h : 2m+t → 2m , t ≥ 1. Wir suchen eine Erweiterung von h auf ĥ : 2∗ → 2m . Vorlesung am 22.04.2008 Beweis: Annahme: Für ĥ kann ein Kollisionspaar (x, x̃) gefunden werden, d.h. x 6= x̃, ĥ(x) = ĥ(x̃). Wir zeigen, dass sich hieraus ein Kollisionspaar für h finden lässt. Sei y(x) = y1 y2 ...yk und y(x̃) = ỹ1 ỹ2 ...ỹl mit k ≤ l. Vorlesung am 24.02.2008 Wir haben x = x1 ...xk mit |x1 | = ... = |xk−1 | = t − 1 und 1 ≤ d = |xk | ≤ t − 1. Im Fall k = 0 haben wir y(ε) = 0t . Im Fall k = 1 sei y(x) = 0x0t−1−|x| 1(t − 1 − |x|)2,t−1 . Für k > 1 sei y(x) = y1 ...yk+1 mit y1 = 0x1 , yi = 1xi für i = 2, ..., k − 1 , yk = 1xk 0t−d−1 und yk+1 = 1(t − d − 1)2,t−1 . Satz 1.3. Die oben definierte Funktion y ist suffixfrei. Beweis: Seien x 6= x̃ zwei Texte mit |x| ≤ |x̃|. Dann gilt |y(x)| ≤ |y(x̃)|, d.h. wir müssen noch zeigen, dass y(x) = y1 ...yk+1 kein Suffix von y(x̃) = ỹ1 ...ỹl+1 ist. Im Fall x = ε ist dies klar. Für x 6= ε betrachten wir folgende Fälle: 1. |x| 6≡t−1 |x̃| ˜ d.h. yk+1 6= ỹl+1 . Hier gilt d 6= d, 2. |x| = |x̃| Hier erhalten wir |y(x)| = |y(x̃)|, d.h. k = l. Wegen x 6= x̃ gibt es ein i ∈ {1, ..., k} mit xi 6= x̃i . Damit folgt jedoch auch yi = 6 ỹi , d.h. y(x) 6= y(x̃). 3. |x| = 6 |x̃|, |x| ≡t−1 |x̃| Hier folgt k < l. Weiterhin gibt es in y(x) genau einen Block, der mit 0 beginnt. Dieser steht bei y(x̃) ganz vorne, d.h. es ist ỹ1 . Somit müsste k = l gelten, damit y(x) ein Suffix von y(x̃) sein kann. Dies stellt jedoch einen Widerspruch zu k < l dar. 10 KAPITEL 1. HASH-VERFAHREN 1.3 1.3. DIE MD UND SHA-HASHFAMILIEN Die MD und SHA-Hashfamilien Hashfukt. Bitlänge Wortlänge MD4 MD5 SHA − 1 128 128 160 4 4 5 SHA − 224 SHA − 256 SHA − 384 224 256 384 9 10 14 SHA − 512 512 20 Benutzte Funktionen Die Funktionen sind auf Worten, d.h. auf Mengen 232 ×...×232 (2 = {0, 1} wie in der Mengenlehre). 1. X ∧ Y bitweises UND 2. X ∨ Y bitweises ODER 3. X ⊕ Y bitweises XOR 4. ¬X bitweises NOT Ganzzahl-Addition ohne Übertrag (modulo 232 ) 5. X + Y 6. X ←- s zirkulärer Linksshift um s Stellen (ROTATE LEFT, ROL) Bemerkung (little/big endian) Es gibt zwei Möglichkeiten, die einzelnen Bytes einer großen Zahl im Speicher abzulegen: 1. little endian: a0 a1 a2 a3 repräsentiert die Zahl a3 224 + a2 216 + a1 28 + a0 2. big endian: a0 a1 a2 a3 repräsentiert die Zahl a0 224 + a1 216 + a2 28 + a3 MD4 und MD5 verwenden bei der Addition die little endian Darstellung. Definition (Hashfamilie) Eine Hashfamilie H wird durch folgende Komponenten beschrieben: 1. X: eine (un)endliche Menge von Texten 2. Y : endliche Menge aller möglichen Hashwerte, |Y | ≤ |X| 3. K: endlicher Schlüsselraum, wobei jeder Schlüssel k ∈ K eine Hashfunktion hk : X → Y spezifiziert. Vereinbarung von Symbolen und Variablen Wir verwenden n = |X|, m = |Y | und l = |K|. H heißt dann (n, m, l)-Hashfamilie. Definition (Berechnungsresistenz) Eine Hashfamilie heißt berechnungsresistent, wenn sie die folgende Eigenschaft hat: Selbst wenn eine Reihe (xi , h(xi ))i=1,...,r von (unter demselben Schlüssel k) generierten Text- und Hashwert-Paaren bekannt ist, so erfordert es einen sehr großen Aufwand, ein Paar (x, h(x)) mit x 6∈ {x1 , ..., xr } zu finden. Vorlesung am 29.02.2008 11 1.4. MACS 1.4 KAPITEL 1. HASH-VERFAHREN MACs Angriffe gegen symmetrische Hashfunktionen 1. Impersonation Der Gegner kennt nur den benutzten MAC und versucht ein gültiges Paar, das als echt akzeptiert wird, d.h. y = hk (x), zu erzeugen. 2. Substitution Der Gegner kennt bereits ein Paar (x, y) mit y = hk (x) und versucht ein neues Paar (x0 , y 0 ) mit y 0 = hk (x0 ), x0 6= x zu finden. 3. Angriff bei bekanntem Text In diesem Fall kennt der Gegner sogar mehrere Paare, aus denen er versucht ein neues Paar zu erzeugen (siehe Berechnungsresistenz). 4. Angriff bei frei wählbarem Text Hier kann der Gegner die Wahl der Texte x1 , ..., xn selbst bestimmen. 5. Angriff bei adaptiv wählbarem Text. Der Gegner kann die Wahl des Textes xi von den MAC- bzw. Hashwerten hk (x1 ), ..., hk (xi−1 ) abhängig machen. Informationstheoretische Sicherheit von MACs Modell: Der Schlüssel k und der Text x werden gemäß der Wahrscheinlichkeitsverteilung p(k, x) = p(k)p(x) gewählt, welche dem Gegner bekannt ist. O.B.d.A. gilt p(k) > 0 < p(x) für alle k ∈ K, x ∈ X. Erfolgswahrscheinlichkeit für Impersonation Bezeichne α(x, y) diePErfolgswahrscheinlichkeit des Gegners, falls er das Paar (x, y) wählt. Dann gilt α(x, y) = k∈K(x,y) p(k) mit K(x, y) = {k ∈ K|hk (x) = y}. Beispiel (Impersonation) Seien K = {1, 2, 3}, X = {a, b, c, d} und Y = {0, 1}. Authentikationsmatrix 0, 1 0, 2 0, 3 a b c 0, 25 1 0 0 0 0, 3 2 1 1 0 0, 45 3 0 1 1 0, 4 d 1 1 0 Satz 1.4. (1) Für jede (n, m, l)-Hashfunktion gilt α ≥ α 0 1 Erfolgswahrscheinlichkeit a b c d 0, 7 0, 25 0, 55 0, 45 0, 3 0, 75 0, 45 0, 55 1 m. Beweis: Sei x ∈ X P beliebig. Dann gilt y∈Y p(x 7→ y) = 1, d.h. es existiert ein y ∈ Y mit α(x, y) = p(x 7→ y) ≥ 1 m. Bemerkung P 1 1 Es gilt genau dann α = m , wenn alle Summanden gleich sind, d.h. p(x 7→ y) = k∈K(x,y) p(k) = m . Bei Gleichverteilung der Schlüssel muss demnach in jeder Spalte der Authentikationsmatrix jeder Hashwert gleich oft vorkommen. 12 KAPITEL 1. HASH-VERFAHREN 1.4. MACS Erfolgswahrscheinlichkeit für Substitution Angenommen, B sendet das Paar (x, y) an A (d.h. p(x 7→ y) > 0) und der Gegner ersetzt es durch (x0 , y 0 ) mit x0 6= x. Dann ist die Erfolgswahrscheinlichkeit des Gegners β(x, y, x0 , y 0 ) = P (x0 7→ y 0 |x 7→ y). P ⇒ β(x, y, x0 , y 0 ) = P (x0 7→y 0 ∧x7→y) P (x7→y) = k∈K(x,y)∧K(x0 ,y 0 ) P k∈K(x,y) p(k) p(k) Falls B das Paar (x, y) sendet, kann der Gegner bei Verwendung der optimalen Strategie die Erfolgswahrscheinlichkeit β(x, y) = max(x0 ,y0 ),x6=x0 β(x, y, x0 , y) erreichen. Da der Gegner keinen Einfluss auf die Wahl des Paares (x, y) hat, ist seine Erfolgswahrscheinlichkeit bei optimaler Strategie P P P β = (x,y) p(x, y)β(x, y) = (x,y) p(x)p(y|x)β(x, y) = (x,y) p(x)p(x 7→ y)β(x, y) P = (x,y) p(x) 0 max p(x0 7→ y 0 ∧ x 7→ y) (x ,y 0 ),x0 6=x {z } | =β 0 (x,y) Beispiel (a, 0) (a, 0) − (a, 1) − (b, 0) 0, 25 (b, 1) 0, 45 (c, 0) 0, 25 (c, 1) 0, 45 (d, 0) 0, 45 (d, 1) 0, 25 ⇒ β = 0, 915 (a, 1) − − 0 0, 3 0, 3 0 0 0, 3 (b, 0) 0, 25 0 − − 0, 25 0 0 0, 25 (b, 1) (c, 0) 0, 45 0, 25 0, 3 0, 3 − 0, 25 − 0, 3 0, 3 − 0, 45 − 0, 45 0 0, 3 0, 55 (c, 1) 0, 45 0 0 0, 45 − − 0, 45 0 (d, 0) 0, 45 0 0 0, 45 0 0, 45 − − (d, 1) β 0 (x, y) 0, 25 0, 45 0, 3 0, 3 0, 25 0, 25 0, 3 0, 45 0, 55 0, 55 0 0, 45 − 0, 45 − 0, 55 p(x) α(x, y) β(x, y) 0, 1 0, 7 0, 643 0, 1 0, 3 1 0, 2 0, 25 1 0, 2 0, 75 0, 6 0, 3 0, 55 1 0, 3 0, 45 1 0, 4 0, 45 1 0, 4 0, 55 1 Vorlesung am 06.05.2008 Satz 1.5. (∀x 6= x0 ∈ X, y ∈ Y ∃y 0 ∈ Y : β(x, y, x0 , y 0 ) ≥ 1 existiert ein y 0 ∈ Y mit β(x, y, x0 , y 0 ) ≥ m . 1 m (2)) Für alle x, x0 ∈ X und y ∈ Y Beweis: P Wegen y0 ∈Y p(x0 7→ y 0 |x 7→ y) = 1 muss ein y 0 ∈ Y mit p(x0 7→ y 0 |x 7→ y) ≥ Korollar 1.1. Für alle (x, y) mit p(x 7→ y) > 0 gilt β(x, y) ≥ 1 1 Insbesondere gilt β = E(β(x, y)) ≥ E( m )= m . 1 m existieren. 1 m. 1 Lemma 1.1. Sei (X, Y, K, H) ein MAC mit β = m . 1 0 0 0 Dann gilt p(x 7→ y |x 7→ y) = m für alle x, x ∈ X, y, y 0 ∈ Y . Insbesondere gilt p(x 7→ y) > 0 für alle x ∈ X, y ∈ Y . Beweis: 1. ∀x 6= x0 ∈ X, y, y 0 ∈ Y, p(x 7→ y) > 0 : p(x0 7→ y 0 |x 7→ y) ≤ 1 m (Folgt direkt aus der Definition von β.) 2. ∀x ∈ X, y ∈ Y : p(x 7→ y) > 0 Annahme: ∃x0 , y 0 : p(x0 7→ y 0 ) = 0. Seien Paar mit p(x 7→ y) > 0. Dann gilt p(x0 7→ y 0 |x 7→ y) = 0. Wegen P dann x, y 0ein beliebiges 1 1 00 p(x → 7 y |x → 7 y) = 1 existiert ein y 00 ∈ Y mit p(x0 7→ y 00 |x 7→ y) ≥ m−1 > m , y 00 ∈Y \{y 0 } was einen Widerspruch zu 1. darstellt. 13 1.4. MACS KAPITEL 1. HASH-VERFAHREN 3. ∀x 6= x0 ∈ X, y, y 0 ∈ Y : p(x0 7→ y 0 |x 7→ y) ≥ 1 m 0 1 Annahme: Es existieren x 6= x0 , y, y 0 mit p(x 7→ y 0 |x 7→ y) < m . P 0 0 00 0 00 Wegen y0 ∈Y (x 7→ y |x 7→ y) = 1 muss ein y mit (x 7→ y |x 7→ y) > ein Widerspruch zu 1. Satz 1.6. Ein MAC (X, Y, K, H) erfüllt genau dann β = alle x 6= x0 , y, y 0 gilt. 1 m, 1 m existieren. Dies ist wenn p(x 7→ y, x0 7→ y 0 ) = 1 m2 für Beweis: 1. “⇒” 1 für alle x 6= x0 , y, y 0 . Nach obigem Lemma gilt p(x 7→ y) > 0 und p(x0 7→ y 0 |x 7→ y) = m 0 Daher ist für alle x 6= x : P P p(x0 7→ y 0 ) = y∈Y p(x0 7→ y 0 , x 7→ y) = x,y p(x 7→ y)p(x0 7→ y 0 |x 7→ y) P 1 1 =m y∈Y p(x 7→ y) = m Folglich gilt p(x0 7→ y 0 , x 7→ y) = p(x0 7→ y 0 ) · p(x 7→ y|x0 7→ y 0 ) = 1 m2 . 2. “⇐” Es gilt β 0 (x, y) = maxx0 6=x,y0 p(x0 7→ y 0 , x 7→ y) = m12 und daher P P 1 . β = x∈X,y∈Y p(x)β 0 (x, y) = m12 x,y p(x) = m12 · m · 1 = m Bemerkung Falls der Schlüssel unter Gleichverteilung gewählt wird, ist ein MAC genau dann optimal (bezüglich Substitutionsangriffen), wenn der zugehörigen Authentikationsmatrix in je zwei Spalten x 6= x0 jedes Hashwertpaar (y, y 0 ) gleich oft vorkommt. Definition (stark universal) Ein MAC (X, Y, K, H) heißt stark universal , falls für alle x 6= x0 , y, y 0 gilt: |K(x, y) ∩ K(x0 , y 0 )| = λ = |K| . m2 Wir nennen (X, Y, K, H) dann auch einen (n, m, λ)-MAC mit l = λm2 . Bei λ = 1 ist nur n ≤ m + 1 möglich, d.h. in diesem Fall haben wir nur eine sehr geringe Kompression. Vorlesung am 08.05.2008 Beispiel ((4, 3, 1)-MAC) 0 1 2 3 0 0 0 0 0 1 1 1 1 0 2 2 2 2 0 3 0 1 2 1 4 1 2 0 1 5 2 0 1 1 6 0 2 1 2 7 1 0 2 2 8 2 1 0 2 Satz 1.7. Seien n = m = p prim und H = {ha,b |a, b ∈ Zp } die Familie der Hashfunktionen ha,b (x) = ax + b mod p. Dann ist (Zp , Zp , Z2p , H) ein (p, p, 1)-Mac. 14 KAPITEL 1. HASH-VERFAHREN 1.4. MACS Beweis: Für alle x 6= x0 ∈ Zp und y, y 0 ∈ Zp existiert genau ein (a, b) ∈ Z2p mit ha,b (x) = y und ha,b (x0 ) = y 0 . Es gilt: (a, b) ∈ K(x, y) ∧ K(x0 , y 0 ) ⇔ ha,b (x) = y ∧ ha,b (x0 ) = y 0 ⇔ ax ≡py∧ ax0+ b≡p y 0 +b x 1 a y ⇔ ≡p x0 1 b y0 x 1 Damit gibt es genau dann genau eine Lösung, wenn vollen Rang hat. x0 1 Wegen x 6= x0 ist dies der Fall. Bemerkung Im obigen Beispiel ist der Schlüssel durch k = 3a + b gegeben, was die Matrix für die ersten drei Spalten erzeugt. Für die letzte Spalte verwenden wir die Funktion ha,b (x) = a. Wir kodieren nun die Klartexte ebenfalls durch x = 3x1 + x2 und können damit die Hashfunktion einheitlich für alle 4 Spalten mit ha,b (x1 , x2 ) = ax1 + bx2 mod 3 definieren. Satz 1.8. Für jeden (n, m, 1)-MAC gilt n ≤ m + 1, d.h. l = |K| = m2 ≥ (n − 1)2 . Beweis: Sei A die Authentikationsmatrix eines (n, m, 1)-MACs. A x1 · · · xn k1 .. y . kl O.B.d.A. sei Y = {0, ..., m − 1}. Wenn wir die Einträge in einer Spalten durch eine Permutation π : Y → Y ersetzen (jeder Eintrag y wird durch π(y) ersetzt), so bleibt die Eigenschaft der starken Universalität erhalten. (Wir können π zu einer Permutation auf einem Spaltenpaar durch (y, y 0 ) 7→ (π(y), y 0 ) erweitern, womit offensichtlich die Anzahl der Vorkommen jedes Paares (y, y 0 ) nicht verändert wird.) Daher können wir o.B.d.A. annehmen, dass A in der ersten Zeile nur den Wert 0 enthält. A x1 · · · xn k1 0 · · · 0 ⇒ . .. y kl In den übrigen Zeilen können dann nur noch höchstens eine Null pro Zeile vorkommen. In jeder Spalte kommen genau m Nullen vor (für jeden möglichen Hashwertpartner in einer anderen Spalte genau eine), also kommen in der gesamten Matrix genau nm Nullen vor. Es gilt nun: m2 = Anzahl der Zeilen ≥ Anzahl der Zeilen mit mindestens einer Null = nm − n + 1 ⇒ m2 ≥ nm − n + 1 = n(m − 1) + 1 ⇒ (m + 1)(m − 1) = m2 − 1 ≥ n(m − 1) ⇒m+1≥n ⇒m≥n−1 ⇒ l = m2 ≥ (n − 1)2 Satz 1.9. Sei p prim und für x = (x1 , ..., xd ) ∈ {0, 1}d und k = (k1 , ..., kd ) ∈ Zdp sei hk (x) = hk, xip (Skalarprodukt modulo p). Dann ist (X, Y, K, H) mit X = 2d \{0d }, Y = Zp , K = Zdp und H = {hk |k ∈ K} ein (2d −1, p, pd−2 )MAC. 15 1.4. MACS KAPITEL 1. HASH-VERFAHREN Beweis: Seien x = (x1 , ..., xd ) 6= (x01 , ..., x0d ) = x0 mit den Hashwerten y und y 0 gegeben. Dann gibt es (wie 0 im vorherigenFall für d = 2) genau dann genau ein Vorkommen des Paares (y, y ), wenn die Matrix x1 . . . x d den Rang 2 hat, d.h. wenn x und x0 linear unabhängig sind. x01 . . . x0d Satz 1.10. Für jeden (n, m, λ)-MAC gilt λ ≥ n(m−1)+1 , m2 d.h. l = |K| ≥ n(m − 1) + 1. Beweis: Wie zuvor betrachten wir die Authentikationsmatrix A und permutieren die Einträge wieder so, dass in der ersten Zeile nur Nullen vorkommen. Sei #i die Anzahl der Nullen in der Zeile ki P . l Dann ist die Anzahl der Nullen in A genau i=1 #i = nλm. Pl ⇒ i=2 #i = n(λm − 1) Sei z die Anzahl der Vorkommen von Indexpaaren (j, j 0 ) mit A[ki , xj ] = A[ki , xj 0 ] = 0 in den Zeilen i = 2, ..., l. (Im Fall λ = 1 war diese Anzahl immer 0 gewesen.) Pl Pl Pl Pl Es gilt z = i=2 #i (#i − 1) = i=2 #2i − i=2 #i = i=2 #2i − n(λm − 1). Mit der Ungleichung zwischen arithmetischem und quadratischem Mittel erhalten wir die Abschätzung P Pl ( li=2 ai )2 2 i=2 #i ≥ l−1 P 2 2 Pl ( li=2 ai )2 2 − n(λm − 1) = n (λm−1) − n(λm − 1) ⇒ z = i=2 #i − n(λm − 1) ≥ l−1 l−1 Andererseits gibt es für jedes Spaltenpaar genau λ Paare der Form (0, 0), d.h. λ−1 derartige Paare, welche sich nicht in der ersten Zeile befinden. Also gilt insgesamt: z = (λ − 1)n(n − 1). 2 2 (λ − 1)n(n − 1) ≥ n (λm−1) − n(λm − 1) l−1 ((λ − 1)n(n − 1) + n(λm − 1))(l − 1) ≥ n2 (λm − 1)2 ((λ − 1)n(n − 1) + n(λm − 1))(λm2 − 1) ≥ n2 (λm − 1)2 (λn − n − λ + λm)(λm2 − 1) ≥ n(λm − 1)2 λ2 nm2 + λ2 m3 − λnm2 − λ2 m2 − λn + n − λ − λm ≥ nλ2 m2 − 2nλm + n λ2 m3 − λ2 m2 ≥ λnm2 + λn − λ + λm − 2λnm λ2 (m3 − m2 ) ≥ λ(nm2 + n − 1 + m − 2nm) λ2 (m3 − m2 ) ≥ λ(n(m2 − 2m + 1) + m − 1) λ2 (m3 − m2 ) ≥ λ(n(m − 1)2 + (m − 1)) λm2 (m − 1) ≥ (n(m − 1) + 1)(m − 1) λm2 ≥ n(m − 1) + 1 λ ≥ n(m−1)+1 m2 Vorlesung am 13.05.2008 Definition (Informationsgehalt, Entropie) Wir definieren den Informationsgehalt einer Nachricht xi mit Wahrscheinlichkeit P (xi ) = pi für positive Wahrscheinlichkeiten pi durch Inf (xi ) = log2 p1i = − log2 pi . Wenn pi = 0 gilt, so setzen wir Inf (xi ) = 0. Sei X eine Zufallsvariable mit einem endlichem Wertebereich W (X) = {x1 , ..., xn } und Wahrscheinlichkeiten pi = P [X = xi ]. Dann ist die Entropie H(X) definiert durch H(X) = E[Inf (X)] = n X i=1 pi Inf (xi ) = n X i=1 pi log2 1 . pi Die gemeinsame Entropie Pn Pmzweier Zufallsvariablen X und Y mit Verteilung P (X = xi , Y = yj ) = pi,j ist H(X, Y ) = − i=1 j=1 pi,j log2 pi,j . Die bedingte Entropie definieren wir als Pm Pn P H(X|Y ) = − i=1 p(yi ) j=1 p(xj |yi ) log2 p(xj |yi ) = − i,j p(xj , yi ) log2 p(xj |yi ). 16 KAPITEL 1. HASH-VERFAHREN 1.4. MACS Diese können wir als den erwarteten Informationsgehalt von X, wenn Y bereits bekannt ist, verstehen. Lemma 1.2. (Jensensche Ungleichung) Sei X eine Zufallsvariable mit W (X) ⊆ R+ . Pn Pn Dann gilt E[log(X)] ≤ log E[X], d.h. i=1 pi log xi ≤ log i=1 pi xi . Beweis: Übung. 1 Satz 1.11. Für jeden MAC (X, Y, K, H) gilt α ≥ 2H(K)−H(K|X ,Y) . Hierbei sind X und Y und K Zufallsvariablen, welche die Verteilung der Nachrichten, Hashwerte und Schlüssel beschreiben. Beweis: Wir zeigen log α ≥ H(K|X , Y) − H(K). P Zur Erinnerung: Es gilt α = max(x,y)∈X×Y p(x 7→ y) und p(x 7→ y) = k∈K,hk (x)=y p(k) = p(y|x). P ⇒ α ≥ x,y p(x, y) · p(x 7→ y) = E(α(X , Y)) P ⇒ log α ≥ log , Y))) = x,y p(x, y) log α(X , Y) P E(α(X , Y)) ≥ E(log(α(X P ⇒ log α ≥ x,y p(x, y) log α(X , Y) = − x,y p(x)p(y|x) log α(X , Y) = −H(Y|X ) Nun muss noch gezeigt werden, dass −H(Y|X ) ≥ H(K|X , Y) − H(K) gilt. Wir beweisen sogar, dass an dieser Stelle immer die Gleichheit gilt. Hierfür gehen wir von der gemeinsamen Entropie aus. Diese lässt sich auf verschiedenen Wegen entwickeln: H(X , K) + H(Y|X , K) = H(X , Y, Z) = H(X ) + H(Y|X) + H(K|X , Y) ⇒ H(X ) + H(K) + 0 = H(X ) + H(Y|X) + H(K|X , Y) ⇒ H(Y|X ) = H(K) − H(K|X , Y) Vorlesung am 15.05.2008 Definition (CBC-MAC) Wie auch bei einem Verschlüsselungsverfahren im CBC-Modus können wir einen CBC-MAC definieren, indem wir für eine Folge von Eingabeblöcken x1 , ..., xn und einen Initialisierungsvektor IV = y0 jeweils yj = Ek (yj−1 ⊕ xj ) für j = 1, ..., n bestimmen und y = yn als Hashwert verwenden, d.h. es gilt hk (x) = y = yn für x = x1 ...xn . Der Einfachheit halber können wir y0 = IV = 0l verwenden, wobei l = |xj | die Blocklänge ist. Dabei ist zu beachten, dass alle Eingabetexte x die gleiche Blockanzahl haben müssen. (Für unterschiedlich lange Texte gibt es den folgenden leichten Angriff: x1 7→ y1 und x1 x2 7→ y2 werden bei frei wählbarem Text abgefragt. Dann erhält man mit (IV ⊕ y1 ⊕ x2 , y2 ) ein zulässiges Klartext-Hashwert-Paar. Bei adaptiv wählbarem Text kann x2 sogar so gewählt werden, dass x = IV ⊕ y1 ⊕ x2 ein zuvor frei wählbarer Text ist.) CBC-MAC-Geburtstagsangriff Ziel: Generiere ein Paar (x0 , y 0 ) mit hk (x0 ) = y 0 , wobei k der dem Gegner unbekannte Schlüssel ist. j 0 Hierbei darf √ der Gegner Hashwerte für von ihm gewählte Texte x 6= x , j = 1, ..., q1 erfragen. Sei l l 2 q ≈ 2 = 2 (d.h. der Geburtstagsangriff ist mit einer Wahrscheinlichkeit von etwa 2 erfolgreich). Wir wählen Texte der Form x1 = x11 x12 x3 x4 x5 ...xn x2 = x21 x22 x3 x4 x5 ...xn x3 = x31 x32 x3 x4 x5 ...xn .. . xq = xq1 xq2 x3 x4 x5 ...xn mit xj 7→ y j , wo die Einträge der ersten Spalte (d.h. die xi1 ) paarweise verschieden und die der zweiten Spalte (d.h. xi2 ) zufällig gewählt werden. Wenn wir eine Kollision, d.h. i 6= j mit y i = y j haben, konstruieren wir daraus das gesucht Paar (x0 , y 0 ). 17 1.4. MACS KAPITEL 1. HASH-VERFAHREN Von der gefundenen Kollision ausgehend erhalten wir wegen der Bijektivität von Ek und der Gleichheit der Klartextblöcke 3 bis n, dass y1i ⊕ xi2 = y1j ⊕ xj2 gilt. Wegen xi1 6= xj1 gilt y1i 6= y2j . Jetzt fragen wir noch einmal den Hashwert y q+1 von xq+1 = xi1 (xi2 ⊕ z)x3 x4 ...xn mit z 6= 0 ab. Das gesuchte Paar ist (xq+1 = xi1 (xi2 ⊕ z)x3 x4 ...xn , y q+1 ). (Wegen y1i ⊕ xi2 = y1j ⊕ xj2 gilt z ⊕ y1i ⊕ xi2 = z ⊕ y1j ⊕ xj2 , woraus die Gleichheit der Hashwerte y 0 und y q+1 folgt.) Vorlesung am 20.05.2008 Definition ((ε, q)-Fälscher) Seien 0 ≤ ε ≤ 1 und q ∈ N. Ein (ε, q)-Fälscher für eine Hashfamilie H = (X, Y, K, H) ist ein probabilistischer Algorithmus A, der bis zu q Fragen x1 , ..., xq ∈ X stellt und aus den Antworten yi = hk (xi ), i = 1, ..., q mit Wahrscheinlichkeit ≥ ε (bei zufällig gewähltem Schlüssel k) ein Paar (x0 , y 0 ) ∈ X × Y mit x0 6∈ {x1 , ..., xq } und hk (x0 ) = y 0 ausgibt. Wir unterscheiden zwischen adaptiven (d.h. der Text xi darf von hk (x1 ), ..., hk (xi−1 ) abhängen) und nicht-adaptiven Fragen. Zudem unterscheiden wir zwischen selektiven (d.h. der Gegner kann den Hashwert für einen Text seiner Wahl generieren) und existenzielle Fälschungen. Beispiel Der betrachtete Geburtstags-Angriff auf einen CBC-MAC beschreibt einen existenziellen ( 21 , q +1)Fälscher mit adaptiven Fragen und einen ( 21 , 2q)-Fälscher mit nicht adaptiven Fragen. Dabei ist √ q ≈ 1, 17 2l . Definition ((ε, q)-Kollisionsangreifer) Ein (ε, q)-Kollisionsangreifer für eine Hashfamilie H = (X, Y, K, H) ist ein probabilistischer Algorithmus A, der q Fragen x1 , ..., xq ∈ X stellt und aus den Antworten hk (x1 ), ..., hk (xq ) mit Wahrscheinlichkeit ≥ ε (bei zufällig gewähltem und dem Gegner nicht bekanntem Schlüssel k) ein Kollisionspaar (x, x0 ) mit hk (x) = hk (x0 ) und x 6= x0 ausgibt. x und x0 dürfen dabei auch unter x1 bis xq vorkommen. Bemerkung Da der Gegner den Schlüssel k nicht kennt, ist ein Kollisionsangriff gegen eine Hashfamilie H schwieriger zu realisieren, als gegen eine schlüssellose Hash-Funktion. Definition (Nested-MAC, Komposition von Hashfamilien) Seien H1 = (X, Y, K1 , F ) und H2 = (Y, Z, K2 , G) zwei Hashfamilien. Dann ist H = H1 ◦ H2 = (X, Z, K, H) die Komposition von H1 und H2 , wobei K = K1 × K2 und H = {fk1 ◦ gk2 |(k1 , k2 ) ∈ K} ist. Beispiel Waählt man für H2 eine (im optimalen Fall stark universale) Hashfamilie und für H1 eine schlüssellose Hashfunktion (etwa SHA-1) so erhält man einen so genannten HMAC (Hash-MAC ). Der HMAC-SHA-1 benutzt beispielsweise die 512Bit-Konstanten ipad = |36...36 {z } und opad = |5C...5C {z } 64−mal 64−mal und wird wie folgt berechnet: HMAC-SHA-1k (x) =SHA-1((k ⊕ opad)SHA-1((k ⊕ ipad)x) Satz 1.12. Sei H = (X, Z, K, H) = H1 ◦ H2 . Falls für H1 kein (ε1 , q + 1)-Kollisionsangreifer und für H2 kein (ε2 , q)-Fälscher existieren, dann gilt für jeden (ε, q)-Fälscher für H ε < ε1 + ε2 . 18 KAPITEL 1. HASH-VERFAHREN 1.5. DIGITALE SIGNATURVERFAHREN Beweis: Sei A ein (ε, q)-Fälscher für H. Zu zeigen ist ε < ε1 + ε2 . Wir wählen zufällig einen Schlüssel k = (k1 , k2 ) ∈ K und simulieren A. Bei dieser Simulation stellt A bis zu q Fragen x1 , ..., xq ∈ X, die wir mit zi = gk2 (fk1 (xi )), i = 1, ..., q beantworten, und gibt am Ende mit Wahrscheinlichkeit ≥ ε ein Paar (xq+1 , z) mit xq+1 6∈ {x1 , ..., xq } und gk2 (fk1 (xq+1 )) = z aus. 1. Fall: Es gibt 1 ≤ i < j ≤ q + 1 mit fk1 (xi ) = fk1 (xj ). Da für H1 kein (ε1 , q)-Kollisionsangriff existiert, kann dieser Fall höchstens mit Wahrscheinlichkeit < ε1 eintreten. 2. Fall: Es gilt |{fk1 (x1 ), ..., fk1 (xq+1 )}| = q + 1 und gk2 (fk1 (xq+1 )) = z. Weil Fall 1 mit Wahrscheinlichkeit < ε1 eintritt, muss dieser Fall mit Wahrscheinlichkeit > ε − ε1 eintreten. In diesem Fall muss A mit einer größeren Wahrscheinlichkeit als ε − ε1 ein gültiges Paar (xq+1 , z) mit gk2 (fk1 (xq+1 )) = z ausgeben. Analog zur Analyse des ersten Falls existiert auch für H2 kein (ε2 , q)-Fälscher, d.h. es muss ε − ε1 < ε2 sein, d.h. es gilt ε < ε1 + ε2 . Bemerkung: A kann zu einem Angreifer auf H1 bzw. H2 umgewandelt werden, indem der fehlende Schlüsselteil (k2 bzw. k1 ) zufällig gewählt wird und die Fragen x1 , ..., xq entsprechend der Fragen von A gewählt werden. 1.5 Digitale Signaturverfahren Handschriftliche Signaturen 1. Die durch die Unterschrift gekennzeichnete Person hat überprüfbar die Unterschrift geleistet. 2. Das signierte Dokument kann nachträglich nicht mehr unbemerkt verändert werden. 3. Die Unterschrift kann nicht von einem Dokument auf ein anderes übertragen werden. Eine direkte Übertragung dieser Eigenschaften in die digitale Welt ist nicht möglich. Lösung: Die digitale Signatur wird nicht physikalisch, sondern logisch (d.h. inhaltlich) an das digitale Dokument gebunden. Definition Ein digitales Signaturverfahren besteht aus folgenden Komponenten: 1. endliche Menge X von Dokumenten 2. endliche Menge Y von Unterschriften 3. endliche Menge K von Schlüsseln 4. Menge S ⊆ K × K von Schlüsselpaaren (k̂, k) 5. Signatur / Signieralgorithmus sig : K × X → Y 6. Verifikationsalgorithmus ver : K × X × Y → 2 = {0, 1} mit ver(k, x, y) = 1 ⇔ y = sig(k̂, x), (k̂, k) ∈ S Vorlesung am 22.05.2008 19 1.6. DAS RSA-SIGNATURVERFAHREN KAPITEL 1. HASH-VERFAHREN Mögliche Angriffe gegen Signaturverfahren 1. Angriff bei bekanntem Verifikationsschlüssel k Der Gegner versucht, ohne Kenntnis des Signierschlüssels k̂, ein Paar (x, y) mit ver(k, x, y) = 1 zu erzeugen. 2. Angriff bei bekannter Signatur Der Gegner kennt neben k noch eine Reihe von mittels k̂ signierten Dokumenten (x1 , y1 ), ..., (xn , yn ) und versucht daraus ein Paar (x, y) mit ver(k, x, y) = 1 und x 6∈ {x1 , ..., xn } zu erzeugen. 3. Angriff bei frei wählbaren Dokumenten Der Gegner kann sich für eine gewisse Zeit für Dokumente seiner Wahl die zugehörigen Signaturen beschaffen, d.h. er kann die x1 , ..., xn frei wählen. 4. Angriff bei adaptiv wählbaren Dokumenten Der Gegner kann die Wahl des Textes xi von den Signaturen y1 , ..., yi−1 abhängig machen. Erfolgskriterien für das Fälschen von Signaturen 1. Uneingeschränktes Fälschungsvermögen Der Gegner hat einen Weg gefunden, ohne Kenntnis von k̂ die Funktion x 7→ sig(k̂, x) effizient zu berechnen. 2. Selektives Fälschungsvermögen Der Gegner kann für Dokumente seiner Wahl die zugehörige Signatur bestimmen. (Evtl. mit Hilfe des legalen Unterzeichners.) 3. Existentielles bzw. nicht selektives Fälschungsvermögen Der Gegner kann nur für einige bestimmte Dokumente die zugehörige Signatur bestimmen. Das RSA-Kryptosystem Sei n = pq mit großen p, q ∈ P, d.h. n kann nicht effizient faktorisiert werden. Der private Schlüssel sind ein Exponent d ∈ Z∗n und n. Der öffentliche Schlüssel besteht aus e ∈ Z∗n mit ed ≡ϕ(n) 1 und n. Die Verschlüsselung erfolgt durch durch E(e, n, x) = xe mod n und die Entschlüsselung durch D(d, n, y) = y d mod n. Satz 1.13. ed ≡ϕ(n) 1 ⇒ ∀x ∈ Zn : xed ≡n x Beweis: Siehe “Kryptologie I” oder “Linare Algebra I” oder sonst irgendwas in der Art. 1.6 Das RSA-Signaturverfahren Definition (RSA-Signaturverfahren) Wir wählen zwei große Primzahlen p, q ∈ P und bestimmen n = pq. Der Signierschlüssel ist (d, n) mit d ∈ Z∗n und der Verifikationsschlüssel (e, n) mit de ≡ϕ(n) 1. Die ist Signierfunktion e 1 , wenn y ≡n x durch sig(d, n, x) = xd mod n und die Verifikation durch ver(e, n, x, y) = 0 sonst gegeben. Die Korrektheit folgt direkt aus der Korrektheit des RSA-Kryptosystems. 20 KAPITEL 1. HASH-VERFAHREN 1.6. DAS RSA-SIGNATURVERFAHREN Existentielle Fälschung bei bekanntem Verifikationsschlüssel Die Dokumente x = 0 und x = 1 werden immer durch 0 bzw. 1 signiert, also werden diese von vornherein ausgeschlossen. Gesucht sind Paare (x, y) mit ver(e, n, x, y) = 1. Einfach zu realisieren: Wir wählen eine beliebige Signatur y und berechnen dazu das Dokument x = y e mod n. Mögliche Gegenmaßnahmen: 1. Anstelle des Dokuements x wird nur der Hashwert h(x) signiert. 2. x wird mit genügend Redundanz ausgestattet (z.B. x = x0 x0 ). Signierung des Hashwertes von x statt x selbst 1. Die Hashfunktion h sollte die Einweg-Eigenschaft besitzen, da der Gegner sonst für den Hashwert y 0 = y e mod n ein Dokument x mit h(x) = y 0 finden kann. 2. Falls bereits signierte Dokumente (x, y) bekannt sind, so darf der Gegner kein weiteres Urbild x0 von h(x) finden, d.h. h muss zumindest schwach kollisionsresistent sein. Angriffsmöglichkeiten Der Gegner kann zunächst 2 Dokumente x und x0 verfassen, von denen x harmlos ist und vom legalen Unterzeichner ohne weiteres signiert wird, und x0 das Dokument ist, für welches der Gegner eine Signatur erzeugen möchte. Der Gegner kann nun die Texte x und x0 leicht abwandeln und Texte x1 , ..., xn sowie x01 , ..., x0m erzeugen, unter denen er ein Kollisionspaar (xi , x0j ) auswählt, xi signieren lässt und x0j mit der Signatur von xi versieht. h sollte also sogar (stark) kollisionsresistent sein. Existentielle Fälschung bei bekannten Dokumenten Falls der Gegner die Signaturen y1 und y2 von x1 und x2 kennt, so hat x1 · x2 die Signatur y1 · y2 , da (y1 · y2 )e = y1e · y2e = x1 · x2 . Selektive Fälschung bei frei wählbaren Dokumenten Wir betrachten wieder das RSA-Signaturverfahren ohne Hashfunktion. Um sich die Signatur für ein Dokument x zu beschaffen, kann der Gegner wie folgt vorgehen: Er wählt ein y2 beliebig und bestimmt x2 = y2e . Dann lässt er x1 = x · (x2 )−1 signieren und erhält die Signatur y1 = xd1 . Damit erhält er für x die Signatur y1 · y2 . 21 1.6. DAS RSA-SIGNATURVERFAHREN KAPITEL 1. HASH-VERFAHREN 22 Kapitel 2 Der diskrete Logarithmus 2.1 Allgemeines Definition (Ordnung eines Gruppenelements) Sei (G, ·) eine endliche Gruppe mit neutralem Element 1 und α ∈ G mit ordG (α) = |hai| = n. Dabei ist hai = {an |n ∈ N} die von α in G erzeugte Untergruppe. Es gilt ord(α) = min{i ∈ N|i > 0, αi = 1}. Beispiel 1. Seien G = Z∗p , p ∈ P und α ∈ Z∗p \ {1}. Dann gilt ord(α) = p − 1. 2. Seien G = Z∗p , p ∈ P, q ein (Prim-)Teiler von p − 1 und α ein Erzeuger von Z∗p . Dann ist β = α p−1 q ein Element der Ordnung ord(β) = q. Naive Algorithmen zur Berechnung des diskreten Algorithmus 1. Eingabe: G, n = ord(α), α, β, Gesucht: logα β = min{i ∈ N|β = αi }. Potenziere α so lange, bis αi = β gilt und gib i aus. Dieses Verfahren hat einen Zeitaufwand von O(n) und einen Speicherplatzaufwand von O(1). 2. Precomputation: Sortiere die Paare (i, αi ), i = 0, ..., n − 1 nach der zweiten Komponente und schreibe diese Paare in dieser Reihenfolge in eine Tabelle. Zeitaufwand: O(n log n) Speicheraufwand: O(n) Computation: Ermittle mittels Binärsuche den Eintrag (i, αi ) mit β = αi . Zeit: O(log n) Platz: O(n) Vorlesung am 27.05.2008 SHANKS √ Wir werden versuchen, die Vorteile beider Algorithmen zu verbinden, indem wir für d = d ne nur die Potenzen αdj mit j = 0, ..., d−1 vorausberechnen und speichern. Anschließend suchen wir von β ausgehend nach dem ersten dieser vorausberechneten Werte, d.h. wir berechnen β, βα−1 , βα−2 , .... Wenn wir βα−k = αdj erhalten, wissen wir somit, dass β = αdj+k gilt. 23 2.1. ALLGEMEINES KAPITEL 2. DER DISKRETE LOGARITHMUS Beispiel Seien G = Z∗809 √ , α = 3, ord(α) = 808 und β = 525. Es gilt d = d 808e = 29. Wir berechnen die Tabelle der Paare (i, αdi ) mit (0, 1), (23, 15), (12, 26), ..., (10, 644), ..., (14, 800) (sortiert nach dem zweiten Koeffizienten). Dann bestimmen wir 525, 525 · 3−1 , ..., 525 · 3−19 = 644. ⇒ log3 525 = 10 · 29 + 19 = 309 %-Faktorisierungsalgorithmus von Pollard Gegeben sei n. O.B.d.A. sei n ungerade und enthalte mindestens zwei verschiedene Primfaktoren p 6= q. (Wenn n eine Primzahl ist, so lässt sich dies mit einem Primzahltest√effizient √ feststellen. √ Wenn n eine Primzahlpotenz ist, so lässt sich durch Bestimmung der Wurzeln n, 3 n, ..., dlog2 ne n die Basis der Potenz ebenfalls effizient berechnen.) √ Wählen wir nun eine zufällige Teilmenge X ⊆ Zn der Größe |X| ∼ p, so enthält X mit Wahrscheinlichkeit 12 zwei Elemente x 6= x0 mit x ≡p x0 . In diesem Fall können wir den nichttrivialen Teiler d = ggT(x − x0 , n) von n bestimmen. Da wir jedoch alle Paare (x, x0 ) betrachten müssen (wir kennen ja p zunächst noch nicht), ist die Komplexität noch O(p). Wir wählen also anstelle von X eine pseudozufällige Menge Xj = {x0 , ..., xj−1 }, wobei x0 zufällig und xi+1 = f (xi ) durch eine Funktion f : Zn → Zn berechnet wird. Bei geeigneter Wahl von f √ (z.B. f (x) = x2 + 1 mod n) tritt innerhalb von Xj für j ≈ p eine Kollision xi ≡p xj für ein i < j mit xi 6= xj auf. Wie lässt sich nun effizient ein Kollisionspaar (xi , xj ) in Xj bestimmen, ohne p zu kennen? Werden zur Berechnung von f nur · (Multiplikation) und + (Addition) sowie ganzzahlige Konstanten aus Zn verwendet, dann gilt xi ≡p xj ⇒ xi+1 ≡p xj+1 . Hieraus folgt dann xk ≡p xk+d(j−i) für alle k ≥ i, d ≥ 1. Es gilt also xk ≡p x2k , falls k ≥ i und k ≡j−i 0. Ein solches k lässt sich im Intervall i, i + 1, ..., j = i + (j − i) finden. Damit reicht es dann auch aus, nur Paare der Form (xi , x2i ) auf Kollisionen zu testen. Bemerkung Der Name des Algorithmus stammt von der graphischen Darstellung der Folge x0 , x1 , ..., weil das Anfangsstück wir eine Linie aussieht, die dann auf einen Kreis führt (ähnlich zum Buchstaben %). Der Kreis ist die Veranschaulichung der Periodiziät der Folge ab einem bestimmten i. Algorithmus: %-Faktorisierung von Pollard integer Pollard(n, zusammengesetzt, ungerade, keine Primzahlpotenz){ x =select({0, ..., n − 1}, random); y = x; while(true) { x = f (x) mod n; y = f (y) mod n; y = f (y) mod n; if (x 6= y) { g = ggT(x − y, n); if (g > 1) return g; } } } Vorlesung am 29.05.2008 24 KAPITEL 2. DER DISKRETE LOGARITHMUS 2.1. ALLGEMEINES %-DLP-Algorithmus von Pollard Gegeben ist eine Gruppe (G, ·, 1), α ∈ G mit ord(α) = n und β ∈ hαi. Gesucht ist logα β ∈ Zn . Sei (S1 , S2 , S3 ) eine Partition von G mit |S1 | ≈ |S2 | ≈ |S3 | gegeben. Wir betrachten die Funktion f : hαi × Zn × Zn → hαi × Zn × Zn mit (βx, a, b + 1), wenn x ∈ S1 (x2 , 2a, 2b) , wenn x ∈ S2 . f (x, a, b) = (αx, a + 1, b), wenn x ∈ S3 0 0 Dann gilt x = αa β b ⇒ f (x, a, b) = (x0 , a0 , b0 ) mit x0 = αa β b . Angenommen, wir finden in der Folge z1 , z2 , ... mit z1 = (1, 0, 0) und zi+1 = f (zi ) ein Tripel zi = (xi , ai , bi ) sodass xi = x2i . Dann gilt xi = αai β bi = x2i = αa2i β b2i . Dies ist äquivalent zu ai + cbi ≡n a2i + cb2i ⇔ c(bi − b2i ) ≡n a2i − ai (mit c = log αβ). D.h. im Fall ggT(bi − b2i , n) = 1 lässt sich c eindeutig bestimmen: c = (a2i − ai )(bi − b2i )−1 mod n. Beispiel Seien G = Z∗p , p = 809, α = 89, ord(α) = n = 101 und β = 618. Mit Si = {x ∈ Z∗809 |x ≡3 ai } und z1 = (1, 0, 0) erhalten wir die Doppel-Tripel-Folge i zi z2i 1 (618, 0, 1) (76, 0, 2) 2 (76, 0, 2) (46, 0, 3) 3 (46, 0, 3) (113, 0, 4) .. 4 (113, 0, 4) . .. .. .. . . . 10 (422, 5, 11) (422, 11, 15) ggT(15 − 11, 101) = 1 ⇒ log89,Z∗809 618 = (11 − 5)(11 − 15)−1 mod 101 = 49 Bemerkung √ Die Zeitkomplexität liegt ungefähr bei O( n) und der Speicheraufwand ist O(1). DLP-Algorithmus von Pohlig und Hellman (PH-DLP) Qk Sei n = i=1 pci i die (bekannte) Primfaktorisierung von n, wobei n = ord(α) ist. Der PH-Algorithmus berechnet für i = 1, ..., k die Zahlen ai = logα β mod pci i . Durch den chinesischen Restsatz können wir dann den diskreten Logarithmus logα β bestimmen. Hilfsproblem Pc−1 Gegeben sind n, ein Primfaktor p von n und c ∈ N mit pc |n aber pc+1 6 |n. Weiterhin sei i=0 ai pi die p-adische Darstellung von logα β mod pc in der Basis p. Gesucht ist (a0 , ..., ac−1 ). Berechnung von a0 : Pc−1 Es gilt αl = β für l = logα β mod pc = i=0 ai pi . ⇒α a0 n p =α a0 n p · αn Pc−1 i=1 a i pi n = αp Pc−1 i=0 a i pi n n = (αl ) p = β p jn Somit können wir für j = 0, ..., p − 1 die Werte α p berechnen und α0 = j für das j mit α wählen. j Pc−1 i−j j−1 Sei nun βj = βj−1 α−aj−1 p = αp ( i=j ai p ) , j ≥ 1, β0 = β. Dann gilt βjp n j+1 n = αp Pc−1 i=j ai pi−j n = αaj p , womit wir dann iterativ aj bestimmen können. 25 jn p n = βp 2.2. GENERISCHES DLP KAPITEL 2. DER DISKRETE LOGARITHMUS Komplexität Wir müssen für jeden Primfaktor p die c Koeffizienten ai bestimmen. Mit Hilfe des Algorithmus √ von Shanks können wir diese in O( p) bestimmen. Für jede Primzahlpotenz haben wir also einen √ Aufwand von O(c p). Pk Qk √ Als Gesamtaufwand ergibt sich O( i=1 ck pk ) mit der Primfaktorzerlegung n = i=1 pckk . Der √ Aufwand ist also O( p log n), wobei p der größte Primfaktor ist. Vorlesung am 03.06.2008 Untere Schranke für das DLP Das DLP für Gruppen G = (Zm , +, 0) ist sehr einfach zu lösen: m Eingabe: α, β ∈ Zm , n = ordZm (α) = ggT(α,m) , β ∈ hαi Gesucht: logα,Zm β = min{e ≥ 0|e · α ≡m β} β m α , β 0 = ggT(α,m) und m0 = ggT(α,m) . e ist dann eine Lösung von xα ≡m β. Dies Sei α0 = ggT(α,m) 0 ist genau dann der Fall, wenn e eine Lösung von xα ≡m0 β 0 ist. Wegen ggT(α0 , m0 ) = 1 lässt sich α0 in Zm0 invertieren, d.h. wir erhalten e = β 0 (α0 )−1 . Dieses e ist dann modulo m auch die kleinste Lösung. ⇒ e = logα,Zm β 2.2 Generisches DLP Idee Das Problem sollte unabhängig von der Repräsentation der Gruppe G sein. Wir kodieren daher das DLP wie folgt: Sei α ∈ G die Basis, 1 das Einselement und n = ordG α. Sei δ : Zn → {0, 1}∗ mit |δ(i)| = O(log n) für 0, ..., n − 1 eine zufällig gewählte Injektion. Dann können wir auf dem Wertebereich δ(Z) ein isomorphes Bild Ĝ von Zn erzeugen: 1̂ = δ(0), δ(i) ◦ δ(j) = δ(i + j mod n) Das generische DLP lässt sich nun wie folgt formulieren: Gegeben seien δ1 = δ(1) = α und δ2 = δ(a) = β mit a ∈ Zn . Gesucht ist a = logα β. Definition Ein DLP-Algorithmus heißt generisch, falls er das DLP für beliebige Kodierungen δ (wie oben definiert) löst, indem er auf Ĝ Gruppenoperationen ausführt. Beispiel Alle bisher betrachteten DLP-Algorithmen (außer für die Gruppe G = (Zm , +, 0)) sind generisch. Bemerkung Da ein generischer DLP-Algorithmus alle berechneten Gruppenelemente aus den Eingabe-Elementen α, β generieren muss, können wir die Ausführung von Gruppenoperationen auch durch ein Orakel modellieren, das auf die Frage (c, d) die Antwort αc β d gibt. Ein generischer DLP-Algorithmus A berechnet also bei Eingabe δ1 = α, δ2 = β eine Folge δ1 , δ2 , δ3 , ... von Elementen in Ĝ mit δi = δ(ci + adi mod n) = αci β di und gibt am Ende a oder ? aus. 26 KAPITEL 2. DER DISKRETE LOGARITHMUS 2.3. DIE INDEX-CALCULUS-METHODE Frage In welchen Fällen gibt A die Ausgabe a aus? Antwort: In der Folge C = (c1 , d1 ), (c2 , d2 ), ... der von A gestellten Fragen gibt es zwei Fragen (ci , di ) und (cj , dj ) auf die das Orakel die gleiche Antwort gibt τ gibt. In diesem Fall gilt αci β di = τ = αci β dj . ⇔ ci + adi ≡n cj + adj ⇔ a(di − dj ) ≡n cj − ci D.h. im Fall, dass n prim ist, kann A genau dann den Wert von a mit Sicherheit herausfinden, wenn A auf zwei unterschiedliche Fragen dieselbe Antwort erhält. Falls alle Orakelantworten paarweise verschieden sind, so kann daraus der Wert a nur bestimmen, wenn es genau ein Element gibt, welches nicht in der Menge Good(C) = {(cj − ci )(di − dj )−1 mod n|1 ≤ i < j ≤ m} liegt. Wir wählen eine zufällige Kodierung δ : Zn → {0, 1}O(log n) und a ∈ Zn . Dann starten wir A mit der Eingabe n, α = δ(1), β = δ(a). Falls A ein generischer Las-Vegas-Algorithmus für das DLP ist, gilt im Fall m 2 < n − 1: (m) |Good(C)| 1 ≤ n2 . 2 ≤ P[A(n, α, β) ist korrekt] = n n ⇒ m 2 ≥ 2√⇔ m(m − 1) ≥ n ⇒ m = Ω( n) Vorlesung am 05.06.2008 2.3 Die Index-Calculus-Methode Definition Gegeben sind G = Z∗p und ein Erzeuger α von Z∗p . Der Algorithmus besteht aus 2 Phasen: 1. Berechne die Werte logα pi für i = 1, ..., k, wobei B = {p1 , ..., pk } die sogenannte Faktorbasis ist. 2. Berechne logα β für η ∈ Z∗p = hai. Berechnung von Phase 1 Wie lassen sich in Phase 1 die diskreten Logarithmen logα pi von den Primzahlen pi ∈ B berechnen? Antwort: aj α Wähle l ≥ k Kongruenzen der Form αxj ≡p p1 j1 ·...·pk k , d.h. xj ≡p−1 aj1 logα p1 +...+ajk logα pk . Hierzu wählen wir ein zufälliges xj ∈ Zn−1 und berechnen αxj mod n. Falls diese Zahl über der Faktorbasis B faktorisiert werden kann, lassen sich die Exponenten aj1 , ..., ajk leicht bestimmen. Beispiel (Phase 1) Seien p = 10007 (prim), α = 5 und B = {2, 3, 5, 7} (d.h. wir wissen sogar schon l3 = logα 5 = 1). Wähle zufällig x1 = 4063, x2 = 5136 und x3 = 5985. 54063 mod p = 42 = 2 · 3 · 7 ⇒ 55136 mod p = 54 = 2 · 33 59865 mod p = 189 = 33 · 7 l1 + l2 + l4 ≡p−1 4063 ⇒ l1 + 3l2 ≡p−1 5163 3l2 + l4 ≡p−1 9865 27 2.3. DIE INDEX-CALCULUS-METHODE l1 l2 ⇒ l3 l4 KAPITEL 2. DER DISKRETE LOGARITHMUS = 6578 = 6190 =1 = 1301 Phase 2 Wir wählen ein zufälliges s ∈ Zp−1 und berechnen γ = βαs mod p. Falls sich γ über B zerlegen Pk Qk lässt, d.h. γ = i=1 pci i , dann lässt sich logα β durch logα β = ( i=1 ci lk ) − s bestimmen. Vorlesung am 10.06.2008 Vorlesung am 12.06.2008 Lemma 2.1. Sei p ≡4 3 und S = 1. Dann ist die Berechnung von L1 (β) genau so schwer wie die Berechnung von logα β. Beweis: L0 (β) ist ohne Benutzung des L1 -Orakels effektiv berechenbar. L1 (β) kann mit einer Orakelfrage β bestimmt werden. Fragen: Wie lässt sich die Berechnung von L2 (β) auf L1 (β) reduzieren? Wie lässt sich die Berechnung von Ln (β) mit Hilfe des Orakels auf die Berechnung von L0 reduzieren? Gesucht ist also α(al ...a1 a0 )2 7→ a(al ...a1 )2 . q Annahme: Wir können zusätzlich zu β ∈ QN (p) ein γ mit γ 2 = β bestimmen. Sei γ = αβa0 . Dann können wir γ und −γ darauf testen, ob γ = αal ...a1 oder −γ al ...a1 gilt. Für genau eines der beiden p−1 p−1 2 ist das niederwertigste Bit 1, weil −1 = α 2 ( p−1 gilt. Durch 2 ist ungerade) ist und −γ = γα das L1 (β)-Orakel können wir das letzte Bit von der bestimmten Wurzel mit dem vorletzten Bit von logα β vergleichen. Es muss also nur noch gezeigt werden, dass sich die Wurzeln leicht berechnen lassen: p+1 p+1 p+1 Sei γ = β 4 . Dann gilt γ 2 ≡ β 2 ≡ α2a 2 ≡ αa(p+1) , d.h. γ 2 ≡ αa(p−1) · α2a ≡ 1 · β = β. TODO Algorithmus Beispiel (El-Gamal-Signatur) Seien p = 467, α = 2 und a = 127, d.h. β = αa mod p = 2127 mod 467 = 132. Mit x = 100 und r = 213 erhalten wir ggT(213, 466) = 1 und r−1 ≡p−1 431. ⇒ k̂ = (α, a, p) = (2, 127, 467), k = (α, β, p) = (2, 132, 467) ⇒ γ = αr mod p = 2213 mod 467 = 29, δ = (x − aγ)r−1 mod (p − 1) = (100 − 127 · 29) · 431 mod 466 = 51 ⇒ y = sigk̂ (x, r) = (γ, δ) = (29, 51) ⇒ verk (x, y) = β γ γ δ mod p = 13229 · 2951 mod 467 = 189 = 2100 mod 467 = αx mod p Mögliche Angriffe 1. Zunächst Wahl von γ ⇒ Berechnung von δ = logγ αx β −γ ⇒ DLP ⇒ schwer. 2. Zunächst Wahl von δ ⇒ Lösung für β γ γ δ ≡ αx gesucht In diesem Fall wurde bisher noch kein Lösungsalgorithmus gefunden. Die Schwierigkeit konnte jedoch auch noch nicht nachgewiesen werden. 3. Zunächst Wahl von γ und δ ⇒ Suche nach x ⇒ DLP ⇒ schwer 28 KAPITEL 2. DER DISKRETE LOGARITHMUS 2.4. EXISTENTIELLE FÄLSCHUNGEN 4. Simultane Suche von γ, δ und x (Existentielle Fälschung) Vorgehen: Seien α, β und p gegeben. Wir wählen i, j ∈ N mit 0 ≤ i, j ≤ p − 2 und setzen γ = αiβj mod p. ⇒ αx ≡p β γ αiδ β jδ ⇔ αx−iδ ≡p β γ+jδ ⇔ x − iδ ≡p−1 a(γ + jδ) Nun reicht es aus, x ≡p−1 iδ und γ ≡p−1 −jδ zu finden. Für gegebene i, j ergibt sich: γ = αiβj mod p, δ = −γj −1 mod (p − 1) und x = iδ mod (p − 1). Es reicht also ggT(j, p − 1) = 1 aus. Vorlesung am 17.06.2008 Vorlesung am 19.06.2008 Definition (El-Gamal-Signatur-Verfahren) Wir setzen X = Z∗p , Y = Z∗p × Zp−1 , k̂ = (p, α, a) mit hαiZ∗p , a ∈ Zp−1 und k = (p, α, β mit β = αa mod p. Signaturerzeugung: Mit einer zufälligen Zahl r ∈ Z∗p−1 bestimmen wir: sigk̂ (x, r) = (γ, δ) mit γ = αr mod p und δ = (x − aγ)r−1 mod (p − 1). Verifikation: verk (x, γ, δ) = (β γ γ δ ≡p x). 2.4 Existentielle Fälschungen Key only attack Für 0 < i, j ≤ p − 2, ggT(j, p − 1) = 1 gibt es die Fälschung (x, γ, δ) mit γ = αi β j mod p, δ = −γj −1 mod (p − 1) und x = −γij −1 mod (p − 1). Weitere Sicherheitsbetrachtungen 1. Die zur Signierung benutzte Zufallszahl r muss geheim gehalten werden: a = (x − δr)γ −1 mod (p − 1) 2. r darf nicht zu Signierung mehrerer Dokumente verwendet werden. (siehe Übung) Definition Schnorr-Signaturverfahren Seien p, q ∈ P mit p = mq + 1, α ∈ Z∗p , ord α = q und h : 2∗ → Zq eine Hashfunktion. Weiterhin seienX = 2∗ und Y = Z2q . Wir setzen k̂ = (p, q, α, a) für a ∈ Zp und k = (p, q, α, β) mit β = αa mod p. Signaturerstellung: Wir wählen r ∈ Z∗q zufällig und berechnen sigk̂ (x, r) = (γ, δ) mit γ = h(x(αr mod p)2 ), δ = r + aγ mod q. Hierbei sei (Z)2 die Binärdarstellung der Zahl Z. Verifikation: ver(x, γ, δ) = (h(x(αr mod p)2 ) = γ) 29 2.4. EXISTENTIELLE FÄLSCHUNGEN KAPITEL 2. DER DISKRETE LOGARITHMUS Beispiel Wir betrachten q = 101, p = 87 · q + 1 = 7879 und α0 = 3 als Erzeuger von Z∗p . Damit erhalten wir α = α078 mod p = 378 mod 7879 = 170. Seien nun a = 75 und r = 50. ⇒ αr mod p = 17050 mod 7879 = 2518, β = αa0 mod p = 17075 mod 7879 = 4567 ⇒ sigk̂ (x, r) = (γ, δ), h(x(2518)2 ) := 96, δ = r + aγ mod q = 50 + 75 · 96 mod 101 = 74 Verifikation: h(x( αδ β −γ mod p )2 ) = 96 = γ {z } | =17074 ·4567−96 =2518 Definition (Digital Signature Algorithm (DSA)) Es sei q ∈ P mit einer Länge von 160 Bits gewählt. Weiterhin sei p ∈ P mit einer Länge L ≡64 0 und 512 ≤ L ≤ 1024, sodass p = mq + 1. Der Signierschlüssel ist k̂ = (p, q, α, a) mit α ∈ Z∗p und ord α = a ∈ Zq . Der Verifikationsschlüssel ist k = (p, q, α, β) mit β = αa mod q. Wie beim Schnorr-Verfahren wird eine Hashfunktion verwendet, nämlich SHA-1. Ausgehend vom El-Gamal-Signatur-Verfahren setzen wir: δ 0 = (x + aγ)r−1 . ⇒ γ 0 = (αr mod p) mod q, δ 0 = ((x + aγ)−1 mod (p − 1)) mod q | {z } =γ 0 0 ⇒ β γ α x ≡p γ δ 0 0−1 0−1 Wenn ggT(δ 0 , q) = 1 gilt, so folgt γ 0 = (β γ δ αxδ ) mod q. Signaturerstellung: Wieder wählen wir ein zufälligs r ∈ Z∗q und berechnen sigk̂ (x, r) = (γ, δ) mit γ = (αr mod p) mod q und δ = (SHA − 1(x) + aγ)r−1 mod q. Im Fall γ = 0 oder δ = 0 muss ein neues r gewählt werden. Verifikation: verk (x, γ, δ) = ((αSHA−1(x)δ −1 β γδ −1 ) mod p) mod q Bemerkung Dieses Verfahren wird in den USA seit 1999 als Standard verwendet. Vorlesung am 24.06.2008 Beispiel Seien q = 101, p = 78q + 1 = 7879 und α0 = 3. Dann erhalten wir α = 378 mod 7879 = 170. a = 75 ⇒ β = αa mod 7879 = 4567 ⇒ k̂ = (p, q, α, a) = (7879, 101, 170, 75) k = (p, q, α, β) = (7879, 101, 170, 4567) Signierung: Um den Hashwert SHA − 1(x) = 22 zu signieren, wählt Alice eine Zufallszahl r ∈ Z∗q (z.B. r = 50, d.h. r−1 = 99 mod 101) und berechnet die Signatur sigk̂ (x, r) = (γ, δ), wobei γ = (αr mod p) mod q sowie δ = (SHA − 1(x) + aγ)r−1 mod q: γ = (17050 mod 7879) mod 101 = 2518 mod 101 = 94 δ = (22 + 75 · 94) · 99 mod 101 = 97 Verifikation: verk (x, (γ, δ)) = ((αe1 β e2 mod p) ≡q γ) mit e1 = SHA − 1(x)δ −1 mod q und e2 = γδ −1 mod q: e1 = 22 · 97−1 mod 101 = 22 · 45 mod 101 = 45 e2 = 94 · 25 mod 101 = 27 ⇒ (17045 · 456727 mod 7879) mod 101 = 2518 mod 101 = 94 30 KAPITEL 2. DER DISKRETE LOGARITHMUS 2.5 2.5. ELLIPTISCHE KURVEN ÜBER R Elliptische Kurven über R Definition (Ellipitische Kurve) Seien a, b ∈ R. Eine (reellwertige) elliptische Kurve E ist die Menge der Lösungen (x, y) ∈ R2 der Gleichung y 2 = x3 + ax + b zuzüglich des Punktes O. Im Fall 4a3 + 27b2 = 0 heißt E singulär , sonst nicht-singulär . Definition (Gruppenoperation auf elliptischen Kurven) Auf den nicht singulären Punkten lässt sich eine Gruppenoperation wie folgt definieren: Gegeben sind zwei Punkte P und Q. Wir bilden die Gerade durch P und Q. Diese schneidet die elliptische Kurve in genau einem weiteren Punkt R (bei Tangenten zählen die Berühungspunkte doppelt). Das Spiegelbild R von R an der x-Achse ist der Punkt P + Q. Das neutrale Element ist O (man kann diesen Punkt als unendlich weit nach oben verschoben betrachten). Es gilt also P + O = O + P = P für alle P ∈ E. Seien nun P = (x1 , y1 ) 6= O = 6 Q = (x2 , y2 ). Dann definieren wir: 1. Fall: x1 6= x2 Sei g = {(x, y) ∈ R2 |y = λx + µ} mit λ = y2 −y1 x2 −x1 und µ = y2 − λx2 = y1 − λx1 . Wir zeigen zuerst, dass E ∩ g = {P, Q, R} mit R = (x3 , y3 ) gilt. Für alle (x, y) ∈ E ∩ g gilt x3 − 4x = y 2 = (λx + µ)2 = λ2 x2 + 2λµx + µ2 . Dies ist äquivalent zu p(x) = x3 − λ2 x2 + (a − 2λµ)x + b − µ2 = 0. Über C lässt sich p(x) vollständig faktorisieren: p(x) = (x − x1 )(x − x2 )(x − x3 ). Weil x1 und x2 reell sind, muss auch x3 reell sein. Durch Koeffizientenvergleich erhalten wir x1 + x2 + x3 = λ2 , d.h. x3 = λ2 − x1 − x2 . y3 lässt sich dann durch einsetzen in die Geradengleichung (oder besser: in die Gleichung zur Berechnung von λ) bestimmen: y3 = λ(x3 − x1 ) + y1 . 2. Fall: x1 = x2 , y1 = −y2 Hier setzen wir P + Q = O. 3. Fall: P = Q, y1 6= 0 In diesem Fall sei t die Tangente an E in P . Die Steigung λ von t erhalten wir durch implizite Differentiation: λ= dx dy = − ∂F ∂x (x1 ,y) ∂F ∂y (x1 ,y1 ) = 3x21 +a 2y1 Sei T (x, y) die Tangentialebene an F (x, y) = y 2 − x3 − ax − b im Punkt (x1 , y1 ). Dann gilt T (x, y) = cx + dy + e mit c = ∂F ∂x (x1 , y1 ) und d = ∂F ∂y (x1 , y2 ). t ist der Schnitt von T (x, y) mit der (x, y)-Ebene: (x, y) ∈ t ⇔ cx + dy + e = 0 ⇔ y = Der Anstieg von t ist also −cx d . −cx−e . d Analog zum Fall 1 ergibt sich x3 = λ2 − 2x1 und y3 = λ(x3 − x1 ) + y1 . Satz 2.1. E bildet mit O als neutralem Element und + als Verknüpfung eine abelsche Gruppe. Beweis: Kein Beweis Bemerkung Das Inverse eines Elements P = (x, y) ist der Punkt P = (x, −y). Demnach sind genau die Punkte mit y = 0 sowie der Punkt O selbstinvers. 31 2.6. ELLIPTISCHE KURVEN ÜBER ENDLICHEN KAPITEL KÖRPERN 2. DER DISKRETE LOGARITHMUS 2.6 Elliptische Kurven über endlichen Körpern Definition Seien 3 ≤ p ∈ P und a, b ∈ Zp . Dann heißt E = {(x, y) ∈ Z2p |y 2 ≡p x3 + ax + b} ∪ {O} elliptische Kurve über Zp . Im Fall 4a3 + 27b2 ≡p 0 heißt E singulär und sonst nicht singulär . Beispiel p = 11, y 2 = x3 + x + 6 2 3 4 5 x 0 1 z = x3 + x + 6 6 8 5 3 8 4 + − + z ∈ QR11 − − + y − − 4, 7 5, 6 − 2, 9 10 · · · · · · · · · · · 9 · · · · · • · • · · • 8 · · · · · · · · • · · 7 · · • · · · · · · · · 6 · · · • · · · · · · · 5 · · · • · · · · · · · 4 · · • · · · · · · · · 3 · · · · · · · · • · · 2 · · · · · • · • · · • 1 · · · · · · · · · · · 0 · · · · · · · · · · · 0 1 2 3 4 5 6 7 8 9 10 Es gilt |E| = 13, d.h. E ∼ = Z13 . Sei A = (2, 7). Dann gilt 2A = (λ2 − 2 − 2, λ(2 − 5) − 7) mit | {z } | {z } =82 −2−2=5 6 7 8 4 − + − 2, 9 8 9 + 3, 8 9 10 7 4 − + − 2, 9 λ = (3x21 + a)(2y1 )−1 = (3 · 22 + 1)(2 · 7)−1 = 8. =2 Vorlesung am 26.06.2008 Satz 2.2. (Hasse) Sei E eine elliptische Kurve über Zp , 3 ≤ p ≥∈ P. √ √ Dann gilt für die Anzahl der Elemente von E: p + 1 − 2 p ≤ #E ≤ p + 1 + 2 p. Beweis: Kein Beweis. Satz 2.3. Sei E eine elliptische Kurve über Zp , 3 ≤ p ∈ P. Dann gilt E ∼ = Zn1 × Zn2 mit n1 ≥ 1 ≤ n2 und n2 | ggT(n1 , p − 1). Beweis: Kein Beweis. Kompression der Punktdarstellung Um die Punkte auf E kompakt darzustellen, definieren wir die folgende Funktion: P ointCompress : E \ {0} → Zp × Z2 mit (x, y) 7→ (x, y mod 2). Dekompressionsalgorithmus z = x3 + ax + b mod p; if (z ∈ QR √ p ){ y = z mod p; if (y 6≡2 b) y = p − y; return (x, y); } 32 KAPITEL 2.2.7. DER EFFIZIENTE DISKRETE BERECHNUNG LOGARITHMUSVON VIELFACHEN VON PUNKTEN AUF E Definition (ECDSA) Sei p eine Primzahl und sei E eine elliptische Kurve über Zp . Weiterhin sei A ∈ E ein Punkt der Ordnung q ∈ P, sodass das DLP in E zur Basis q schwer zu lösen ist. Signierschlüssel: k̂ = (E, p, q, A, m), m ∈ Zq Verifikationsschlüssel: k = (E, p, q, A, B), B = mA Signaturerstellung: Wähle zufällig r ∈ Z∗q und bestimme sigk̂ (x, r) = (y, z) mit r · A = (u, v), y = u mod q und z = (SHA − 1(x) + my)r−1 mod q. Im Fall y = 0 oder z = 0 muss r neu gewählt werden. Verifikation: verk (x, y, z) = u mod q = y, wobei e1 A + e2 B = (u, v) =, e1 = SHA − 1(x)z −1 mod q und e2 = yz −1 mod q. Lemma 2.2. (Korrektheit) (y, z) = sigk̂ (x, r), r ∈ Zq , y 6= 0 6= z ⇒ verk (x, y, z) = 1 Beweis: e1 = SHA − 1(x) z −1 mod q, e2 = yz −1 mod q {z } | x0 e1 A + e2 B = (x0 z −1 )A + (yz −1 m)A = (x0 + my)z −1 A = rA Beispiel Wir betrachten wieder die elliptische Kurve aus dem vorherigen Beispiel (p = 11, y 2 = x3 + x + 6). Seien A = (2, 7) und m = 7 mit q = ordE (A) = 13 Damit erhalten wir k̂ = (E, 11, 13, A, 7) und k = (E, 11, 13, A, B) mit B = 7 · A = (7, 2). Seien x0 = SHA − 1(x) = 4 und r = 3. ⇒ rA = 3 · (2, 7) = (8, 3) = (u, v) ⇒ y = u mod q = 8, z = (x0 + my)r−1 mod q = (4 + 7 · 8)3−1 mod 13 = 7 ⇒ sigk̂ = (8, 7) Verifikation: e1 = x0 z −1 mod q = 4 · 7−1 mod 13 = 8 e2 = y · z −1 = 8 · 7−1 mod 13 = 3 e1 A + e2 B = 8 · (2, 7) + 3 · (7, 2) = (8, 3) u = 8 ≡q y ⇒ verk (x, 8, 7) = 1 Vorlesung am 01.07.2008 2.7 Effiziente Berechnung von Vielfachen von Punkten auf E Definition (cl−1 , ..., c0 ) ∈ {−1, 0, 1}l heißt SBR-Darstellung (signed binary representation) einer Zahl c ∈ Z, Pl−1 falls i00 ci 2i = c ist. Ist von je zwei benachbarten ci ’s mindestens eines 0, so heißt (cl−1 , ..., c0 ) NAF-Darstellung von C. Beispiel C = 11 hat die SBR-Darstellungen (0, 1, 0, 1, 1) und (1, 0, −1, 0, −1), denn 1 + 2 + 8 = 11 und −1 − 4 − 16 = 11. Satz 2.4. Jede Binärzahl hat eine eindeutige NAF-Darstellung. Beweis: Übung. 33 2.8. ONE-TIME SIGNATUR (LOMPAT) KAPITEL 2. DER DISKRETE LOGARITHMUS Algorithmus: DoubleAdd (klassische Variante) Point DoubleAdd(P, cl−1 , ..., c0 ) { Q = 0; for (i = l − 1; i >= 0; i–) { Q = 2Q; if (ci == 1) Q = Q + P; } return Q; } Algorithmus: DoubleAddSub (für SBR-Darstellung) Point DoubleAdd(P, cl−1 , ..., c0 ) { Q = 0; for (i = l − 1; i >= 0; i–) { Q = 2Q; if (ci == 1) Q = Q + P; else if (ci == −1) Q = Q − P; } return Q; } Bemerkung (Geschwindigkeitsvergleich) Da eine l-Bitzahl im Durchschnitt 2l Nullen in Binärdarstellung und enthält, ist DoubleAddSub durchschnittlich um den Faktor l+ 2l l+ 3l = 9 8 2l 3 Nullen in NAF-Darstellugn schneller, d.h. wir haben einen Geschwindigkeitsgewinn von etwa 12.5%. 2.8 One-time Signatur (Lompat) Sei X = 2n und Y = U n mit l : U ,→ V eine injektive Einwegfunktion ist. Signierschlüssel: k̂ = (ui,b )i=1,...,n,b∈2 , wobei ui,b , (i, b) ∈ {1, ..., n} × 2 2n paarweise verschiedene Elemente aus U sind. Verifikationsschlüssel: k = (vi,b )i=1,...,n,b∈2 , wobei vi,b = f (ui,b ). Signaturerstellung: Sei x = x1 ...xn ∈ 2n gegeben. sig(k̂, x) = u1 ...un , wobei ui = ui,xi . | {z } =y Verifikation: ver(k, x, y) = (∀i = 1, ..., n : f (ui ) = vi,xi ) Beispiel Wir können als Einwegfunktion eine funktion f : Z∗p → Z∗p mit f (u) = g u mod p und hgi = Z∗p verwenden. Wir wählen p = 7879 und g = 3. Weiterhin sei n = 3. Der Signierschlüssel sei k̂ = (5831 803 , 4285 735 , 2467 | {z}, |{z} | {z}, |{z} | {z}, 6449 | {z}). u1,0 u1,1 u2,0 u2,1 u3,0 u3,1 Der Verifikationsschlüssel ist dann k = (2009 268 , 3810 | {z}, 4672 | {z }, |{z} | {z}, 4721 |{z }, 5731 |{z }). v1,0 v1,1 ⇒ sig(k̂, |{z} 110 ) = (u1 u2 u3 ) = (803, 735, 2467) =x ⇒ ver(k, 110, u1 u2 u3 ) = 1, da: f (u1 ) = 3803 mod p = 4672 = v1,1 34 v2,0 v2,1 v3,0 v3,1 KAPITEL 2. DER DISKRETE 2.9. VERBINDLICHE LOGARITHMUS SIGNATUREN (UNDENIABLE SIGNATURES) f (u2 ) = 3735 mod p = 3810 = v2,1 f (u2 ) = 32467 mod p = 4721 = v3,0 Definition (Algorithmus für den Sicherheitsbeweis) Zum Nachweis der Sicherheit des Signaturverfahrens nehmen wir an, dass f : U → V eine Einwegpermutation ist (also bijektiv) ist und dass ein Algorithmus Lampat-Fälschung k existiert, der bei Eingaben eines Verifikationsschlüssels k eine nicht selektive Fälschung (x, y) mit verk(k, x, y) = 1 ausgibt. Wir betrachten den folgenden probabilistischen Las-Vegas-Algorithmus (d.h. wir geben nie etwas falsches aus): int Lampat-Urbild(int v) { wähle zufällig paarweise verschiedene Funktionswerte v1,0 , ..., vn,1 , die ungleich v sind; vi,b = v für ein zufällig gewähltes Paar (i, b); (x, y) =Lampat-Fälschung(k); if (xj == a); return uj ; else return ?; } Satz 2.5. Unter den genannten Voraussetzungen gibt Lampat-Urbild(v) für einen zufällig gewählten Funktionswert v ∈ V mit Wahscheinlichkeit 21 ein Urbild u mit f (u) = v aus. Beweis: Es reicht zu zeigen, dass die Wahrscheinlichkeit des Eintretens des ?-Falles kleiner oder gleich 12 ist. V Seien S = 2n die Menge aller möglichen Verifikationsschlüssel k und s = |S|. Für v ∈ V seien Sv die Menge aller k ∈ S, in denen v vorkommt, und Tv die Menge aller k ∈ Sv , bei deren Wahl der Algorithmus Lampat-Urbild erfolg hat. P Zu zeigen ist p = |V1 | v∈V pv ≥ 21 , wobei pv die Erfolgswahrscheinlichkeit von Lampat-Urbild(v) ist. Mit tv = |Tv | und sv = |Sv | gilt pv = 1. Es gilt P v∈V |Tv | |Sv | . tv = ns. Für jedes der s möglichenPVerifikationsschlüssel findet Lampat-Fälschung(k) genau n Urbilder, was der Gesamtzahl v∈V tv entspricht. 2. Für jedes v ∈ V gilt sv |V | = 2ns. Aus Symmetriegründen gilt s0 = sv = sv0 für alle v, v 0 ∈ V . Zudem enthält jeder der s Verifikationsschlüssel k ∈ S genau 2n Elemente von V . P P Daher folgt 2ns = v∈V sv = sv v∈V 1 = sv |V |. P P P 1 · ns = 12 . Damit folgt p = |V1 | v∈V pv = |V1 | v∈V tv sv = |V1|s0 v∈V tv = 2ns Vorlesung am 03.07.2008 2.9 Verbindliche Signaturen (undeniable signatures) Definition (Chaum van Antwerpe Signaturverfahren) Sei p = 2q + 1 mit p, q ∈ P sodass das DLP in Z∗p hinreichend schwer ist. Weiterhin seien α ∈ Z∗p ein Element mit ordZ∗p (α) = q, d.h. α = g 2 , hgi = Z∗p bzw. G = hαi = QRp . Wir setzen nun X = Y = G. Signierschlüssel: k̂ = (p, α, a) mit a ∈ Z∗q 35 2.9. VERBINDLICHE SIGNATUREN (UNDENIABLE KAPITELSIGNATURES) 2. DER DISKRETE LOGARITHMUS Verifikationsschlüssel: k = (p, α, β) mit β = αa mod p Signaturerstellung: y = sig(k̂, x) = xa mod p Verifikationsprotokoll: zwischen Alice (legaler Unterzeichner) und Bob (Verifizierer) 1. Bob wählt zufällig e1 , e2 ∈ Zq und sendet c = y e1 β e2 an Alice. −1 2. Alice sendet d = ca mod q mod p an Bob zurück. 3. Bob akzeptiert genau dann die Signatur, wenn d ≡p xe1 αe2 . Lemma 2.3. (Korrektheit) Falls y = xa mod p eine gültige Signatur ist und sich Alice und Bob an das Verifikationsprotokoll halten, dann akzeptiert Bob y als gültige Signatur für x. Beweis: 1. Wegen β ≡p αa folgt β a 2. Wegen y ≡p xa folgt y a −1 ⇒ d ≡p c a mod q −1 −1 ≡p (y e1 β e2 )a −1 mod q mod q −1 ≡p αaa −1 ≡p xaa mod q ≡p y a mod q mod q −1 ≡p α. ≡p x. e1 mod q a−1 e2 mod q β ≡p x e 1 α e 2 Beispiel Seien p = 2 · |{z} 233 +1 = 467 und g = 2, d.h. α = g 2 = 4. =q ⇒ k̂ = (p, α, a) mit a = 101 ⇒ k = (p, α, β) mit β = αa mod p = 4101 mod 467 = 449 ⇒ Die Signatur von x = 119 ∈ G = QRp ist y = sig(k̂, x) = xa mod p = 119101 mod 467 = 129. Verifikationsprotokoll für x = 119 und y = 129 1. Seien e1 = 38 und e2 = 164. ⇒ c = y e1 β e2 mod p = 12938 · 449164 mod 467 = 13 2. d = ca −1 mod q −1 mod p = 13101 mod 233 mod 467 = 9 3. xe1 αe2 mod p = 11938 · 4164 mod 467 = 9 Satz 2.6. Im Fall y 6≡p xa akzeptiert Bob mit Wahrscheinlichkeit ≤ Alice nicht an das Verifikationsprotokoll hält. 1 q, selbst dann, wenn sich Beweis: Da zu y, β, c ∈ G und zu e1 ∈ Zq genau ein e2 ∈ Zq mit c ≡p y e1 β e2 existiert, führen je q Paare (e1 , e2 ) ∈ Z2q auf das selbe c. Behauptung: Im Fall y 6≡p xa erfüllt für jedes d ∈ G genau ein Paar (e1 , e2 ) ∈ Z2q die Kongruenzen c ≡p y e1 β e2 und d ≡p xe1 αe2 . Beweis der Behauptung: Seien c = αi , d = αj , x = αk und y = αl . Dann sind die beiden Äquivalenzen aus der Behauptung äquivalent zu i ≡q le1 + ae2 und j ≡q ke1 + e2 . l a Wegen y 6≡p xa ⇔ l 6≡q ka ⇔ det 6= 0 hat dieses Gleichungssystem eine eindeutige Lösung k 1 in Zq . Damit ist die Behauptung bewiesen. Aus der Behauptung folgt dann auch der Satz. Vorlesung am 08.07.2008 Problem Alice könnte nun behaupten, dass eine (möglicherweise echte) Signatur falsch ist und nicht von ihr stammt. Um dies nachweisen zu können, gibt es das folgende Ableugnungsprotokoll. 36 KAPITEL 2. DER DISKRETE 2.9. VERBINDLICHE LOGARITHMUS SIGNATUREN (UNDENIABLE SIGNATURES) Definition Ableugnungsprotokoll 1. Bob wählt zufällig e1 , e2 ∈ Zq und sendet c = y e1 β e2 mod q an Alice. −1 2. Alice sendet d = ca mod p an Bob zurück. 3. Bob testet, ob d 6≡p xe1 αe2 gilt. 4. Bob wählt zufällig f1 , f2 ∈ Zq und sendet C = y f1 β f2 mod q an Alice. 5. Alice sendet D = C a −1 mod p an Bob zurück. 6. Bob testet, ob D 6≡p xf1 αf2 gilt. 7. Bob erkennt y als falsche Signatur an, wenn einer der beiden Tests in Zeilen 3 und 6 positiv ausfällt und zusätzlich folgende Konsistenzbedingung erfüllt ist: (dα−e2 )f1 ≡p (Dα−f2 )e1 (Der dritte und sechste Schritt allein reichen noch nicht aus, um nachzuweisen, dass die Signatur falsch ist, da Alice ja absichtlich falsche d und D an Bob gesendet haben könnte.) Satz 2.7. Im Fall y 6≡p xa erkennt Bob y mit einer Wahrscheinlichkeit von mindestens 1 − falsch an, falls sich beide an das Ableugnungsprotokoll halten. 1 q2 als Beweis: Mit Hilfe des vorhergehenden Satzes erhalten wir als Wahrscheinlichkeit für das zweimalige Gelingen der Verifikation (d.h. die Schritte 1-6) wegen der unabhängigen Wahl von e1 , e2 und f1 , f2 höchstens q12 . D.h. die Wahrscheinlichkeit, dass die Tests der Zeilen 3 und 6 fehlschlagen, ist höchstens q12 . Wenn sich beide an das Protokoll halten, dann ist die Konsistenzbedingung mit Wahrscheinlichkeit 1 (hier also immer) erfüllt: f1 −1 −1 f a−1 −e2 ≡p y e1 a f1 α(e2 −e2 )f1 ≡p y e1 f1 a α (dαe2 ) 1 ≡p (y e1 β e2 ) e1 a−1 −f e1 −1 ≡p Dα−f2 ≡p y f1 a e1 α(f2 −f2 )e1 ≡p y f1 β f2 α 2 Satz 2.8. Im Fall y ≡p xa erkennt Bob y mit einer Wahrscheinlichkeit von höchstens an, selbst wenn Alice sich nicht an das Ableugnungsprotokoll hält. 1 q als falsch Beweis: Bob erkennt y nur dann als falsch an, wenn die beiden folgenden Bedingungen erfüllt sind: 1. d 6≡p xe1 αe2 oder D 6≡p xf1 αf2 2. (dα−e2 )f1 ≡p (Dα−f2 )e1 Annahme: Bob erkennt die Signatur als falsch an. Wir betrachten den Fall d 6≡p xe1 αe2 . (Der Fall D 6≡p xf1 αf2 kann analog behandelt werden.) Seien e1 , e2 und d so gewählt, dass d 6≡p xe1 αe2 . Alice muss nun zu gegebenem C ein D finden, sodass die Konsistenzbedingung erfüllt ist. Durch C wird jedem f1 genau ein f2 mit der Eigenschaft C = y f1 β f2 mod p zugeordnet. Behauptung: Für jedes D ∈ G existiert genau ein Paar (f1 , f2 ) mit C ≡p y f1 β f2 und (dα−e2 )f1 ≡p (Dα−f2 )e1 . Offensichtlich folgt aus der Behauptung auch sofort der Satz. Beweis der Behauptung: Z β x y C D u = dα−e2 logα Z a k ak i j l Dabei gilt l + e2 6≡q ke1 + e2 , wegen αl+e2 ≡p d 6≡p xe1 αe2 . 37 2.10. FAIL-STOP-SIGNATUREN KAPITEL 2. DER DISKRETE LOGARITHMUS Wir erhalten also das Gleichungssystem ak · f1 + af˙2 ≡q i und l · f1 + e1 · f2 ≡q e1 j, d.h. ak a f1 i · ≡q . l e1 f2 e1 j ak a ak = ake1 − la = a(ke1 − l) und ke1 6≡q l und a ∈ Z∗q gilt det l e1 l d.h. das Gleichungssystem hat genau eine Lösung. Wegen det 2.10 a 6= 0, e1 Fail-Stop-Signaturen Diese Signaturen erlauben es Alice (d.h. dem legalen Signaturerzeuger) für den Fall, dass ihr Signierschlüssel k̂ geknackt wird (fail), dies zu beweisen und damit alle von ihr mit k̂ geleisteten Unterschriften zu widerrufen (stop). Genauer: Alice kann mit hoher Wahrscheinlichkeit beweisen, dass eine von einem Gegner erzeugte gültige Signatur nicht von ihr stammt. Dies setzt natürlich voraus, dass es für ein Dokument mehrere gültige Signaturen gibt. Wir verwenden ein Verfahren, dass eine Information in der Signatur kodiert, die selbst bei Kenntnis des Signierschlüssels nicht bekannt ist. Definition (van Heyst-Pederson-Signaturverfahren) Seien q = 2p + 1 mit p, q ∈ P und α ∈ Z∗p mit ordp (α) = q. Weiterhin seien β = αa0 mod p und G = hαi = QRp . p, q, α, β werden von einer vertrauenswürdigen Instanz generiert und bekanntgegeben. Das a0 wird jedoch geheim gehalten. Wir verwenden X = Zq und Y = Z2q . Der Signierschlüssel k̂ = (a1 , a2 , b1 , b2 ) ∈ Z4p kann von dem Teilnehmer (ohne Mitwirkung der vertrauenswürdigen Instanz) gewählt werden. Der Verifikationsschlüssel ist k̂ = (γ1 , γ2 ) = (αa1 β a2 , αb1 β b2 ) ∈ G2 . Signaturerstellung: sig(k̂, x) = (y1 , y2 ) = (a1 + xb1 mod q, a2 + xb mod q). Verifikation: ver(k, x, y1 , y2 ) = (γ1 γ2x ≡p αy1 β y2 ) Vorlesung am 10.07.2008 Lemma 2.4. (Korrektheit) (y1 , y2 ) = (a1 + xb1 mod q, a2 + xb2 mod q) ⇒ ver(k, x, y1 , y2 ) = 1 Beweis: γ1 γ2x = αa1 β a2 αxb1 β xb2 ≡p αa1 +xb1 β a2 +xb2 ≡p αy1 β y2 Lemma 2.5. Sei S die Menge aller Paare (k̂, k) ∈ Z4p × G2 mit k̂ = (a1 , a2 , b1 , b2 ) ∈ Z4p und k = (αa1 β a2 , αb1 β b2 ) ∈ G2 . Weiter sei S(k) = {k̂|(k̂, k) ∈ S}. Dann gilt: 1. |S(k)| = p2 2. k̂, k̂ 0 ∈ S(k), (y1 , y2 ) = sig(k̂, x), y 0 = (y10 , y20 ) = sig(k̂ 0 , x) ⇒ ver(k, x, y) = ver(k, x, y 0 ) = 1 Beweis: 1. Es muss αa1 β a2 ≡q γ1 und αb1 β b2 ≡q γ2 gelten. ⇒ a1 + a0 a2 ≡p c1 und b1 + a0 b2 ≡p c2 ⇒ Zu jedem Paar (a2 , b2 ) gibt es jeweils mindestens p Möglichkeiten für a1 und b1 um die Gleichungen zu erfüllen. 38 KAPITEL 2. DER DISKRETE LOGARITHMUS 2.10. FAIL-STOP-SIGNATUREN 2. Trivial Lemma 2.6. Seien y = (y1 , y2 ) = sig(k̂, x) und k̂ ∈ S(k). Dann gilt | {k̂ 0 ∈ S(k)|sig(k̂ 0 , x) = y} | = p. | {z } =S(k,x,y) Beweis: Sei k = (γ1 , γ2 ). Dann ist k̂ 0 = (a1 , a2 , b1 , b2 ) ∈ S(k, x, y) äquivalent zu αa1 β a2 ≡q γ1 , αb1 β b2 ≡q γ2 , a1 + xb1 ≡p y1 und a2 + xb2 ≡p y2 . 1 a0 0 0 0 0 1 a0 Um die Anzahl der Lösungen zu bestimmen, bestimmen wir den Rang der Matrix 1 0 x 0 . 0 1 0 x Seien r1 , ..., r4 die 4 Zeilen der Matrix. Dann gilt r1 = r3 + a0 r4 − xr2 . Weiterhin sind die Zeilen 2 bis 4 linear unabhängig, womit wir den Rang 3 erhalten. Demnach folgt |S(k, x, y)| = p. Lemma 2.7. Sei k̂ ∈ S(k) und es gelte sig(k̂, x) = y. Weiterhin sei (x0 , y 0 ) ein Paar mit x0 6= x und ver(k, x0 , y 0 ) = 1. Dann gilt | {k̂ 0 ∈ S(k)|sig(k̂ 0 , x) = y ∧ sig(k̂ 0 , x0 ) = y 0 } | ≤ 1. | {z } =S(k,x,y,x0 ,y 0 ) Beweis: Es gilt k̂ 0 ∈ S(k, x, y, x0 , y 0 ) genau dann, wenn: a1 + a0 a2 ≡p c1 b1 + a0 b2 ≡p c2 a1 + xb1 ≡p y1 a2 + xb2 ≡p y2 a1 + x0 b1 = y10 a2 + x0 b2 = y20 1 a0 0 0 c1 0 0 1 a0 c2 a 1 1 0 x 0 a2 y1 · = . Dieses Gleichungssystem ist äquivalent zu 0 1 0 x b1 y2 0 1 0 x0 0 y1 b2 0 0 1 0 x y20 Weil die 2., 3., 4. und 6. Zeile der Matrix linear unabhängig sind (es gilt x 6= x0 ), ist der Rang der Matrix 4. Vorlesung am 15.07.2008 Lemma 2.8. Sei k̂ ∈ S(k) und es gelte sig(k̂, x) = y. Dann gilt |{k̂ 0 ∈ S(k)|sig(k̂ 0 , x) = y}| = q. Beweis: Es reicht zu zeigen, dass im Fall ver(k, x0 , y 0 ) = 1 das Gleichungssystem aus dem vorhergehenden 0 0 0 Lemma lösbar ist: ver(k, x0 , y 0 ) = 1 ⇒ γ1 γ2x ≡p αy1 β y2 ⇒ c1 + x0 c2 ≡q y10 + a0 y20 |{z} y10 0 a0 y20 =(y10 ,y20 ) ⇒ ≡q c1 + x c2 − Wegen ver(k, x, y) = 1 folgt außerdem y1 ≡q c1 + xc2 − a0 y2 . Wegen r5 = r1 + x0 r2 − a0 r6 und r3 = r1 + xr2 − a0 r4 (dabei sind r1 , ..., r6 die 6Zeilen der r1 a1 c1 r2 a2 c2 Matrix aus dem vorhergehenden Lemma) folgt, dass jede Lösung von r4 · b1 = y2 auch r6 b2 y20 39 2.10. FAIL-STOP-SIGNATUREN KAPITEL 2. DER DISKRETE LOGARITHMUS Lösungen des gesamten Gleichungssystems sind. (Hierfür benötigen wir, dass die rechten Seiten des Gleichungssystems die selben linearen Abhängigkeiten erfüllen.) Korollar 2.1. Seien x 6= x0 und ver(k, x0 , y 0 ) = 1. Dann gilt Pk̂∈Z4 (sig(k̂ 0 , x0 ) = y 0 | sig(k̂ 0 , x) = y, k̂ 0 ∈ S(k)) = q | {z } | {z } A 1 q, d.h. für jedes von einem Gegner B bei Kenntnis von k, x, y = sig(k̂, x) generierte Paar (x0 , y 0 ) mit x0 6= x und ver(k, x0 , y 0 ) = 1 ist die Wahrscheinlichkeit, dass der “richtige” Schlüssel k̂ auch sig(k̂, x0 ) = y 0 liefert, genau 1q . Beweis: Das Ereignis B tritt genau dann ein, wenn k̂ 0 ∈ S(k, x, y) gilt. Es gilt also P(A|B) = P(A∩B) P(B) = 1 q4 q q4 = 1q . Korollar 2.2. Sei S(k, x, y) = {k̂1 , ..., k̂q }. Dann gilt |{sig(k̂i , x0 )|i = 1, ..., q}| = q, falls x 6= x0 gilt. Beweis: Im Fall sig(k̂i , x0 ) = y 0 = sig(k̂j , x0 ) mit i 6= j wären die Signierschlüssel k̂i und k̂j in S(k, x, y, x0 , y 0 ) enthalten. Diese Menge enthält jedoch höchstens ein Element. Daher kann dieser Fall nicht eintreten, d.h. es gilt die Behauptung des Korollars. Funktionsweise des Fail-Stop-Mechanismus Wie kann Alice bei Vorlage (x0 , y 00 ) mit ver(k, x0 , y 00 ) = 1 und y 00 6= y 0 = sig(k, x0 ) beweisen, dass diese Signatur y 00 nicht von ihr erzeugt wurde? Antwort: Wir gehen davon aus, dass Alice wegen ihrer beschränkten Rechenressourcen nicht in der Lage ist, a0 = logα β zu berechnen. Mit der zusätzlichen Information (k, x0 , y 00 ) kann sie jedoch a0 effizient bestimmen. Wegen ver(k, x0 , y 0 ) = 1 = ver(k, x0 , y 00 ) folgt: 0 0 0 0 0 00 00 00 00 αy1 +a0 y2 ≡p αy1 β y2 ≡p γ1 γ2x ≡p αy1 β y2 ≡p αy1 +a0 y2 ⇔ y10 + a0 y20 ≡q y100 + a0 y200 ⇒ a0 ≡q (y100 − y10 )(y20 − y200 )−1 Beispiel Wir setzen p = 2q + 1 = 3467 mit q = 1733 und α = 4 mit ord α = q. Die vertrauenswürdige Instanz (TTP - trusted third party) wählt nun a0 ∈ Z∗q , z.B. a0 = 1567, berechnet β = αa0 mod p = 41567 = 514 und gibt p, q, α und β bekannt. Alice wählt nun den Signierschlüssel k̂ = (a1 , a2 , b1 , b2 ) = (888, 1024, 768, 999). Der Verifikationsschlüssel ist dann k = (γ1 , γ2 ) = (αa1 β a2 , αb1 β b2 ) = (3405, 2281). Wird Alice mit einem vom Gegner gegebenen Paar (x0 , y 00 ) = (x0 , y100 , y200 ) = (3383, 822, 55) konfron0 00 00 tiert, das wegen γ1 γ2x = 3405·22813383 ≡p 2282 ≡p 4822 ·51555 = αy1 β y2 die Verifikationsbedingung erfüllt, so berechnet Alice zunächst y 0 = (y10 , y20 ) = sig(k̂, x0 ) = (a1 + x0 b1 mod q, a2 + x0 b2 mod q) = (1504, 1291) 6= (822, 55). Damit erhält sie a0 = (y100 − y10 )(y20 − y200 )−1 mod q = (822 − 1504)(1291 − 55)−1 mod q = 1567. Vorlesung am 17.07.2008 40 Kapitel 3 Zero Knowledge Beweise 3.1 Interaktive Beweise Herkömmliche Beweise entsprechen der Klasse N P , d.h.: A ∈ N P , falls ein effizienter Verifizierer V existiert, mit ∀x ∈ A : ∃y : V (x, y) = 1 Vollständigkeit und ∀x 6∈ A : ∀y : V (x, y) = 0 Korrektheit (V, P ) heißt (nicht interaktives) Beweissystem für A, falls ∀x ∈ A : (V, P )(x) = 1: P erzeugt einen Beweis für x und V verifiziert diesen Beweis. Das Beweissystem ist nicht interaktiv, weil der Informationsfluss nur von P zu V stattfindet. Weiterhin gilt ∀x 6∈ AP 0 : (V, P 0 )(x) = 0 Ergänzung zu Interaktiven Beweisen Wir erlauben nun, während des Beweisvorgangs Informationen (und Fragen) zwischen V und P auszutauschen. Damit erhalten wir ein deterministisches interaktives Beweissystem. Hinzunahme von Nichtdeterminismus Lassen sich mit diesem Verfahren Sprachen außerhalb von N P verifizieren? Dabei soll die Anzahl der Runden und die Komplexität des Verifizierers polynomiell in der Eingabelänge x beschränkt sein. P kann jedoch beliebige Komplexität haben. Antwort: Nein - die Interaktion allein bringt nichts, weil die Komplexität des Beweisers P beliebig sein kann, kann dieser alle Reaktionen des Verifizierers vorausberechnen und die Antworten gleich beim ersten Mal auf das Band schreiben. Daher erhält jede der Turingmaschinen P und V nun die Möglichkeit Zufallsbits zu verwenden. Definition Eine Sprache A hat ein interaktives Beweissystem (IBS), falls interaktive Turingmaschinen (ITM) V und P existieren, sodass V polynomiell (in der Eingabe x) zeitbeschränkt ist und für alle Eingaben x gilt: x ∈ A ⇒ P((V, P )(x) = 1) = 1 x 6∈ A ⇒ ∀P 0 : P ((V, P 0 )(x) = 1) ≤ 21 (Wir können die zweite Wahrscheinlichkeit durch Wiederholungen beliebig verkleinern.) Satz 3.1. Genau die Sprachen in P SP ACE haben ein IBS. Beweis: Kein Beweis 41 3.2. ZERO-KNOWLEDGE KAPITEL 3. ZERO KNOWLEDGE BEWEISE Bemerkung Wenn man mehr als einen Prover P zulässt, erhält man genau die Sprachen, die in N EXP liegen. Zwei Beweiser sind dabei genau so mächtig wie polynomiell viele Beweiser. Beispiel (Komplement der Graphenisomorphie) Eingabe sind G1 und G2 mit v(G1 ) = v(G2 ) = n. Ein IBS für das Komplement der Graphenisomorphie ist: V wählt zufällig i ∈ {1, 2} sowie eine Permutation π ∈ Sn und berechnet H = π(Gi ). V sendet diesen Graphen H nun an P und fragt nach der gewählten Zufallszahl i. P sendet nun 1 im Fall H ∼ = G1 und sonst 2 an V zurück. V akzeptiert nun genau dann, wenn i = j gilt. Wenn G1 ∼ 6 G2 gilt, so findet der Beweiser immer das gewählte Zufallsbit heraus. = Bei Isomorphie kann er sich nicht entscheiden, da beide Graphen zu H isomorph sind. Durch die zufällige Wahl von i ist die Akzeptanzwahrscheinlichkeit höchstens 21 . Beispiel (Graphenisomorphie) Um die Isomorphie zweier Graphen nachzuweisen, kann P einfach einen Isomorphismus zwischen G1 und G2 angeben. 3.2 Zero-Knowledge Es soll nun vermieden werden, dass der Tester durch die Informationen, die ihm der Beweiser liefert, selbst eine weitere Instanz überzeugen kann. Daher darf der Beweiser keine Informationen an den Tester weitergeben, die diesem helfen könnten, selbst einen Beweis zu finden. Definition Zero-Knowledge IBS für Graphenisomorphie Eingabe: G1 , G2 mit v(G1 ) = v(G2 ) = n 1. P wählt eine zufällige Permutation π ∈ Sn , berechnet H = π(G1 ) und sendet H an V . 2. V wählt eine zufällige Zahl i ∈ {1, 2} und fordert eine Bijektion zwischen Gi und H an. 3. P berechnet eine Bijektion σ : Gi → H und sendet dieses an V . 4. V akzeptiert genau dann, wenn σ(Gi ) = H gilt. Bemerkung Das dieses Verfahren ein interaktives Beweissystem ist, ist leicht einzusehen. Die Sicht von V ist G1 , G2 , H, i und σ. Wir bezeichnen diese als view(V, P, G1 , G2 ). Definition (perfekte Zero-Knowledge-Eigenschaft (informell) - PZK) Für jeden effizienten Verfizierer V ∗ existiert eine effiziente probabilistische Turingmaschine S (Simulator), sodass für alle Eingaben x ∈ A gilt: S produziert bei Eingabe x die Sicht von (V ∗ , P )(x) (auch als view(V ∗ , P, x) bezeichnet), wobei nur Ausgaben y 6=? von S(x) berücksichtigt werden, d.h. die bedingte Verteilung der Zufallsvariablen S(x) unter der Bedingung S(x) 6=? stimmt mit der Verteilung von view(V ∗ , P, x) überein. Lemma 3.1. Das obige Verfahren zum Nachweis der Graphenisomorphie hat die Zero-KnowledgeEigenschaft. Beweis: Kein Beweis. 42 Index adaptiv, 18 nicht-, 18 adaptive Textwahl, 12 Algorithmus DLP generisch, 26 Angriff adaptiv wählbare Dokumente, 20 adaptiv wählbarer Klartext, 12 bekannte Signatur, 20 bekannter Klartext, 12 bekannter Verifikationsschlüssel, 20 frei wählbare Dokumente, 20 adaptiv, 20 frei wählbarer Klartext, 12 adaptiv, 12 Impersonation, 12 Substitution, 12 reell, 31 Gruppenoperation, 31 nicht singulär, 31 singulär, 31 singulär endlicher Körper, 32 reell, 31 endian big, 11 little, 11 Entropie, 16 bedingt, 16 gemeinsam, 16 existenziell Fälschung, 18 Fälscher, 18 Fälschung existenzielle, 18 selektiv, 18 Fälschungsvermögen existentiell, 20 nicht selektiv, 20 selektiv, 20 nicht, 20 uneingeschränkt, 20 bedingte Entropie, 16 berechnungsresistent, 11 Beweissystem deterministisch interaktiv, 41 interaktiv deterministisch, 41 nicht deterministisch, 41 nicht deterministisch interaktiv, 41 nicht interaktiv, 41 big endian, 11 gültiges Paar, 8 Geburtstagsangriff, 10 gemeinsame Entropie, 16 Hash-MAC, 18 Hashfamilie, 11 Hashfunktion Einweg, 8 kollisionsresistent, 8 schwach, 8 stark, 8 schwach kollisionsresistent, 8 stark kollisionsresistent, 8 CBC-MAC, 17 deterministisches interaktives Beweissystem, 41 Einweg-Hashfunktion, 8 elliptische Kurve endlicher Körper, 32 nicht singulär, 32 singulär, 32 Gruppenoperation reell, 31 nicht singulär endlicher Körper, 32 Impersonation, 12 Informationsgehalt, 16 Kollisionsangreifer, 18 43 INDEX INDEX Kollisionspaar, 8 kollisionsresistent, 8 schwach, 8 stark, 8 Komposition Hashfamilien, 18 Kompressionsfunktion, 8 little endian, 11 NAF-Darstellung, 33 nicht interaktives Beweissystem, 41 Paar gültig, 8 Kollision, 8 SBR-Darstellung, 33 schwach kollisionsresistent, 8 seletiv Fälschung, 18 stark kollisionsresistent, 8 stark universal, 14 Substitution Angriff, 12 Zero-Knowledge-Eigenschaft, 42 perfekt, 42 Zufallsorakelmodell, 9 44