Kryptologie/RSA-Signatur

Aus testwiki
Version vom 8. März 2020, 11:38 Uhr von imported>Philip Holtappel (Überschrift Unterstützungselement korrigiert; Veränderung von OER-Materialien gekennzeichnet)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen


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 m 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 m 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 m,c,e,d/N und der öffentliche Schlüssel (e,N) und der private Schlüssel (d,N)
  1. Schlüsselerzeugungsalgorithmus: identisch[5]
  2. Verschlüsselungsalgorithmus: cmemodN
  3. Entschlüsselungsalgorithmus: mcdmodN[6][4]


Erweiterte euklidische Algorithmus
Der erweiterte euklidische Algorithmus wird auf zwei Zahlen a,b angewandt und besteht aus zwei Teilen:
  1. Berechnung des ggT(a,b)=sa+tb (auch als euklidischer Algorithmus bekannt[7]),
  2. Berechnung zweier ganzer Zahlen s und t, welche die Gleichung ggT(a,b)=sa+tb erfüllen[8].
  1. Schlüsselerzeugungsalgorithmus,
    • Wir wählen p,q prim und bestimme N=pq und φ(N)
    • Wir wählen ein den Verifikationsexponenten t mit 1<t<φ(N) mit ggT(1,φ(N))=1 und erhalten den öffentlichen Verifikationsschlüssel (t,N)
    • Wir berechnen den privaten Signaturschlüssel (s,N) mit dem Signierexponenten s, indem wir das multiplikative Inverse von t bezüglich φ(N) mit dem erweiterten euklidischen Algorithmus berechnen
  2. Signieralgorithmus,
    • Wir signieren einen kodierten Klartext m, indem wir diesen mit dem privaten Signierexponenten s potenzieren und die signierte Botschaft s erhalten,
      • sigmsmodN
  3. Verifikationsalgorithmus,
    • Die signierte Nachricht können wir mit dem Verifikationsalgorithmus erneut in den Klartext m umwandeln und die Authentizität und Verbindlichkeit verifizieren
      • msigtmodN[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 (m,sig) verfügt. Dieses Nachrichten-Signatur-Paar (m,sig) besitzt zwei wichtige Eigenschaften:

  1. Der Klartext m muss von einem bestimmten Sender stammen, da nur dieser Sender über den Signierexponenten s verfügt, der sigmsmodN 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 sig 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 (me)dmed(md)emmodN 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 p,q prim, N=pq m/N, s(/φ(N),) und st1modφ(N)

Zu zeigen

RSA-Algorithmus entschlüsselt korrekt, d.h. für alle m/N gilt sigt(ms)tmst(mt)smmodN

Beweis

Laut Voraussetzung gilt:

st1modφ(N)

st1modφ(pq), nach Voraussetzung N=pq

st1modφ(p)φ(q), wegen der Multiplikativität der φ-Funktion

st1mod(p1)(q1), wegen Satz 2 Eigenschaft der φ-Funktion bei Primzahlen

st=1+k(p1)(q1)(*) mit k und wegen der Definition der Kongruenz und Teilbarkeit.


Wir unterscheiden zunächst zwei Fälle:

ggT(m,N)=1 und ggT(m,N)1.


Fall 1: Sei ggT(m,N)=1:

(ms)tmodN

mstmodN

m1+φ(N)modN, nach (*) mit φ(N)=(p1)(q1)

mmφ(N)modN

m1modN, da nach dem Satz von Euler gilt mφ(N)1modN

mmodN.

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


Fall 2: Sei ggT(m,N)1.

Wegen N=pq gilt dann also entweder ggT(m,N)=p oder ggT(m,N)=q.

Hier ist der Satz von Euler nicht anwendbar, wegen ggT(m,N)1.

Wenn wir jedoch trotzdem zeigen, dass

(ms)tmmodp und (ms)tmmodq, dann können wir (wegen ggT(p,q)=1) den chinesischen Restsatz anwenden und erhalten:

(ms)tmmod(pq)

(ms)tmmodN, wegen N=pq.


Wir zeigen dies nun für den Fall ggT(m,N)=p, dass gilt:

(ms)tmmodp und (ms)tmmodq.

Sei ggT(m,N)=p.

Es gilt dann nach Definition der größten gemeinsamen Teilers pm bzw. nach Definition der Teilbarkeit m=kp mit k>0.

Wir zeigen zunächst (ms)tmmodp für ggT(m,N)=p

Dann gilt nach Definition der Kongruenz aber auch m0modp.

Nun betrachten wir (ms)tmodp.

(ms)tmodp

((kp)s)tmodp

0modp, da ((kp)s)t ein Vielfaches von p ist.

Also gilt (ms)t0modp und insgesamt

m(ms)t0modp.

Nun bleibt noch zu zeigen, dass (ms)tmmodq für ggT(m,N)=p.

Da ggT(m,q)=1, kann man den Satz von Euler anwenden.

(ms)tmodq

mstmodq

mst1mmodq

mk(p1)(q1)mmodq, nach (*): st1=k(p1)(q1) (in umgestellter Form)

m(q1)k(p1)mmodq

(m(q1))k(p1)mmodq

(mφ(q))k(p1)mmodq

1k(p1)mmodq, nach dem Satz von Euler

mmodq.

Also gilt für ggT(m,N)=p: (ms)tmmodq.

Nun können wir den chinesischen Restsatz anwenden:

(ms)tmmod(pq)

(ms)tmmodN, wegen N=pq.

Wir haben also nun gezeigt, dass das RSA-Verschlüsseungsverfahren für ggT(m,N)=p korrekt ist. Dies können wir für ggT(m,N)=q analog zeigen, indem wir in der Notation p und q 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 ggT(m,N)=1 und ggT(m,N)1, gezeigt■[9][5]

Beispiel

Wir wollen den Klartext HALLO WELT. signieren.

Berechnung des privaten Signierschlüssels (47,143)
Sei t=23 und φ(N)=120.

Berechnung ggT(23,120)

120=523+5

23=45+3

5=13+2

3=12+1

2=21+0

Es gilt ggT(23,120)=1.

Berechnung der Faktoren s und k mit ggT(23,120)=s23+k120

3=12+1

1=312

1=31(513), da 5=13+2513=2

1=235

1=2(2345)5, da 23=45+32345=3

1=22395, da 855=95

1=2239(120523), da 120=523+5120423=5

1=2239120+4523

1=47239120

s=47 und k=9

Der private Signierschlüssel ist (s,N)=(47,143)


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

Sei also m=m1m2m11=726576767908769768446[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:
      • p=11 und q=13
      • N=pq=143
      • φ(143)=120
      • t=23 mit dem öffentlichen Verifikationsschlüssel (23,143)
      • s=47 mit dem privaten Signierschlüssel (47,143)[10]
  2. Signieralgorithmus
    • Wir setzen den Signierexponenten s=47 und das RSA-Modul N=143 des privaten Schlüssels (s,N)=(47,143) in den Signieralgorithmus sigmsmodN ein und erhalten sigm47mod143.
    • Nun wird jeder Block des Klartextes einzeln mit dem Signieralgorithmus sigm47mod143 signiert und man erhält
      • sig1724741mod143, sig2654765mod143, sig3764732mod143, und sig114647106mod143
      • Man erhält die signierten Blöcke 41,65,32,32,28,51,120,75,32,50,106 und den signierten Text sig=416532322851120753250106=416532322851120753250106.
  3. Verifikationsalgorithmus
    • Will nun der Empfänger der signierten Nachricht diese verifizieren, so wendet er unseren öffentlichen Verifikationsschlüssel (23,143) auf den Verifikationsalgorithmus msigtmodNan und erhält msig23mod143.
    • Nun kann jeder signierte Block der signierten Nachricht einzeln verifiziert werden:
      • m1724123mod143, m2656523mod143, m3763223mod143, und m114610623mod143
      • Man erhält die verifizierten Blöcke 72,65,76,76,7,90,87,69,76,84,46 und somit den verifizierten und matheuatisierten Klartext m=726576767908769768446=726576767908769768446.
        • 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.

  1. m1=7
  2. m2=PUALYULA

Wählen Sie entweder den privaten Schlüssel (s,N)=(453,901) und den öffentlichen Schlüssel (t,N)=(461,901) oder erzeugen Sie Ihre eigenen Schlüssel.

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

Tabelle 1: Zuordnung der Zeichenkodierung fCV
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 (s,N)=(453,901) und (t,N)=(461,901)
Schlüsselerzeugung für s=453,t=461,N=901

Wir wählen p=53 und q=17.

Berechnung von N=pq:

N=5317=901.

Berechnung von φ(N)=(p1)(q1):

φ(N)=5216=832

Wahl des öffentlichen Schlüssels:

Wir wählen t=461, da ggT(461,832)=1 und erhalten den öffentlichen Schlüssel (461,901).

Berechnung des privaten Schlüssels:

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

Gleichung 1: 832=1461+371

Gleichung 2: 461=1371+90

Gleichung 3: 371=490+11

Gleichung 4: 90=811+2

Gleichung 5: 11=52+1

Gleichung 6: 2=21+0

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

11=52+1

1=52+11

1=5(90811)+(371490), nach Gleichung 3 und 4

1=590+4011+371490

1=5(461371)+40(371490)+3714(461371), nach Gleichung 2 und 3

1=5461+5371+4037116090+3714461+4371

1=5461+5371+40371160(461371)+3714461+4371, nach Gleichung 2

1=5461+5371+40371160461+160371+3714461+4371

1=169461+210371

1=169461+210(832461), nach Gleichung 1

1=169461+210832210461

1=379461+210832

Eigentlich gilt nun s=379. 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 [379]832 wählen. Die einfachste Möglichkeit dieses Element zu berechnen ergibt sich aus 379+832=453. Es gilt also 453[379]832 und wir wählen s=453. Der private Schlüssel ist daher (453,901).

Lösung
Lösung für m1=7

Wir signieren m=m1=7 mit dem Verschlüsselungsalgorithmus der RSA-Signatur sigmsmodN:

sig6237453mod901

sig=623.

Nun verifizieren wir die Signatur mit dem öffentlichen Schlüssel (461,901) und dem Entschlüsselungsalgorithmus msigtmodN der RSA-Signatur:

m7623461mod901

m=7.

Lösung für m2=PUALYULA

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

Wir definieren unsere Definitions- und Zielmenge:

ΣL:={A,B,C,...,Z} mit ΣL=26

Σ26:={0,1,...,25}

und unseren Zeichenkodierung fCV:

fCV:ΣLΣ26 mit A0, B1, ... Z25 (vgl. Tabelle 1).

Analog zum Beispiel der Caesar-Verschlüsselung erhalten wir

fCV(P)=15,fCV(U)=20,fCV(A)=0,fCV(l)=11,fCV(Y)=24,fCV(U)=20,fCV(L)=11,fCV(A)=0.

Insgesamt erhalten wir den Klartext m=15200112420110 und signieren diesen mit dem privaten Schlüssel (s,N)=(453,901) und dem Verschlüsselungsalgorithmus sigmsmodN der RSA-Signatur.

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

m=15200112420110.

Nun kann der Klartext signiert werden.

sig115515453mod901

sig2744200453mod901

sig3736112453mod901

sig4275420453mod901

sig543110453mod901

Die einzelnen Blöcke werden nun mit dem öffentlichen Schlüssel (461,901) und dem Entschlüsselungsalgorithmus msigtmodN der RSA-Signatur verifiziert:

m115155461mod901

m2200744461mod901

m3112736461mod901

m4420275461mod901

m511043461mod901

und wir erhalten m=15200112420110.

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.