03.08.2013 Aufrufe

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

Sicherheit in Rechnernetzen: - Professur Datenschutz und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

418<br />

A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; Lösungen, TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr<br />

417<br />

A. Pfitzmann: Datensicherheit <strong>und</strong> Kryptographie; Lösungen, TU Dresden, WS2000/2001, 15.10.2000, 15:52 Uhr<br />

Merke aber: 1. Wenn jemand sowohl Konzelation als auch für möglicherweise andere<br />

Nachrichten Authentikation will, sollte er zwei verschiedene Schlüsselpaare wählen. Möchte<br />

jemand den Klartext zu e<strong>in</strong>em konzelierten RSA-Block erfahren, so braucht er andernfalls nur<br />

den Schlüsselpaarbesitzer dazu zu br<strong>in</strong>gen, ihm diesen Block zu signieren. Wird vor dem<br />

Signieren auf die Nachricht e<strong>in</strong>e E<strong>in</strong>weg-Hashfunktion angewendet oder ist das umfassende<br />

kryptographische Protokoll so gebaut, daß ke<strong>in</strong>e beliebigen Nachrichten signiert werden, so<br />

braucht dieses Risiko nicht zum Tragen zu kommen. Wozu aber soll man es überhaupt<br />

e<strong>in</strong>gehen, um die Hälfte des nicht sehr großen Schlüsselgenerier- <strong>und</strong> Speicheraufwandes bei<br />

RSA e<strong>in</strong>zusparen?<br />

2. Im Beispiel wurden weder Red<strong>und</strong>anz noch Hashfunktionen verwendet; das System<br />

war also noch anfällig gegen Davida-Angriffe <strong>und</strong> sollte nicht so verwendet werden.<br />

ihrer Richtung nachrechnen <strong>und</strong> nur vergleichen, ob sich die ihm bekannte Wurzel des<br />

Baumes rε ergibt.<br />

c) Zu zeigen ist: Wenn es e<strong>in</strong>en Algorithmus gäbe, der effizient Kollisionen von Funktionen<br />

fpräf(m) f<strong>in</strong>det, gäbe es auch e<strong>in</strong>en, der Kollisionen für Paare (f0, f1) f<strong>in</strong>det.<br />

Dazu wird gezeigt, wie man aus jeder Kollision von fpräf(m) direkt e<strong>in</strong>e von (f0, f1)<br />

berechnet. Sei die gegebene Kollision m; m*, S, S* mit m ≠ m* <strong>und</strong> fpräf(m) (S) =<br />

fpräf(m*) (S*). Setze v := präf(m) <strong>und</strong> w := präf(m*).<br />

Nennen wir die Bits von v = v0v1...vk bzw. w = w0w1...wk'. Seien vi <strong>und</strong> wi die ersten<br />

Bits von l<strong>in</strong>ks, <strong>in</strong> denen sich v <strong>und</strong> w unterscheiden. Da v <strong>und</strong> w präfixfreie Codierungen<br />

unterschiedlicher Nachrichten m, m* s<strong>in</strong>d, gilt i ≤ m<strong>in</strong>{k,k'}, <strong>und</strong> natürlich gilt 0 ≤ i. Dann ist<br />

c) Unabhängig von der Wahl des Schlüsselpaares jeweils als 0 <strong>und</strong> 1. Wir lernen, daß diese<br />

Klartexte durch passende Codierung der E<strong>in</strong>gabe an RSA vermieden werden sollten.<br />

Wenn Leerzeichen (das Zeichen, das mit weitem Abstand am häufigsten als lange Folge<br />

vorkommt) nicht als 0...0 codiert werden, dürfte dies mit h<strong>in</strong>reichender Wahrsche<strong>in</strong>lichkeit<br />

automatisch der Fall se<strong>in</strong>. Man kann es auch durch die sowieso benötigte Red<strong>und</strong>anz bzw.<br />

Hashfunktion erreichen.<br />

fv(S) = fv0 ˚ fv1 ˚ ... ˚ fvi ˚ ... ˚ fvk (S) =<br />

fw0 ˚ fw1 ˚ ... ˚ fwi ˚ ... ˚ fwk' (S*) = fw(S*)<br />

Da im Kasten <strong>in</strong> beiden Zeilen gleiche Permutationen stehen (für alle j mit 0 ≤ j < i gilt vj=wj),<br />

folgt aus der Gleichheit der Bilder die Gleichheit der Urbilder. Also ist<br />

fvi ˚ ... ˚ fvk (S) = fwi ˚ ... ˚ fwk' (S*).<br />

d) Beispielsweise könnte man 100 Bits an festen Positionen <strong>in</strong> jedem RSA-Block zufällig<br />

wählen.<br />

Man braucht so viele zufällige Bits, daß e<strong>in</strong> Angreifer, der e<strong>in</strong>en Schlüsseltext S sieht <strong>und</strong><br />

e<strong>in</strong>en wahrsche<strong>in</strong>lichen Klartext m rät, wenigstens nicht durch vollständige Suche ausprobieren<br />

kann, ob tatsächlich m <strong>in</strong> S steckt. Dazu würde er selbst m mit dem öffentlichen Schlüssel<br />

c verschlüsseln, wobei er der Reihe nach die Möglichkeiten für die zufälligen Bits probiert.<br />

Bei 8 Bits bräuchte er nur 256 Versuche.<br />

Die Uhrzeit, selbst wenn sie mehr als 8 Bits enthält, ist nicht zufällig genug: Der Angreifer<br />

