Kryptologie/Entschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens

Aus testwiki
Zur Navigation springen Zur Suche springen


Einleitung

Anforderungen an den Geheimtext
Anforderungen an den Geheimtext
  1. Der Geheimtext muss in einem numerischen Alphabet vorliegen
  2. Ist der Geheimtext kein Standardrepräsentant des RSA-Moduls, muss dieser in Standardrepräsentanten des RSA-Moduls mit fester Reihenfolge aufgeteilt werden
  3. Der Geheimtext darf nicht mit 0 beginnen.[1]

Wir wollen nun zeigen, wie man eine mit dem eigenen öffentlichen Schlüssel verschlüsselte Nachricht mit dem privaten Schlüssel und dem Entschlüsselungsalgorithmus entschlüsseln kann[2]. Die Anforderungen an den Geheimtext entsprechen den Anforderungen an den Klartext[1].

Entschlüsselungsalgorithmus

Der eigentlichen Entschlüsselungsalgorithmus besteht aus einem einzigen Schritt:

  1. Berechnung des Klartextes m/N aus c/N ,
    • mcdmodN[3][4] mit m=m1m2ml und c=c1c2cl,
      • In der Praxis muss jeder Block eines Geheimtextes c/N einzeln verschlüsselt werden und es gilt für alle i{1,2,,l} micidmodN[1].

Beispiel

Tabelle 1: Ausschnitt aus der ASCII-Tabelle[5]
Zeichen

aus Σ2

Zugeordnetes

Zeichen aus Σ1

Zeichen

aus Σ2

Zugeordnetes

Zeichen aus Σ1

0 NUL (Leerzeichen[6]) 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

Im Beispiel des RSA-Verschlüsselungsverfahrens wurde ein Geheimtext mit dem öffentlichen Schlüssel (23,143) erzeugt. Dieser soll nun mit dem zugehörigen privaten Schlüssel (47,143) entschlüsselt werden.

Sei also c=106653232212912049322441

  1. Entschlüsselungsalgorithmus
    • Wir wenden also auf jedes ci mit i{1,2,,l} den Entschlüsselungsalgorithmus mici47mod143 an:
      • 1064772mod143m1=72,
      • 654765mod143m2=65,
      • 764732mod143m3=32
      • 414746mod143m11=46
    • Reiht man die Blöcke aneinander, so ergibt sich: m=726576767908769768446
    • Bemerkung: Wie bereits auf der Seite zum Verschlüsselungsalgorithmus erklärt, ist es wichtig, dass die Blöcke getrennt bleiben und ihre Reihenfolge eindeutig ist, andernfalls geht der Klartext verloren[1]
  2. Umkehrung der Kodierung des Klartextes
    • Wir nutzen die Umkehrfunktion der Zeichenkodierung aus Tabelle 1 f1:Σ2Σ1
    • f1(72)=H, f1(65)=A, f1(76)=L, f1(76)=L, f1(79)=O, f1(0)=NUL, f1(87)=W, f1(69)=E, f1(76)=L und f1(84)=T
      • Aufgrund des sehr kleinen N in unserem Beispiel, muss man bei der Zeichenkodierung darauf achten, an welcher Stelle NUL kodiert wird. Eigentlich würde man NUL00 wählen, aber in unserem Beispiel würde dann entweder ein Block entstehen, der mit 0 beginnt oder den Wert 900 annimmt. Dies widerspricht unserer Voraussetzung, dass Blöcke nicht mit 0 beginnen dürfen und kleiner als N sein müssen[1].

Lernaufgabe

Aufgabe 1

Berechnen Sie die Entschlüsselung des Geheimtextes c=20 mit dem privaten Schlüssel (47,143). Der Empfänger verschlüsselte c=2030123mod143 und ignorierte die Voraussetzung m/143. Begründen Sie anschließend anhand des Beispiels, warum bei der Verschlüsselung der Lernaufgabe 1 zur Verschlüsselung mit dem RSA-Verschlüsselungsverfahren die Notwendigkeit besteht den Klartext in Blöcke zu unterteilen.

Lösung
Seien d=47 und N=143.

Wir entschlüsseln den Geheimtext c=20 mit dem Entschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens:

m=152047mod143 .

m=15 entspricht nicht dem ursprünglichen Klartext m=301. Dies liegt an der verletzen Voraussetzung m/143.

Es gilt nämlich 301=2143+15, d.h. m=15301mod143, wobei 15 der Standardrepräsentant der Restklasse [15]143 ist und 301[15]143.

Da der Verschlüsselungsalgorithmus jedes Element der Restklasse in den Standardrepräsentanten umwandelt, gehen alle Information verloren bis auf, dass der ursprüngliche Klartext m[15]143 ist.

Aufgabe 2

Berechnen Sie die Entschlüsselung des Geheimtextes c=c1c2c7=6573244911457121 mit dem RSA-Algorithmus und wenden Sie die Zeichenkodierung aus Tabelle 1 an. Das zugehörige Zahlenpaar zur Entschlüsselung (d,N) ist (47,143).

Lösung
Seien d=47 und N=143.

Wir entschlüsseln den Geheimtext c=c1c2c7=6573244911457121 mit dem Entschlüsselungsalgorithmus mici47mod143 mit i{1,2,,7} des RSA-Algorithmus:

m1=656547mod143,

m2=837347mod143,

m3=842447mod143,

m4=694947mod143,

m5=8211447mod143,

m6=735747mod143,

und

m7=8812147mod143.

Der Klartext lautet also: m=m1m2m7=65838469827388=65838469827388.

Wir wenden die Zeichenkodierung aus Tabelle 1 an:

f1(65)=A, f1(83)=S, f1(84)=T, f1(69)=E, f1(82)=R, f1(73)=I und f1(88)=X.


Der Klartext lautet also m=65838469827388=ASTERIX.

Lernempfehlung

Kursübersicht
Übergeordnete Lerneinheit
6: RSA-Kryptosystem
Vorherige Lerneinheit Aktuelle Lerneinheit Empfohlene Lerneinheit
7.2: Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens 7.3: Entschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens 8: Korrektheit des RSA-Verschlüsselungsverfahrens
Grundlagen der empfohlenen Lerneinheit
8.1: Satz von Euler 8.2: Chinesischer Restsatz

Literatur

  1. 1,0 1,1 1,2 1,3 1,4 Coutinho, S. C. (1999). The mathematics of ciphers: Number theory and RSA cryptography. A K Peters, S. 163f.
  2. 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.
  3. 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)
  4. 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.
  5. 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)
  6. 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)