Das RSA - Verfahren
RSA - Steht für Rivest, Shamir und Adleman
Das RSA - Verfahren ist ein öffentliches
Verschlüsselungsverfahren. Es werden wichtige Algorithmen der Linearen Algebra angewandt
um Nachrichten zu Ver- und Entschlüsseln.
- Euklidischer Algorithmus (Bildung von ggT)
- Erweiterter Euklidischer Algorithmus (Ausrechnen des geheimen
Schlüssels über das Inverse des Öffentlichen Schlüssels)
- Modulo Rechnung
- Modulo Zerlegung (damit die Zahlen nicht zu groß werden)
- Primfaktorzerlegung
Man unterteilt das RSA - Verfahren in verschiedene Schritte,
was nun auch den Aufbau dieser Erläuterung bestimmt.
Bob wird nun schrittweise eine Nachricht verschlüssln und an
Alice schicken, welche diese Nachricht entschlüsseln wird.
Dadurch werde ich das Verfahren Schritt für Schritt erklären.
Schritt 1:
Als erstes überlegt sich Bob, was er denn verschlüsseln möchte,
und nimmt als Beispiel das Wort Informatik. Beim
RSA - Verfahren wird nie ein gesamtes Wort komplett
verschlüsselt, sondern immer nur die einzelnen
Buchstaben nacheinander.
Grundsätzlich wird jedem Buchstaben ein Zahlenwert
zugewiesen. Bob legt sich nun folgendes Alphabet
zurecht, welches auch für Alice gelten wird, wie wir
später noch sehen werden.
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
Nun ist die Rechenformel für die RSA Verschlüsselung
wichtig:
C = Pk mod n
Jetzt weiß Bob, was er noch für die Berechnung
benötigt, da er anhand der Gleichung folgendes
in erfahrung gebracht hat:
n = Modul
P = Klartext
C = Verschlüsselter Text
k = Öffentlicher Schlüssel
Der Modul setzt sich immer aus dem Produkt zweier
großer Primzahlen zusammen, hier wählt Bob 31 * 17 und erhält
einen Modul von 527. Zugleich muß er noch ein φ(n)
ausrechnen, welches er für die Bestimmung des Schlüssels braucht.
φ(n) berechnet Bob, indem er die beiden Primfaktoren um 1
mindert und das Produkt bildet, also 16 * 30 = 480.
Nachdem er jetzt das φ(n) berechent hat, sucht er
sich eine Zahl, die Teilerfremd zum φ(n) ist,
also eine Zahl, die mit φ(n) den größten geimeinsamen
Teiler 1 hat. Nach möglichkeit sollte diese Zahl
keine Primzahl sein, aber manchmal gibt es keine andere
Zahl die man verwenden kann. Bob entscheidet sich für die 13
und erhält nun als Schlüsselpaar (527, 13).
Er verschlüsselt jetzt den ersten Buchstaben
von Informatik, das I, welches im Alphabet als 9
steht.
C = 9527 mod 13 = 297
Schritt 2:
Jetzt hat Bob die verschlüsselte Nachricht und
das öffentliche Schlüsselpaar (527, 13) an
Alice geschickt.
Alice muss für sich jetzt den Privaten Schlüssel
ausrechen, damit sie die Nachricht entschlüsseln
kann.
Zunächst muss Alice die 527, also den Modul,
in Primfaktoren zerlegen. Da sie weiß, dass beim
RSA - Verfahren nur 2 Primfaktoren als Ergebnis
herauskommen dürfen, diviert sie die 527 zuerst
durch die kleinste Primzahl und prüft, ob das
Ergebnis eine ganze Zahl ist. Wenn nicht,
dividiert sie 527 durch die nächst höhere Primzahl
bis dann irgendwann ein ganzzahliges Ergebnis
rauskommt. Dieses Ergebnis ist dann gleichzeitig
auch der 2. Primfaktor. Bei 527 lautet also die
Faktoren 17 und 31. Nun wird φ(n) ausgerechnet,
indem man einfach nach der Formel:
(p - 1) * (q - 1) = φ(n)
Also: (17 - 1) * (31 - 1) = 480
Da jetzt φ(n) und der öffentliche
Schlüssel bekannt ist, können wir jetzt über
den erweiterten Euklidischen Algorithmus den
privaten ("geheimen") Schlüssel ausrechen.
480 = 36 * 13 + 12
13 = 1 * 12 + 1
1 = 13 - 1 * 12
1 = 13 - 1 * ( 480 - 36 * 13)
Die Klammer wird jetzt aufgelöst, und
man sieht schon, das die 36 * 13 + 13
gleich 37 * 13 ist.
Jetzt hat Alice den Schlüssel, nämlich die
37, und kann nun entschlüsseln, nach der
Formel:
P = Cg mod n
g = 37