braucht ja nur die <strong>in</strong> Frage kommenden Uhrzeiten durchzuprobieren.<br />

Somit ist<br />

f vi (f vi+1 ˚ ... ˚ f vk (S)) = f wi (f wi+1 ˚ ... ˚ f wk' (S*))<br />

e<strong>in</strong>e Kollision von f 0 <strong>und</strong> f 1 .<br />

Die präfixfreie Codierung wird benötigt, damit sich v <strong>und</strong> w <strong>in</strong> e<strong>in</strong>er Bitposition unterscheiden,<br />

die bei beiden vorhanden ist (andernfalls gäbe es entweder vi oder wi nicht).<br />

e) Wenn die zufällig gewählten Bits zur Ausgabe des asymmetrischen Konzelationssystems<br />

gehören, ist die vorgeschlagene <strong>in</strong>determ<strong>in</strong>istische Variante von RSA nicht sicher gegen aktive<br />

Angriffe: Der aktive Angriff geht genauso wie bei determ<strong>in</strong>istischem RSA.<br />

Wenn die zufällig gewählten Bits nicht zur Ausgabe des asymmetrischen Konzelationssystems<br />

gehören, ist die Antwort schwieriger. Wie <strong>in</strong> §5.4.6.8, ausführlicher <strong>in</strong> [PfPf_90]<br />

begründet, lautet sie für obigen Vorschlag auch ne<strong>in</strong>, zum<strong>in</strong>dest wenn es die ersten oder<br />

letzten h<strong>und</strong>ert Bits s<strong>in</strong>d.<br />

3-16 RSA<br />

a) Schlüsselgenerierung: Sei p = 3, q = 11, also n = 33.<br />

Also ist φ(n) = (p-1) • (q-1) = 20.<br />

Sei c = 3; prüfe ob ggT(3, 20) = 1. (Euklidscher Algorithmus) Dies ist der Fall.<br />

Für den Entschlüsselungsexponenten muß man unterscheiden, ob man die Standardversion<br />

oder mod p <strong>und</strong> q e<strong>in</strong>zeln rechnen will:<br />

Standardversion: Gesucht d = c –1 mod φ(n), also 3 –1 mod 20. Mit dem erweiterten<br />

Euklidschen Algorithmus ergibt sich d = 7.<br />

Effizientere Variante:<br />

dp := c –1 mod p–1, also dp := 3 –1 ≡ 1 mod 2.<br />

dq := c –1 mod q–1, also dq := 3 –1 mod 10. Mit erw. Eukl. Alg.: dq = 7.<br />

Für e<strong>in</strong>e praktische Anwendung von RSA sollte man also z.B. 100 zufällig gewählte Bits mit<br />

e<strong>in</strong>em Red<strong>und</strong>anzprädikat komb<strong>in</strong>ieren. Das Nachrichtenformat könnte m* = (m, z, h(m,z))<br />

se<strong>in</strong> (die Reihenfolge ist unerheblich), wobei m die eigentliche Nachricht ist, z die Zufallsbits<br />

<strong>und</strong> h e<strong>in</strong>e E<strong>in</strong>weg-Hashfunktion. Die Verschlüsselung ist m* c .<br />

Hat h e<strong>in</strong>en Bildbereich von 160 Bit (vgl. §3.8.3), müssen also von der Brutto-RSA-<br />

Blocklänge 260 Bit abgezogen werden, um die Netto-RSA-Blocklänge zu erhalten. Bei e<strong>in</strong>er<br />

Moduluslänge von 1000 Bit bleiben 740 Bit, also 74% übrig.<br />

Verschlüsselung: Sei die Klartextnachricht m = 31. Dann ist der zugehörige Schlüsseltext S =<br />

313 ≡ (–2) 3 ≡ –8 ≡ 25 mod 33.<br />

Entschlüsselung: Standardversion: Sd = 257 ≡ (–8) 7 ≡ 643 • (–8) ≡ (–2) 3 • (–8) ≡ 64 ≡ 31 mod<br />

33, was tatsächlich der Klartext ist.<br />

Effizientere Variante: Mod 3: S dp ≡ 11 d<br />

= 1. Mod 11: S q ≡ 37 = 93 • 3 ≡ (–2) 3 • 3 ≡ 3•3 =<br />

9. Mit dem CRA (wie üblich) ergibt sich wieder m = 31.<br />

f) Zufallsbits können entweder <strong>in</strong> der zu signierenden Nachricht untergebracht werden oder im<br />

mit RSA zu exponenzierenden Block (oder an beiden Stellen).<br />

Werden Zufallsbits <strong>in</strong> der zu signierenden Nachricht untergebracht, dann werden sie mit<br />

gehasht. Für die <strong>Sicherheit</strong> der digitalen Signatur wichtig ist, daß die Hashfunktion auch dann<br />

noch kollisionsresistent ist, wenn die Zufallsbits beliebig gewählt werden können. Bei e<strong>in</strong>er<br />

b) Um uns das Leben bequem zu machen, können wir das Beispiel aus a) abwandeln: Die<br />

Schlüsselgenerierung sei identisch (nur daß c jetzt Testschlüssel, d Signierschlüssel heißt).<br />

Wenn die Klartextnachricht zufällig m = 25 ist, so ist die Signatur die 3-te Wurzel daraus,<br />

was wie oben Sig = 31 ergibt, <strong>und</strong> beim Testen ergibt sich Sig3 = 313 = 25.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!