Zum Inhalt springen

Kryptologie/RSA-Kryptosystem

Aus Wikiversity


Einleitung

(Asymmetrische) Kryptosystem, Sicherheitsziele,

Verschlüsselungsverfahren und digitale Signatur

Kryptosystem
Verfahren zur Umsetzung von Sicherheitszielen in der Kryptografie[1].
Asymmetrische Kryptosysteme
Kryptosystem, bei dem Sender und Empfänger über kein gemeinsamen

geheimen Schlüssel verfügen[2].

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

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

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

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

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

Klartextes einer übermittelten Nachricht verstehen[2].

Verschlüsselungsverfahren
Kryptosystem zur Umsetzung von Vertraulichkeit[2].
Digitale Signatur
Kryptosystem zur Umsetzung von Authentizität und Verbindlichkeit[2].

Das RSA-Kryptosystem ist ein asymmetrisches Kryptosystem aus den 70er Jahren des letzten Jahrhunderts[5]. Es beruht auf der Annahme, dass die Potenzierung modulo unter bestimmten Voraussetzungen eine Falltür-Funktion ist[6]. Das Kryptosystem kann zur Realisierung all unserer bekannten Sicherheitsziele genutzt werden: Vertraulichkeit oder Authentizität und Verbindlichkeit. Das RSA-Kryptosystem, kann also als Verschlüsselungsverfahren oder als digitale Signatur verwendet werden[5]. Es gilt als eines der aktuell besten Kryptosysteme[7] und kommt als Verschlüsselungsverfahren oder digitale Signatur in unterschiedlichen Einsatzgebiete vor[8]. Zwei von vielen Beispielen hierfür sind Bankkarten zum Geld abheben und bargeldlosem Bezahlen[9] und S/MIME, einem Standard für Verschlüsselung und Signatur von Emails, der den RSA-Algorithmus als Verfahren zur digitalen Signatur verwendet[10].

RSA-Algorithmus

Wir beschreiben den RSA-Algorithmus anhand des RSA-Verschlüsselungsverfahrens. Die Berechnungen finden dabei alle im Restklassenring statt[11].

Primzahltest, Eulersche -Funktion und Erweiterter Euklidischer Algorithmus
Primzahltest
Test mit Ziel zu überprüfen, ob eine Zahl (mit hoher Wahrscheinlichkeit) prim ist[12].
Eulersche -Funktion
Für die eulersche -Funktion gilt: [13][14] mit [15][14].
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[16]),
  2. Berechnung zweier ganzer Zahlen und , welche die Gleichung erfüllen[17].
  1. Schlüsselerzeugungsalgorithmus
    • Berechnung des RSA-Modul aus zwei Primzahlen definierter Größenordnung
    • Wahl eines zu teilerfremden Verschlüsselungsexponenten
    • Berechnung des Entschlüsselungsexponenten aus der Gleichung mittels erweitertem euklidischen Algorithmus
    • Privaten Schlüssel und öffentlichen Schlüssel bilden[18][19]
    • Bemerkung: Die Wahl der Primzahlen geschieht aus Sicherheitsgründen zufällig, wobei eine gewisse Größenordnung vorausgesetzt wird. In der Praxis wählt man eine zufällige Zahl dieser Größenordnung und testet dann mit einem Primzahltest, ob die Zahl prim ist[20].
  2. Verschlüsselungsalgorithmus
    • mit Klartext , Geheimtext und dem öffentlichen Schlüssel [18][21]
  3. Entschlüsselungsalgorithmus
    • mit , und dem privaten Schlüssel [18][21]

Bemerkung: Die Algorithmen der RSA-Signatur sind zu denen des RSA-Verschlüsselungsverfahrens fast identisch. Sie unterscheiden sich in der Notation und in der Reihenfolge des zweiten und dritten Schritts[21].

Beispiel

Wir wollen den Klartext mit dem Verschlüsselungsalgorithmus verschlüsseln und anschließend mit dem Entschlüsselungsalgorithmus entschlüsseln.

Schritt 1: Schlüsselerzeugung

Multiplikative Inverse, erweiterte euklidische Algorithmus und Kongruenz
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 [22].

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[16]),
  2. Berechnung zweier ganzer Zahlen und , welche die Gleichung erfüllen[17].
Kongruenz
Seien und , dann gilt [23].

Seien und

Wir bestimmen zunächst den RSA-Modul .

Dann ist

.

Wähle mit , dann sei .

Nun berechnen wir das multiplikative Inverse mit :

Wir wenden den erweiterten euklidischen Algorithmus an:

  • Teil 1: Berechnung des

Gleichung 1:

Gleichung 2:

Gleichung 3:

Gleichung 4:

Gleichung 5:

, da der hintere Summand in der vorletzten Gleichung ist

  • Teil 2: Berechnung zweier ganzer Zahlen und , welche die Gleichung erfüllen

, wegen Gleichung 2 und 3

, wegen Gleichung 1 und 2

, wegen Gleichung 1

und

Es folgt wegen der Kongruenz , dass .

Nun bilden wir den privaten und öffentlichen Schlüssel

  • Private Schlüssel
  • Öffentliche Schlüssel

Schritt 2: Verschlüsseln des Klartextes mit

