← Übersicht
IMP 10 · Kryptologie und Rechner

RSA im Kleinen

Bei RSA gibt es zwei Schlüssel: Mit dem öffentlichen kann jeder verschlüsseln, nur der private entschlüsselt wieder. Die Sicherheit beruht darauf, dass man zwei große Primzahlen leicht multiplizieren, ihr Produkt aber kaum wieder zerlegen kann. Die kleinen Zahlen hier zeigen nur die Rechnung. Sicher sind sie nicht, ein Rechner zerlegt sie sofort.

So gehst du vor

  1. 1Wähle zwei Primzahlen und einen passenden Exponenten e.
  2. 2Rechne d selbst mit dem euklidischen Algorithmus aus und vergleiche.
  3. 3Verschlüssele eine Zahl und entschlüssele sie wieder. Verfolge die Tabelle.
  4. 4Spiele zum Schluss Angreifer: Zerlege n und finde d.

1. Schlüssel erzeugen

passt zum Beispiel:
n = p · q = 11 · 17 = 187
φ(n) = (p − 1)(q − 1) = 10 · 16 = 160
ggT(e, φ(n)) = ggT(3, 160) = 1 ✓
Öffentlicher Schlüssel
(n = 187; e = 3)
für alle sichtbar
Privater Schlüssel
(n = 187; d = 107)
bleibt geheim, wie p und q

2. d mit dem erweiterten euklidischen Algorithmus

Gesucht ist das Inverse von e modulo φ(n): eine Zahl d mit e · d ≡ 1 (mod 160).

Teilen mit Rest
160 = 53 · 3 + 1
3 = 3 · 1 + 0
Rückwärts einsetzen
1 = 1 · 160 + (−53) · 3
Also (−53) · 3 ≡ 1 (mod 160), und −53 + 160 = 107. Damit ist d = 107. Probe: 3 · 107 = 321 = 2 · 160 + 1.

3. Eine Zahl verschlüsseln und entschlüsseln

Es muss 0 ≤ m < n gelten, also höchstens 186.

Verschlüsseln: c = me mod n

Exponent 3 als Binärzahl: 11
Zifferquadrierenmal 42erreicht
11² ≡ 11 · 42 ≡ 42421 ≡ 42
142² ≡ 8181 · 42 ≡ 36423 ≡ 36

c = 423 mod 187 = 36

Entschlüsseln: m = cd mod n

Exponent 107 als Binärzahl: 1101011
Zifferquadrierenmal 36erreicht
11² ≡ 11 · 36 ≡ 36361 ≡ 36
136² ≡ 174174 · 36 ≡ 93363 ≡ 93
093² ≡ 47–366 ≡ 47
147² ≡ 152152 · 36 ≡ 493613 ≡ 49
049² ≡ 157–3626 ≡ 157
1157² ≡ 152152 · 36 ≡ 493653 ≡ 49
149² ≡ 157157 · 36 ≡ 4236107 ≡ 42

m = 36107 mod 187 = 42

Alle Rechnungen modulo 187. Jedes Zwischenergebnis wird sofort reduziert, deshalb bleiben die Zahlen klein. Zum Ausprobieren von Hand reicht ein Taschenrechner.

4. Ein Wort Buchstabe für Buchstabe

BuchstabeIMMER
m91313518
c16814014012535
zurückIMMER

Gleiche Buchstaben ergeben gleiche Geheimzahlen. Das ist wieder nur eine Ersetzung der Buchstaben, und die Häufigkeitsanalyse knackt sie. Darum verschlüsselt man in der Praxis nie einzelne Buchstaben, sondern lange Blöcke mit Zufallsanteil.

5. Der Angriff: n zerlegen

Ein Angreifer kennt n = 187, e = 3 und die Geheimzahl c = 36. Kann er n in p und q zerlegen, rechnet er φ(n) und d genauso aus wie du.

Stellen von nVersuche bis zur Wurzel aus nDauer bei einer Milliarde Versuchen je Sekunde
1010⁵0,1 Millisekunden
2010¹⁰10 Sekunden
4010²⁰etwa 3200 Jahre
617 (RSA mit 2048 Bit)etwa 10³⁰⁸unvorstellbar: Das Weltall ist erst etwa 4 · 10¹⁷ Sekunden alt

Es gibt schnellere Verfahren als Probieren. Deshalb nimmt man heute mindestens 2048 Bit. Mit den Zahlen dieser Seite darf man nie etwas wirklich verschlüsseln.

Aufträge

  1. Bestimme von Hand für p = 5, q = 11 und e = 3 die Zahlen n, φ(n) und d. Prüfe mit der Seite.
  2. Verschlüssele mit diesem Schlüssel m = 2 von Hand und entschlüssele auf der Seite.
  3. Stelle p = 5, q = 11 ein und versuche e = 5. Was geschieht und warum?
  4. Stelle das Beispiel 61 und 53 mit e = 17 ein. Zähle in der Tafel, wie viele Quadrierungen und Multiplikationen man für m17 braucht. Vergleiche mit dem Malnehmen Schritt für Schritt.
  5. Du fängst die Geheimzahl c = 2790 ab, der öffentliche Schlüssel ist (3233; 17). Bestimme die Nachricht.
  6. Das Wort IMMER ergibt in Teil 4 zwei gleiche Geheimzahlen hintereinander. Erkläre, warum ein Angreifer damit etwas anfangen kann, obwohl er d nicht kennt. Er kennt sogar den öffentlichen Schlüssel: Was kann er noch tun?

Warum klappt das? Aus e · d ≡ 1 (mod φ(n)) folgt nach dem Satz von Euler me · d ≡ m (mod n). Verschlüsseln und Entschlüsseln heben sich also auf.