Kryptologie/Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens

Aus Wikiversity


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:

  1. Ü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
  2. 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

Verschlüsselungsalgorithmus

Nun beschreiben wir den eigentlichen Verschlüsselungsalgorithmus. Der Algorithmus besteht aus einem einzigen Schritt:

  1. Berechnung des Geheimtextes aus
    • [4][5]
      • In der Praxis muss jeder Block eines Klartextes einzeln verschlüsselt werden und es gilt für alle [2].

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

Tabelle 1: Zuordnung der Zeichenkodierung (Ausschnitt aus der ASCII-Tabelle[6])
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.

  1. Mathematisierung des Klartextes
    1. Ü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.
    2. Aufteilung des Klartextes in Blöcke
      • Jeder Block muss kleiner sein und wir erhalten somit Blöcke
  2. Verschlüsselungsalgorithmus
    1. 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 .

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 .


Zu :

Wir ignorieren die Bedingung und verschlüsseln den Klartext:

.


Zu :

Wir ignorieren die Bedingung und verschlüsseln den Klartext:

.


Die Verschlüsselung von bzw. liefert bzw. .

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

Kursübersicht
Ü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

  1. 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.
  2. 2,0 2,1 2,2 Coutinho, S. C. (1999). The mathematics of ciphers: Number theory and RSA cryptography. A K Peters, S. 163.
  3. https://de.wikipedia.org/w/index.php?title=Spezial:Zitierhilfe&page=Minuszeichen&id=194589971
  4. 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)
  5. 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.
  6. 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)
  7. 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)