, da

Schritt 3: Entschlüsseln des Geheimtextes mit

[24]

Sicherheit

Die Sicherheit des RSA-Algorithmus beruht heute vor allem auf dem RSA- bzw. Faktorisierungsproblem[25].

RSA-Problem

Gegeben sind der öffentliche Schlüssel sowie der Geheimtext . Gesucht wird der Klartext wobei gilt: . Das Problem liegt hier in der Schwierigkeit die -te Wurzel modulo zu ziehen oder das multiplikative Inverse von zu bestimmen[18][25].

RSA-Annahme

Es ist bisher nicht klar wie schwer es tatsächlich ist das RSA-Problem zu lösen. Es wird jedoch angenommen, dass das Problem (bei ausreichend großem RSA-Modul ) unverhältnismäßig schwer zu lösen ist. Diese Annahme heißt RSA-Annahme[25].

Faktorisierungsproblem

Dass das RSA-Problem schwer zu lösen ist, wird auch durch das Faktorisierungsproblem bekräftigt. Das Faktorisierungsproblem besteht schon seit Jahrhunderten[26]. Die Problemstellung besteht darin, für eine zusammengesetzte Zahl einen anderen Teiler als und zu finden[25]. Wir werden in einer späteren Lerneinheit zur Sicherheit des RSA-Kryptosystems sogar zeigen, dass das RSA-Problem höchstens so schwer zu lösen ist, wie das Faktorisierungsproblem[25].

Zukunft der Sicherheit des RSA-Algorithmus

Ob der RSA-Algorithmus auch noch in einigen Jahrzehnten als sicher gilt, ist fraglich. Möglicherweise gelingt es bis dahin einen Faktorisierungsalgorithmus zu finden, der das Faktorisierungsproblem löst oder es gibt eine andere Möglichkeit, um den RSA-Algorithmus unabhängig von der Faktorisierung von zu brechen und somit das RSA-Problem zu lösen[25]. Ein solcher effizienter Faktorisierungsalgorithmus ist bereits beschrieben worden, jedoch setzt dieser den Einsatz von Quantencomputern voraus[27].

Angriffe auf das RSA-Kryptosystem

In einigen Spezialfällen kann ein Angreifer einen Geheimtext entschlüsseln[18][8]. Diese Angriffsszenarien basieren jedoch auf einer falschen Verwendung des RSA-Kryptosystems[28]. Ein solches Beispiel behandeln wir in der Lerneinheit Angriff auf das RSA-Verschlüsselungsverfahren.

Lernempfehlung

Kursübersicht
Übergeordnete Lerneinheit
5: Asymmetrische Kryptosysteme
Vorherige Lerneinheit Aktuelle Lerneinheit Empfohlene Lerneinheit
5: Asymmetrische Kryptosysteme 6: RSA-Kryptosystem 7.1: Schlüsselerzeugung des RSA-Verschlüsselungsverfahrens
Grundlagen der empfohlenen 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. Menezes, A. J., van Oorschot, P. C., & Vanstone, S. A. (1997). Handbook of Applied Cryptography. 5. S. 15.
  2. a b c d Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 644.
  3. Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 645.
  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. 121.
  5. a b 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.
  6. 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. 126.
  7. Singh, G., & Supriya, S. (2013). A Study of Encryption Algorithms (RSA, DES, 3DES and AES) for Information Security. International Journal of Computer Applications, 67(19) (S. 33–38). S. 35.
  8. a b Boneh, D. (1999). Twenty Years of Attacks on the RSA Cryptosystem. 46(2), 11. S. 203.
  9. Kunjadić, G., & Jović, Z. (2016). Bitcoin—Banking and Technological Challenges. Proceedings of the International Scientific Conference FINIZ 2016 (S. 185–189). S. 188.
  10. Raji, M. A., Amiri, F., & Ahmadian, M. (2016). A New secure email scheme Using Digital Signature with S/MIME. 8. S. 56.
  11. 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). Vieweg + Teubner. S. 121.
  12. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 157.
  13. 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)
  14. a b Stroth, G., & Waldecker, R. (2019). Elementare Algebra und Zahlentheorie (2. Aufl.). Birkhäuser Basel. S. 77.
  15. 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)
  16. a b Lehman, E., Leighton, T., & Meyer, A. R. (2010). Mathematics for computer science. Technical report, 2006. Lecture notes. S. 249.
  17. a b Kurzweil, H. (2008). Endliche Körper: Verstehen, rechnen, anwenden (2., überarb. Aufl). Springer. S. 57.
  18. a b c d e 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)
  19. 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.
  20. 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). Vieweg + Teubner. S. 118.
  21. a b c 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.
  22. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 43.
  23. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 37.
  24. 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.
  25. a b c d e f Hinek, M. J. (2009). Cryptanalysis of RSA and Its Variants. CRC Press. S. 8.
  26. Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 172.
  27. Shor, P. W. (1994). Algorithms for quantum computation: Discrete logarithms and factoring. Proceedings 35th Annual Symposium on Foundations of Computer Science (S. 124–134). S. 130.
  28. Moore, J. H. (1988). Protocol failures in cryptosystems. Proceedings of the IEEE, 76(5) (S. 594–602). S. 594.