Kryptologie/Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens

Aus Wikiversity


Einleitung

Das RSA-Verschlüsselungsverfahren ist ein asymmetrisches Kryptosystem[1] und benötigt daher zwei Schlüssel: den öffentlichen und den privaten Schlüssel[2]. Der öffentliche Schlüssel besteht aus einem Zahlenpaar und der private Schlüssel aus einem Zahlenpaar . ist in beiden Schlüsseln identisch und bildet den Modulo des RSA-Verschlüsselungsverfahrens. Außerdem ist der Verschlüsselungs- und der Entschlüsselungsexponent[3][4].

Schlüsselerzeugungsalgorithmus

Der Algorithmus der Schlüsselgenerierung besteht aus insgesamt fünf Schritten:

Primzahl, (Folgerung) eulersche -Funktion, Teilerfremdheit, multiplikative Inverse,

Kongruenz und erweiterter euklidischer Algorithmus

Primzahl
Sei mit , dann heißt Primzahl oder prime Zahl, wenn gilt:

besitzt nur zwei Teiler in , nämlich und .

Andernfalls heißt zusammengesetzte Zahl[5].

Eulersche -Funktion
Für die eulersche -Funktion gilt: [6][7] mit

[8][7].

Folgerung aus Satz 1 der eulerschen -Funktion
Für mit prim folgt [9].
Teilerfremdheit
Zwei ganze Zahlen und , wobei mindestens einer der beiden Zahlen ungleich Null ist, heißen

teilerfremd, wenn [10]. Betrachten wir mehr als zwei Zahlen, dann nennen wir diese

paarweise teilerfremd, wenn je zwei beliebige von diesen Zahlen zueinander teilerfremd sind[11][10].

Multiplikative Inverse
Die Restklasse ist genau dann invertierbar in , wenn gilt und die Lösung

der Kongruenz ist eindeutig bestimmt und wir nennen diese multiplikative Inverse

von [12].

Kongruenz
Seien und , dann gilt [13].
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[14]),
  2. Berechnung zweier ganzer Zahlen und , welche die Gleichung erfüllen[15].
  1. Wahl der Primzahlen
    • Wähle zufällig und mit einheitlicher Wahrscheinlichkeit zwei sehr große Primzahlen und mit
      • Aus Sicherheitsgründen wählt man Primzahlen mit über 300 Dezimalstellen[16]
  2. Berechnung des RSA-Modul
  3. Berechnung von
    • Wir nutzen die Folgerung aus Satz 1 der eulerschen -Funktion
  4. Wahl des öffentlichen Schlüssels
    • Wähle eine zu teilerfremde Zahl , für die gilt
    • Setze und in ein
  5. Berechnung des privaten Schlüssels
    • Berechne den Entschlüsselungsexponenten als multiplikative Inverse von bezüglich des Moduls . Es soll also die folgende Kongruenz gelten
      • Aufgrund der Kongruenz gilt mit und da die in Schritt 4 gewählte Zahl teilerfremd zu ist, gilt
      • kann mit dem erweiterten euklidischen Algorithmus berechnet werden
    • Setze und in ein[3][17]

Beispiel

Bemerkung: Für gewöhnlich verwendet man Primzahlen, die mindestens der Größenordnung entsprechen und mindestens 309 Dezimalstellen aufweisen[16]. Wir verwenden deutliche kleinere Zahlen, um das Verfahren besser veranschaulichen zu können.

Berechnung des privaten Schlüssels
Sei und .

Berechnung

Es gilt .

Berechnung der Faktoren und mit

, da

, da

, da

, da

und

Der private Schlüssel ist

  1. Wahl der Primzahlen
    • Wir wählen (zufällig) und als Primzahlen
  2. Berechnung des RSA-Modul
    • als Modulo des RSA-Verfahrens erhalten wir
  3. Berechnung von
    • die eulersche -Funktion nimmt an
  4. Wahl des öffentlichen Schlüssels
    • die Zahl muss zu teilerfremd sein. Wir wählen . Damit bilden und den öffentlichen Schlüssel
  5. Berechnung des privaten Schlüssels
    • Berechnung der multiplikativen Inversen mit
      • Angewandt auf das Beispiel gilt:
      • Mit dem erweiterten euklidischen Algorithmus berechnet man nun die Faktoren und , so dass die Gleichung aus dem Beispiel wie folgt aussieht:
      • Die Berechnung von und haben wir bereits in der Lernaufgabe zum erweiterten euklidischen Algorithmus durchgeführt
    • bildet mit den privaten Schlüssel , während nicht weiter benötigt wird[3]

