Sicherheit in Rechnernetzen: - Professur Datenschutz und ...
Sicherheit in Rechnernetzen: - Professur Datenschutz und ...
Sicherheit in Rechnernetzen: - Professur Datenschutz und ...
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.