Kryptologie/RSA-Signatur

Aus Wikiversity


Einleitung

Neben der Ver- und Entschlüsselung von Nachrichten, kann der RSA-Algorithmus auch genutzt werden, um Nachrichten zu "signieren". Dies kann man sich wie die handschriftliche Unterschrift auf einem Dokument vorstellen[1]. Eine solche Signatur verfolgt zwei Sicherheitsziele: Authentizität und Verbindlichkeit[1].

Bei der RSA-Signatur wird ein privater Schlüssel mittels eines Signaturalgorithmus auf einen Klartext angewendet und die signierte Nachricht kann mit dem öffentlichen Schlüssel

Authentizität, Verbindlichkeit und Vertraulichkeit
Authentizität
Der Empfänger einer Nachricht kann sich davon überzeugen, dass

die erhaltene Nachricht von einem eindeutigen Sender stammt[2].

Verbindlichkeit
Der Empfänger der Nachricht kann Dritten gegenüber nachweisen,

dass die Nachricht von einem bestimmten Sender stammt[3].

Vertraulichkeit
Höchstens Sender und Empfänger können den Inhalt des

Klartextes einer übermittelten Nachricht verstehen[1].

des Senders mittels eines Verifikationsalgorithmus verifiziert werden und gibt den Klartext aus. Die signierte Nachricht kann also von Dritten, die die Nachricht abfangen, gelesen werden, da der Verifikationsschlüssel öffentlich ist[4]. Um Vertraulichkeit zu gewährleisten, muss man daher ein sicheres Verschlüsselungsverfahren, wie das RSA-Verschlüsselungsverfahren, auf die bereits signierte Nachricht angewendet werden[4].

RSA-Signaturverfahren

Analog zu den drei Algorithmen des RSA-Algorithmus zur Verschlüsselung von Klartexten, besteht das digitales RSA-Signaturverfahren aus diesen drei Algorithmen. Nur die Notation und die Reihenfolge der Algorithmen müssen wir ändern[4].

RSA-Algorithmus und Erweiterter euklidischer Algorithmus
RSA-Verschlüsselungsalgorithmus
Seien und der öffentliche Schlüssel und der private Schlüssel
  1. Schlüsselerzeugungsalgorithmus: identisch[5]
  2. Verschlüsselungsalgorithmus:
  3. Entschlüsselungsalgorithmus: [6][4]


Erweiterte euklidische Algorithmus
Der erweiterte euklidische Algorithmus wird auf zwei Zahlen angewandt und besteht aus zwei Teilen:
  1. Berechnung des (auch als euklidischer Algorithmus bekannt[7]),
  2. Berechnung zweier ganzer Zahlen und , welche die Gleichung erfüllen[8].
  1. Schlüsselerzeugungsalgorithmus,
    • Wir wählen prim und bestimme und
    • Wir wählen ein den Verifikationsexponenten mit mit und erhalten den öffentlichen Verifikationsschlüssel
    • Wir berechnen den privaten Signaturschlüssel mit dem Signierexponenten , indem wir das multiplikative Inverse von bezüglich mit dem erweiterten euklidischen Algorithmus berechnen
  2. Signieralgorithmus,
    • Wir signieren einen kodierten Klartext , indem wir diesen mit dem privaten Signierexponenten potenzieren und die signierte Botschaft erhalten,
  3. Verifikationsalgorithmus,
    • Die signierte Nachricht können wir mit dem Verifikationsalgorithmus erneut in den Klartext umwandeln und die Authentizität und Verbindlichkeit verifizieren
      • [4]

Bemerkung: Es gelten die identischen Anforderungen an den Klartext und die signierte Botschaft, wie beim RSA-Verschlüsselungsverfahren. Im Gegensatz zur RSA-Verschlüsselung signieren (bzw. "verschlüsseln") wir bei der RSA-Signatur der Klartext mit dem privaten, statt dem öffentlichen Schlüssel. Mit dem dem öffentlichen Schlüssel verifizierten(bzw. "entschlüsseln") wir eine signierte Nachricht[4].

Authentizität und Verbindlichkeit garantiert das Verfahren, da der Empfänger nach der Verifikation über das Nachrichten-Signatur-Paar verfügt. Dieses Nachrichten-Signatur-Paar besitzt zwei wichtige Eigenschaften:

  1. Der Klartext muss von einem bestimmten Sender stammen, da nur dieser Sender über den Signierexponenten verfügt, der generiert und nur dessen Verifikationsschlüssel die signierte Nachricht verifiziert. Das Verfahren ist authentisch.
  2. Der Empfänger kann Dritten gegenüber beweisen, dass sich die signierte Nachricht mit dem öffentlichen Verifikationsschlüssel des bestimmten Senders verifizieren lässt. Das Verfahren ist verbindlich[3].