Lernaufgabe

Aufgabe

Berechnen Sie ihr eigenes Schlüsselpaar aus privatem und öffentlichem Schlüssel mit dem Schlüsselerzeugungsalgorithmus des RSA-Algorithmus. Eine Liste mit den Primzahlen bis finden Sie hier[18].

Lernempfehlung

Kursübersicht
Übergeordnete Lerneinheit
6: RSA-Kryptosystem
Vorherige Lerneinheit Aktuelle Lerneinheit Empfohlene Lerneinheit
6: RSA-Kryptosystem 7.1: Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens 7.2: Verschlüsselungsalgorithmus des RSA-Verschlüsselungsverfahrens
Grundlagen der aktuellen Lerneinheit
7.1.1: Primzahl(-eigenschaften) 7.1.2: Probedivision (Primzahltest 1) 7.1.3: Fermat-Test (Primzahltest 2)
7.1.4: Miller-Rabin-Test (Primzahltest 3) 7.1.5: Erweiterter euklidischer Algorithmus 7.1.6: Eulersche φ-Funktion

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. Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 644.
  3. 3,0 3,1 3,2 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: 28. Dezember 2019, 16:29 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. Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Lemgo: Heldermann Verlag. S. 47.
  6. Kryptologie - Mathematische Vertiefung (PH Freiburg SS 2017). (5. Dezember 2019). Wikiversity, . Abgerufen am 8. Januar 2020, 12:14 von https://de.wikiversity.org/w/index.php?title=Kryptologie_-_Mathematische_Vertiefung_(PH_Freiburg_SS_2017)&oldid=605650. (Formulierung verändert)
  7. 7,0 7,1 Stroth, G., & Waldecker, R. (2019). Elementare Algebra und Zahlentheorie (2. Aufl.). Birkhäuser Basel. S. 77.
  8. Seite „Eulersche Phi-Funktion“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 24. August 2019, 16:52 UTC. URL: https://de.wikipedia.org/w/index.php?title=Eulersche_Phi-Funktion&oldid=191644019 (Abgerufen: 7. Januar 2020, 09:45 UTC; Formulierung verändert)
  9. 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.
  10. 10,0 10,1 Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Heldermann Verlag. S. 26.
  11. Seite „Teilerfremdheit“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 26. September 2019, 13:33 UTC. URL: https://de.wikipedia.org/w/index.php?title=Teilerfremdheit&oldid=192615323 (Abgerufen: 10. Januar 2020, 13:56 UTC; Formulierung verändert)
  12. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 43.
  13. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 37.
  14. Lehman, E., Leighton, T., & Meyer, A. R. (2010). Mathematics for computer science. Technical report, 2006. Lecture notes. S. 249.
  15. Kurzweil, H. (2008). Endliche Körper: Verstehen, rechnen, anwenden (2., überarb. Aufl). Springer. S. 57.
  16. 16,0 16,1 Beutelspacher, A., Neumann, H. B., & Schwarzpaul, T. (2010). Kryptografie in Theorie und Praxis: Mathematische Grundlagen für Internetsicherheit, Mobilfunk und elektronisches Geld (2., überarb. Aufl). Wiesbaden: Vieweg + Teubner. S. 118.
  17. 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. 122f.
  18. Primzahlen: Tabelle der Primzahlen (2 - 100.000). (15. Oktober 2007). Wikibooks, Die freie Bibliothek. Abgerufen am 7. Februar 2020, 19:01 von https://de.wikibooks.org/w/index.php?title=Primzahlen:_Tabelle_der_Primzahlen_(2_-_100.000)&oldid=327631.