33.12 RSA |
|||||||
public key - privat key |
Alle Verschlüsselungen haben
gemeinsam, dass der der den Klartext M chiffriert, eine Funktion Ek
mit dem Schlüssel K benutzt. Den so entstandenen Geheimtext kann man
entschlüsseln, wenn man den inverse Funktion Dk = Ek-1
kennt.
Allgemein gilt: Die Cäsarverschlüsselung (z.B. Verschieben um 3) ist durch die mathematische Operation Ek(m) = c = m+k gegeben (wir gehen davon aus, dass die Zeichen m z.B. im ASCII Code dargestellt sind, so dass numerische Operationen auf diese Zeichen anwendbar sind). Die Entschlüsselung wird dann durch die Funktion Dk(c) = m = c-k beschrieben. Wir sehen, zum Dechiffrieren notwendige Funktion Dk ist sehr leicht aus aus der Verschlüsselungsfunktion Ek zu berechnen. Der Schlüssel wird also zwischen dem Absender und dem Empfänger ausgemacht und kein Dritter darf davon wissen (wir sehen einmal davon ab, dass eine Lauscher z.B. mit Häufigkeitsanalysen etc. sehr schnell die geheime Botschaft entschlüsseln kann). Um den nachfolgenden Text leichter verstehen zu können, wollen wir im weiteren Text die Person, die eine geheime Botschaft empfängt und entschlüsseln soll, wie in der Kryptologie üblich, Bob nennen. Alice heißt die Person, die einen Klartext zu einer geheimen Botschaft verschlüsselt und an Bob schickt. Personen, die den Austausch der geheimen Botschaft zwischen Alice und Bob belauscht und zu entschlüsseln versucht, nennen wir Eva. Ein raffinierter Trick verändert
die Sachlage grundlegend: Er besteht nun darin, dass Bob nach einer
Entschlüsselungsfunktion Dk sucht, die es erlaubt, sehr leicht
Ek zu bestimmen, aber umgekehrt es jemanden sehr schwer ist, ja
so gut wie unmöglich macht, Dk aus Ek zu berechnen.
|
||||||
Rivest Shamir Adleman |
Wir beschreiben zunächst einmal das Verfahren, das Ronald Rivest, Adi Shamir und Len Adleman 1978 entwickelt haben und das nach den Initialen der drei Entwickler als RSA bezeichnet wird. | ||||||
Der RSA Ver-
schlüsselungs- algorithmus
|
Bob wählt zwei Primzahlen
p = 47 und
q = 59 und bestimmt deren
Produkt N = 2773. Aus
diesen Zahlen werden zwei Schlüssel
e = 17 (encryption key) und
d = 157 (decrytion key)
bestimmt. Wie das geht, wollen wir später beschreiben. Die beiden Zahlen N
und e gibt er allen, die ihm geheime Botschaften verschicken wollen,
bekannt. N und e sind der sog. public key. Die Zahl d , die Bob nicht
bekannt gibt ist dann der sog. privat key. Wenn Alice einen Text, bestehend aus Wörtern verschlüsseln wollen, übersetz sie diese Wörter in eine Folge von Zahlen (z.B. entsprechend seinem ASCII-Code und fassen den gesamten Text zu 4er-Blöcken zusammen. So hat sie z.B. den Klartext K: 0920 1900 0112 1200 ... Sie chiffriert nun den ersten 4er Block, nämlich m = 0920, und benutz dabei : c= me mod N In unserem konkreten Fall ergibt sich somit der 948 = 92017 mod 2773. Bob erhält diese Nachricht und entschlüsselt sie mit: m = cd mod N Er bekommt damit wieder konkret 948157 mod 2773 = 920 (oder als 4er Block 0920)
Wenden wir uns der Beantwortung der ersten Frage zu. Die Tabelle zeigt nach welchem Schema Bob den public und den privat key berechnet.
|
||||||
N, e und d Beispiel mit p = 3 und q = 5 |
|
||||||
Dass d so einfach zu berechnen ist,
dass also die Division (k.Z+1)/e immer ohne Rest geht,
garantiert der sog. Satz von Euler1. Verschlüsselung: |
|||||||
|
|||||||
Sicherheit |
Kommen wir zur Beantwortung der zweiten Frage: Wir geben von den beiden Primzahlen 5 und 7 vor. Aus ihnen bestimmt Bob nach dem oben beschrieben Verfahren N und e und d. N und e gibt er an Alice weiter. Alice kennt also N = 35 und e = 3. Auch Eva kennt diese Zahlen und das Verfahren. Wenn nun Eva die geheime Botschaft von Alice an Bob abfängt oder belauscht, benötigt sie, wie unsere Formeln zeigen, neben N auch die Zahl d. Um d zu bestimmen benötigt sie aber den Wert von Z. Z wiederum kennt sie dann, wenn sie die beiden Primzahlen kennt, deren Produkt N ist. Dies scheint auf den ersten Blick einfach. Ist nämlich N = 15, hat man schnell p und q zu 3 und 5 berechnet oder erraten. Ganz anders ist die Situation, wenn Bob größere Primzahlen gewählt hat, z.B. p = 31991 und q = 9973. Ihr Produkt ist N = 319046243. Aus ihr die Primzahlen p und q zu bestimmen ist schon aufwändiger. Leicht sieht man ein, dass der Aufwand p und q aus N zu bestimmen immer größer wird, je größer die Primzahlen sind. Sind p und q z.B. 100-stellig, so brauchen selbst schnelle Rechner Millionen von Jahren um die Zerlegung zu schaffen und man verwendet in der Realität wesentlich größere. So kann man verstehen, dass die Wirtschaft ein großes Interesse daran hat, dass Mathematiker immer größere Primzahlen finden, was nicht einfach ist.
|
||||||
Beispiel Download: |
Ein Java-Programm RSAEncrypt.java
liest eine vierstellige Zahl (als String ein) und verschlüsselt diese mit
dem public key : N = 15 und E = 3. Der so erhaltene Code soll durch ein Programm RSADecrypt.java aus der Sicht von Bob entschlüsselt werden, d.h. D = 11 ist bekannt.
|
||||||
Eine genauere Betrachtung des RSA Verfahrens findet man in dem Buch. Kryptologie von Albrecht Beutelspacher ISBN 3-528-58990-6. Beutelspacher geht in diesem Buch auch auf den Beweis des genannten Satzes von Euler ein. | |||||||
zu | 33.13 Übungen | ||||||
zur Startseite | www.pohlig.de (C) MPohlig 2004 |