Korrektheit der RSA-Signatur

Die vertauschte Verwendung der Schlüssel im Vergleich von RSA-Signatur- und RSA-Verschlüsselungsverfahren spielt wegen nach Beweis der Korrektheit des RSA-Verschlüsselungsverfahrens keine Rolle für den Beweis der Korrektheit des RSA-Verschlüsselungsverfahrens und kann somit auf die Korrektheit des RSA-Signaturverfahrens angewandt werden. Der folgende Beweis unterscheidet sich also nur durch die Notation vom Beweis der Korrektheit des RSA-Verschlüsselungsverfahrens.

Beweis Korrektheit der RSA-Signatur
Voraussetzung

Seien prim, , und

Zu zeigen

RSA-Algorithmus entschlüsselt korrekt, d.h. für alle gilt

Beweis

Laut Voraussetzung gilt:

, nach Voraussetzung

, wegen der Multiplikativität der -Funktion

, wegen Satz 2 Eigenschaft der -Funktion bei Primzahlen

mit und wegen der Definition der Kongruenz und Teilbarkeit.


Wir unterscheiden zunächst zwei Fälle:

und .


Fall 1: Sei :

, nach mit

, da nach dem Satz von Euler gilt

.

Wir müssen nun also nur noch den zweitem Fall betrachten.


Fall 2: Sei .

Wegen gilt dann also entweder oder .

Hier ist der Satz von Euler nicht anwendbar, wegen .

Wenn wir jedoch trotzdem zeigen, dass

und , dann können wir (wegen ) den chinesischen Restsatz anwenden und erhalten:

, wegen .


Wir zeigen dies nun für den Fall , dass gilt:

und .

Sei .

Es gilt dann nach Definition der größten gemeinsamen Teilers bzw. nach Definition der Teilbarkeit mit .

Wir zeigen zunächst für

Dann gilt nach Definition der Kongruenz aber auch .

Nun betrachten wir .

, da ein Vielfaches von ist.

Also gilt und insgesamt

.

Nun bleibt noch zu zeigen, dass für .

Da , kann man den Satz von Euler anwenden.

, nach : (in umgestellter Form)

, nach dem Satz von Euler

.

Also gilt für : .

Nun können wir den chinesischen Restsatz anwenden:

, wegen .

Wir haben also nun gezeigt, dass das RSA-Verschlüsseungsverfahren für korrekt ist. Dies können wir für analog zeigen, indem wir in der Notation und vertauschen. Sie können dies freiwillig eigenständig durchführen.

Damit haben wir die Korrektheit des RSA-Verschlüsseungsverfahrens für alle Fälle, nämlich und , gezeigt■[9][5]

Beispiel

Wir wollen den Klartext HALLO WELT. signieren.

Berechnung des privaten Signierschlüssels
Sei und .

Berechnung

Es gilt .

Berechnung der Faktoren und mit

, da

, da

, da

, da

und

Der private Signierschlüssel ist


Wir übernehmen die Kodierung des Klartextes aus dem Beispiel zur Verschlüsselung mit dem RSA-Verschlüsselungsverfahren.

Sei also [10].

  1. Schlüsselerzeugungsalgorithmus
    • Der Schlüsselerzeugungsalgorithmus wurde bereits im Beispiel zur Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens besprochen und wir übernehmen die dort gewählten und Primzahlen und erhalten:
      • und
      • mit dem öffentlichen Verifikationsschlüssel
      • mit dem privaten Signierschlüssel [10]
  2. Signieralgorithmus
    • Wir setzen den Signierexponenten und das RSA-Modul des privaten Schlüssels in den Signieralgorithmus ein und erhalten .
    • Nun wird jeder Block des Klartextes einzeln mit dem Signieralgorithmus signiert und man erhält
      • , , , und
      • Man erhält die signierten Blöcke und den signierten Text .
  3. Verifikationsalgorithmus
    • Will nun der Empfänger der signierten Nachricht diese verifizieren, so wendet er unseren öffentlichen Verifikationsschlüssel auf den Verifikationsalgorithmus an und erhält .
    • Nun kann jeder signierte Block der signierten Nachricht einzeln verifiziert werden:
      • , , , und
      • Man erhält die verifizierten Blöcke und somit den verifizierten und matheuatisierten Klartext .
        • Der Klartext kann nun durch die Dekodierung in seine ursprüngliche Form umgewandelt werden

Lernaufgabe

Aufgabe

