Kryptologie/Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens
Einleitung
Nachdem wir den privaten und öffentlichen Schlüssel generiert und den öffentlichen Schlüssel veröffentlich haben, können nun Nachrichten an uns gesendet und diese von uns entschlüsselt werden. Zunächst muss eine solche Nachricht jedoch mit unserem öffentlichen Schlüssel verschlüsselt werden[1]. In diesem Abschnitt beschäftigen wir uns daher mit dem Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens und zeigen, wie man mit dem RSA-Verfahren Nachrichten, nur für uns lesbar, verschlüsseln kann.
Anforderungen an den Klartext
Bevor wir den Verschlüsselungsalgorithmus anwenden können, muss der Klartext in einem numerischen Alphabet vorliegen. Dies können wir, wenn nicht bereits der Fall, durch die Kodierung des Klartextes in ein numerisches Alphabet realisieren.
Darüber hinaus muss ein Standardrepräsentant von sein. Andernfalls würden Informationen bei der Verschlüsselung und Entschlüsselung verloren gehen (siehe Lernaufgabe Verschlüsselung und Lernaufgabe Entschlüsselung). Wir können jedoch einen Klartext, der kein Standardrepräsentant von ist, in kleiner Blöcke mit fester Reihenfolge aufteilen, sodass jeder dieser Blöcke Standardrepräsentant von ist[2].
Man muss also manchen Fällen bis zu zwei Schritte ausführen, bevor man den Klartext verschlüsseln kann:
- Übertragung des Klartextes in ein numerisches Alphabet
- Transformiere den zu verschlüsselnden Klartext (Menge der möglichen Klartexte) in das gewünschten numerisches Alphabet mittels Zeichenkodierung
- Aufteilung des Klartextes in Blöcke
- Die Blöcke werden in diesem Kurs mit voneinander getrennt dargestellt und es gilt
- Es handelt sich bei dem Zeichen in diesem Fall nicht um den mathematischen Operator des Minuszeichens[3] der Subtraktion
- Die Blöcke müssen kleiner sein, da der Block sonst kein Standardrepräsentant der Restklasse ist und bei der Anwendung des Entschlüsselungsalgorithmus nur Standardrepräsentanten ausgegeben werden können. So würde also anstelle des ursprünglichen Klartextes ein vermeintlicher Klartext entschlüsselt werden
- Aus dem selben Grund darf kein Block mit beginnen. Es würde nämlich zu einer Leserasterverschiebung kommen, sodass die Information " " verloren gehen würde, da für den Ver- und Entschlüsselungsalgorithmus
- Die Blöcke werden in diesem Kurs mit voneinander getrennt dargestellt und es gilt
Verschlüsselungsalgorithmus
Nun beschreiben wir den eigentlichen Verschlüsselungsalgorithmus. Der Algorithmus besteht aus einem einzigen Schritt:
- Berechnung des Geheimtextes aus
Achtung: Die Blöcke des erzeugten Geheimtextes dürfen nicht aneinander gefügt werden, ohne diese wieder fehlerfrei trennen zu können. Andernfalls kommt es wahrscheinlich zu falschen Blöcken bei der Entschlüsselung[2].
Beispiel
Zeichen
aus |
Zugeordnetes
Zeichen aus |
Zeichen
aus |
Zugeordnetes
Zeichen aus
|
0 | NUL (Leerzeichen[7]) | 77 | M |
46 | . | 78 | N |
65 | A | 79 | O |
66 | B | 80 | P |
67 | C | 81 | Q |
68 | D | 82 | R |
69 | E | 83 | S |
70 | F | 84 | T |
71 | G | 85 | U |
72 | H | 86 | V |
73 | I | 87 | W |
74 | J | 88 | X |
75 | K | 89 | Y |
76 | L | 90 | Z |
Wir wollen den Klartext HALLO WELT. mit dem öffentlichen Schlüssel des Empfängers verschlüsseln. Da wir auch die Entschlüsselung in einer späteren Lerneinheit zeigen wollen, sind wir nicht nur Sender, sondern auch Empfänger in diesem Beispiel.
- Mathematisierung des Klartextes
- Übertragung des Klartextes in ein numerisches Alphabet
- Wir definieren zu unserem Klartext HALLO WELT. das zugehörige Alphabet
- Als numerisches Alphabet wählen wir einen Ausschnitt aus ASCII-Zeichenkodierung und definieren das dazugehörige Alphabet
- Wir definieren unseren Zeichenkodierung so, dass die Zeichen von wie in Tabelle 1 beschrieben auf abbilden (siehe Tabelle 1)
- Wir erhalten den transformierten Klartext , da , , etc.
- Aufteilung des Klartextes in Blöcke
- Jeder Block muss kleiner sein und wir erhalten somit Blöcke
- Jeder Block muss kleiner sein und wir erhalten somit Blöcke
- Übertragung des Klartextes in ein numerisches Alphabet
- Verschlüsselungsalgorithmus
- Berechnung des Geheimtextes
- Wir setzen den Verschlüsselungsexponenten und den RSA-Modul des öffentlichen Schlüssels aus der Aufgabe zum Schlüsselerzeugungsalgorithmus in den Verschlüsselungsalgorithmus ein
- Jeder Block wird einzeln mit dem Verschlüsselungsalgorithmus verschlüsselt
- , , , ,
- Man erhält die verschlüsselten Blöcke und den Geheimtext .
- Berechnung des Geheimtextes
Lernaufgabe
Aufgabe 1
Berechnen Sie die Verschlüsselung der Klartexte und mit dem öffentlichen Schlüsse aus dem Beispiel und ignorieren Sie dabei die Bedingung . Begründen Sie, warum ein Klartext nicht mit beginnen darf.
Lösung |
---|
Seien und .
Wir ignorieren die Bedingung und verschlüsseln den Klartext: .
Wir ignorieren die Bedingung und verschlüsseln den Klartext: .
Es gilt , aber . Dies lässt darauf schließen, dass eine Information einer der beiden Klartexte verloren gegangen ist. Da bei Rechenoperationen in , kann man annehmen, dass im Verschlüsselungsalgorithmus gilt. |
Aufgabe 2
Berechnen Sie die Verschlüsselung des Klartextes "ASTERIX" aus dem Beispiel zum Caesar-Algorithmus oder einen eigenen Klartext mit dem RSA-Algorithmus und der Zeichenkodierung aus Tabelle 1. Sie können die Schlüsselpaare aus dem Beispiel verwenden oder die aus der Lernaufgabe zur Schlüsselerzeugung, falls Sie diese bearbeitet haben.
Lösung |
---|
Seien und .
Wir transformieren den Klartext . Wir erhalten folgende Blöcke kleiner : . Nun verschlüsseln wir die Blöcke einzeln mit dem Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahren: mit , , , , , , und . Der Geheimtext lautet also: . |
Lernempfehlung
Übergeordnete Lerneinheit | ||
---|---|---|
6: RSA-Kryptosystem | ||
Vorherige Lerneinheit | Aktuelle Lerneinheit | Empfohlene Lerneinheit |
7.1: Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens | 7.2: Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens | 7.3: Entschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens |
Literatur
- ↑ Rivest, R. L., Shamir, A., & Adleman, L. (1978). A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2) (S. 120–126). S. 120.
- ↑ a b c Coutinho, S. C. (1999). The mathematics of ciphers: Number theory and RSA cryptography. A K Peters, S. 163.
- ↑ https://de.wikipedia.org/w/index.php?title=Spezial:Zitierhilfe&page=Minuszeichen&id=194589971
- ↑ Seite „RSA-Kryptosystem“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 15. Dezember 2019, 19:39 UTC. URL: https://de.wikipedia.org/w/index.php?title=RSA-Kryptosystem&oldid=194933568 (Abgerufen: 10. Januar 2020, 10:40 UTC; Formulierung verändert)
- ↑ Rivest, R. L., Shamir, A., & Adleman, L. (1978). A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2) (S. 120–126). S. 122.
- ↑ Seite „American Standard Code for Information Interchange“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 23. Dezember 2019, 09:20 UTC. URL: https://de.wikipedia.org/w/index.php?title=American_Standard_Code_for_Information_Interchange&oldid=195157263 (Abgerufen: 9. Januar 2020, 11:59 UTC)
- ↑ Seite „Leerzeichen“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 25. November 2019, 20:03 UTC. URL: https://de.wikipedia.org/w/index.php?title=Leerzeichen&oldid=194374775 (Abgerufen: 16. Februar 2020, 22:20 UTC)