Kryptologie II

Werbung
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
 6Zeilen
 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
Herunterladen