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:

  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. a b c 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)