Kryptologie/Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens
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 |
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: |
- 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]
- Wähle zufällig und mit einheitlicher Wahrscheinlichkeit zwei sehr große Primzahlen und mit
- Berechnung des RSA-Modul
- Berechnung von
- Wir nutzen die Folgerung aus Satz 1 der eulerschen -Funktion
- Wahl des öffentlichen Schlüssels
- Wähle eine zu teilerfremde Zahl , für die gilt
- Setze und in ein
- 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]
- Berechne den Entschlüsselungsexponenten als multiplikative Inverse von bezüglich des Moduls . Es soll also die folgende Kongruenz gelten
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 |
- Wahl der Primzahlen
- Wir wählen (zufällig) und als Primzahlen
- Berechnung des RSA-Modul
- als Modulo des RSA-Verfahrens erhalten wir
- Berechnung von
- die eulersche -Funktion nimmt an
- Wahl des öffentlichen Schlüssels
- die Zahl muss zu teilerfremd sein. Wir wählen . Damit bilden und den öffentlichen Schlüssel
- 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]
- Berechnung der multiplikativen Inversen mit
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
Ü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
- ↑ 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.
- ↑ Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 644.
- ↑ 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)
- ↑ 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.
- ↑ Burton, D. M., & Dalkowski, H. (2005). Handbuch der elementaren Zahlentheorie mit über 1000 Übungsaufgaben und ihren Lösungen. Lemgo: Heldermann Verlag. S. 47.
- ↑ 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,0 7,1 Stroth, G., & Waldecker, R. (2019). Elementare Algebra und Zahlentheorie (2. Aufl.). Birkhäuser Basel. S. 77.
- ↑ 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)
- ↑ 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,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.
- ↑ 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)
- ↑ Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 43.
- ↑ Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 37.
- ↑ Lehman, E., Leighton, T., & Meyer, A. R. (2010). Mathematics for computer science. Technical report, 2006. Lecture notes. S. 249.
- ↑ Kurzweil, H. (2008). Endliche Körper: Verstehen, rechnen, anwenden (2., überarb. Aufl). Springer. S. 57.
- ↑ 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.
- ↑ 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.
- ↑ 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.