Lösung 11 - CDC - Technische Universität Darmstadt
Lösung 11 - CDC - Technische Universität Darmstadt
Lösung 11 - CDC - Technische Universität Darmstadt
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
TECHNISCHE UNIVERSITÄT DARMSTADT<br />
FACHGEBIET THEORETISCHE INFORMATIK<br />
PROF. JOHANNES BUCHMANN<br />
FATEME SHIRAZI<br />
Einführung in die<br />
Kryptographie<br />
WS 2013/2014<br />
<strong>11</strong>. <strong>Lösung</strong>sblatt — 17.01.2014<br />
P1 Hashfunktionen<br />
Sei f : → , x → x − ⌊x⌋. Dabei ist ⌊·⌋ die sogenannte floor function, die einer reellen Zahl x die eindeutig bestimmte<br />
ganze Zahl z mit 0 ≤ x − z < 1 zuordnet, z.B. ⌊ 7⌋ = 2. Betrachten Sie die Hashfunktion<br />
h : {0, 1} ∗ → {0, 1} ∗ , k → ⌊10 · f (k · 3)⌋<br />
hierbei werden die Bitstrings mit den durch sie dargestellten nicht negativen ganzen Zahlen identifiziert.<br />
(a) Bestimmen Sie das Bild von h, d.h. alle Funktionswerte, die h(k) annehmen kann.<br />
<strong>Lösung</strong>. Das Bild der Funktion f liegt in jedem Fall im halboffenen Intervall [0, 1[. Somit liegen die Werte der<br />
Funktion x → 10f (x) in [0, 10[. Daraus folgt, dass die Bildmenge von h die Menge {0, 1, 2, . . . , 9} ist.<br />
(b) Wie viele Funktionswerte h(k) müssen Sie höchstens untersuchen um eine Kollision zu finden?<br />
Kollision von h an.<br />
Geben Sie eine<br />
<strong>Lösung</strong>. Da die Anzahl der Elemente von der Bildmenge 10 ist, muss bei <strong>11</strong> verschiedenen Auswertungen von h<br />
mindestens eine Kollision auftreten. Probiert man systematisch die Werte 0, 1, . . . durch und speichert die Hashwerte,<br />
so tritt erstmalig bei h(3) = h(7) = 1 eine Kollision auf.<br />
P2 EC Karten PINs<br />
Angenommen, die 4 stelligen PINs für EC Karten werden unabhängig gleichverteilt gewählt. Wie viele Personen müssen<br />
sich versammeln, damit die Wahrscheinlichkeit, dass mindestens 2 von ihnen die gleiche PIN haben, mindestens 1 ist? 2<br />
<br />
<strong>Lösung</strong>. Wir wenden das Geburtstagsparadoxon an. Es ist n = 10 4 . Wir brauchen also k ≥ (1+ 1 + 8 ∗ 10 4 ∗ ln(2))/2 ≈<br />
<strong>11</strong>8, 2. Somit müssen sich <strong>11</strong>9 Personen versammeln, damit die Wahrscheinlichkeit, dass mindestens 2 von ihnen die<br />
gleiche PIN haben, mindestens 1 ist. 2<br />
P3 Hashfunktionen aus Kompressionsfunktionen<br />
(a) Wir bilden die Hashfunktion h nach dem in der Vorlesung vorgestellten Verfahren aus der Kompressionsfunktion<br />
g : {0, 1} 8 → {0, 1} 4 , g(k||x) = k ⊕ x. Bestimmen Sie den Hashwert der Nachricht<br />
m = 1010<strong>11</strong>010<strong>11</strong>.<br />
<strong>Lösung</strong>. Wir stellen zunächst fest, dass g : {0, 1} 8 → {0, 1} 4 , und somit der Parameter r = 4 ist. Um aus m<br />
einen Bitstring zu erhalten, dessen Länge von r geteilt wird, ergänzen wir m von links mit einer Null. An diesem<br />
String wird 0000 angehängt. Die Originallänge von m ist <strong>11</strong> ∈ und hat die Binärdarstellung 10<strong>11</strong>, welche wir zu<br />
100<strong>11</strong>0<strong>11</strong> ergänzen. Wir erhalten somit den Bitstring 01010<strong>11</strong>010<strong>11</strong>0000100<strong>11</strong>0<strong>11</strong>. Wir setzen nun H 0 = 0000<br />
und bestimmen die H i nacheinander:<br />
Damit ist h(m) = 1010.<br />
i H i<br />
1 0101<br />
2 00<strong>11</strong><br />
3 1000<br />
4 1000<br />
5 0001<br />
6 1010<br />
1
(b) Ist die Hashfunktion von (a) Kollisionresistenz? Begründen Sie Ihre Antwort.<br />
<strong>Lösung</strong>. Nein, eine sichere Hashfunktion muss mindestens 160 Bit lang sein und diese Hashfunktion ist nur 4 Bit<br />
lang.<br />
H1 Konstruktion von Hashfunktionen<br />
Erläutern Sie die Konstruktion einer Hashfunktion aus einer Kompressionsfunktion für r = 1.<br />
<strong>Lösung</strong>. Wir können hier z.B. eine neue Kompressionsfunktion g ′ konstruieren mit r = 2, indem wir die Kompressionsfunktion<br />
g mit r = 1 mehrfach anwenden. Angenommen die Funktion g : {0, 1} n+1 → {0, 1} n bildet Eingaben<br />
x = (x 1 . . . x n+1 ) auf Ausgaben y = (y 1 . . . y n ) ab. Wir konstruieren eine Kompressionsfunktion g ′ : {0, 1} n+2 → {0, 1} n<br />
mit g ′ (x) = g(g(x 1 . . . x n+1 )||x n+2 ). Somit können wir auf die Konstruktion für r = 2 zurückgreifen.<br />
Es bleibt zu zeigen, dass g ′ ebenfalls kollisionsresistent ist. Angenommen es gibt x, x ′ mit x ≠ x ′ sodass g ′ (x) = g ′ (x ′ )<br />
ist. Dann ist g(g(x 1 . . . x n+1 )||x n+2 ) = g(g(x ′ 1 . . . x ′ n+1 )||x ′ n+2 ). Ist x n+2 ≠ x ′ n+2<br />
, dann haben wir eine Kollision von g bei<br />
ihrer 2. Anwendung. Ist x n+2 = x ′ n+2<br />
, dann unterscheiden wir zwei Fälle:<br />
1. Ist g(x 1 . . . x n+1 ) ≠ g(x ′ 1 . . . x ′ n+1<br />
), dann haben wir eine Kollision von g bei ihrer 2. Anwendung.<br />
2. Ist g(x 1 . . . x n+1 ) = g(x ′ 1 . . . x ′ n+1<br />
), dann haben wir eine Kollision von g bei ihrer 1. Anwendung.<br />
In allen Fällen haben wir einen Widerspruch zur Kollisionsresistenz von g. Gibt es also in g ′ eine Kollision, so muss es<br />
diese Kollision ebenfalls schon in der 1. oder 2. Anwendung von g gegeben haben. Daher ist g ′ auch kollisionsresistent.<br />
2