Berechnen Sie Signatur und Verifikation der Elemente aus dem Beispiel zu hybriden Verschlüsselungsverfahren mit der RSA-Signatur.

Wählen Sie entweder den privaten Schlüssel und den öffentlichen Schlüssel oder erzeugen Sie Ihre eigenen Schlüssel.

Benutzen Sie für die Zeichenkodierung aus dem Beispiel zum Caesar-Verschlüsselungsverfahren (siehe Tabelle 1):

Tabelle 1: Zuordnung der Zeichenkodierung
Klartext (Definitionsmenge) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Zugeordnete Zahl (Zielmenge) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Schlüsselerzeugung für und
Schlüsselerzeugung für

Wir wählen und .

Berechnung von :

.

Berechnung von :

Wahl des öffentlichen Schlüssels:

Wir wählen , da und erhalten den öffentlichen Schlüssel .

Berechnung des privaten Schlüssels:

Wir berechnen das multiplikative Inverse zu mit dem erweiterten euklidischen Algorithmus:

Gleichung 1:

Gleichung 2:

Gleichung 3:

Gleichung 4:

Gleichung 5:

Gleichung 6:

Nun können wir die Gleichungen nutzen, um zu berechnen:

, nach Gleichung 3 und 4

, nach Gleichung 2 und 3

, nach Gleichung 2

, nach Gleichung 1

Eigentlich gilt nun . Wir haben jedoch das Problem, dass wir in unseren Verschlüsselungsalgorithmus der RSA-Signatur nur Standardrepräsentanten einsetzen können. Wir müssen also kleinste positive Zahl der Restklasse wählen. Die einfachste Möglichkeit dieses Element zu berechnen ergibt sich aus . Es gilt also und wir wählen . Der private Schlüssel ist daher .

Lösung
Lösung für

Wir signieren mit dem Verschlüsselungsalgorithmus der RSA-Signatur :

.

Nun verifizieren wir die Signatur mit dem öffentlichen Schlüssel und dem Entschlüsselungsalgorithmus der RSA-Signatur:

.

Lösung für

Bevor wir signieren können, müssen wir den Klartext in ein numerisches Alphabet übertragen.

Wir definieren unsere Definitions- und Zielmenge:

mit

und unseren Zeichenkodierung :

mit , , ... (vgl. Tabelle 1).

Analog zum Beispiel der Caesar-Verschlüsselung erhalten wir

.

Insgesamt erhalten wir den Klartext und signieren diesen mit dem privaten Schlüssel und dem Verschlüsselungsalgorithmus der RSA-Signatur.

Zuvor müssen wir den Klartext jedoch noch in Blöcke kleiner unterteilen:

.

Nun kann der Klartext signiert werden.

Die einzelnen Blöcke werden nun mit dem öffentlichen Schlüssel und dem Entschlüsselungsalgorithmus der RSA-Signatur verifiziert:

und wir erhalten .

Lernempfehlung

Kursübersicht
Übergeordnete Lerneinheit
6: RSA-Kryptosystem
Vorherige Lerneinheit Aktuelle Lerneinheit Empfohlene Lerneinheit
8: Korrektheit des RSA-Verschlüsselungsverfahrens 9: RSA-Signatur 10: Hybride Verschlüsselungsverfahren

Literatur

  1. 1,0 1,1 1,2 Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 644.
  2. Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 645.
  3. 3,0 3,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. 121.
  4. 4,0 4,1 4,2 4,3 4,4 4,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), 120–126. S.122.
  5. 5,0 5,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. 123.
  6. 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)
  7. Lehman, E., Leighton, T., & Meyer, A. R. (2010). Mathematics for computer science. Technical report, 2006. Lecture notes. S. 249.
  8. Kurzweil, H. (2008). Endliche Körper: Verstehen, rechnen, anwenden (2., überarb. Aufl). Springer. S. 57.
  9. Beweisarchiv: Kryptografie: Kryptosysteme: Korrektheit des RSA-Kryptosystems. (16. Juni 2013). Wikibooks, Die freie Bibliothek. Abgerufen am 10. Januar 2020, 12:20 von https://de.wikibooks.org/w/index.php?title=Beweisarchiv:_Kryptografie:_Kryptosysteme:_Korrektheit_des_RSA-Kryptosystems&oldid=674922. (Formulierung verändert)
  10. 10,0 10,1 Kryptologie/Verschlüsselungsalgorithmus des RSA-Verfahrens. (10. Januar 2020). Wikiversity, . Abgerufen am 16. Januar 2020, 12:08 von https://de.wikiversity.org/w/index.php?title=Kryptologie/Verschl%C3%BCsselungsalgorithmus_des_RSA-Verfahrens&oldid=609331.