Kryptologie/Sicherheit des RSA-Kryptosystems
Einleitung
RSA-Problem und multiplikative Inverse |
---|
RSA-Problem |
Gegeben sind der öffentliche Schlüssel sowie der Geheimtext .
Gesucht wird der Klartext wobei gilt: . Das Problem liegt hier in der Schwierigkeit, -te Wurzeln modulo zu ziehen |
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 [3]. |
Im Gegensatz zur Korrektheit des RSA-Kryptosystems, können wir die Sicherheit des RSA-Kryptosystems nicht beweisen[4]. Wie bereits auf der Übersichtsseite zum RSA-Kryptosystem besprochen, beruht die Sicherheit des RSA-Kryptosystems zunächst auf dem RSA-Problem[2].
Wir wollen nun zeigen, dass das Bestimmen des multiplikativen Inversen von ebenso schwer ist, wie das Faktorisierungsproblem.
Faktorisierungsproblem
Das Faktorisierungsproblem besteht seit Jahrhunderten[5]. Bei diesem sollen für eine zusammengesetzte Zahl Teiler gefunden werden, die weder noch sind[2]. Es gibt bisher jedoch keinen effizienten Faktorisierungsalgorithmus zum Lösen des Faktorisierungsproblems für beliebige [6].
Die Sicherheit des RSA-Algorithmus beruht heute vor allem auf dem RSA- bzw. Faktorisierungsproblem[2]. Könnte ein Angreifer die Primfaktoren des RSA-Modul berechnen, so könnte dieser den kompletten Schlüsselerzeugungsalgorithmus des Empfängers nachvollziehen[4]. Der Angreifer benötigt hierfür zwar den Verschlüsselungsexponenten , aber diesen hat der Empfänger beim RSA-Verschlüsselungsverfahren öffentlich zur Verfügung gestellt[7].
Bemerkung: Es gibt unterschiedliche Faktorisierungsalgorithmen, die effizient versuchen Teiler von zu finden und dabei entweder von den Größe von oder dessen Teilern abhängen[8]. Beispiele für solche Algorithmen sind Pollard--Methode[9][10], das Quadratisches Sieb[11][12] und die Methode der elliptischen Kurven[13].
Sicherheit des privaten Schlüssels
Um die Sicherheit des privaten Schlüssels zu untersuchen, wollen wir zeigen, dass das RSA-Kryptosystem die Public-Key-Eigenschaft erfüllt, d.h. dass es praktisch unmöglich ist von dem öffentlichen auf den privaten Schlüssel zu schließen[14]. Wir orientieren uns dabei an den Bezeichnungen des RSA-Verschlüsselungsverfahrens.
Wie im Abschnitt Faktorisierungsproblem thematisiert, beruht die Sicherheit des RSA-Verschlüsselungsverfahrens vor allem auf der Schwierigkeit große Zahlen, wie , zu faktorisieren und der Schwierigkeit vom öffentlichen Verschlüsselungsexponenten auf den privaten Entschlüsselungsexponenten zu schließen[15]. Es stellt sich nun die Frage, welche der beiden Herausforderungen im Allgemeinen schwerer zu bewerkstelligen ist. Wir beantworten diese Frage, indem wir zeigen, dass beide Probleme äquivalent zueinander sind. Die Berechnung des Entschlüsselungsexponenten ist also nicht leichter als die Faktorisierung von .
Wir zeigen folgende Äquivalenz:
Seien und der öffentliche Verschlüsselungsexponent gegeben, dann sind für einen effizienten Angreifer folgenden Aussagen äquivalent
- Der Angreifer kann die Primfaktoren und berechnen
- Der Angreifer kann den privaten Entschlüsselungsexponenten mit berechnen[16]
Gelingt es uns diese Äquivalenz zu zeigen, dann wissen wir, dass nur ein Angreifer den privaten Entschlüsselungsexponenten berechnen kann, der auch faktorisieren kann. Nach dem Faktorisierungsproblem gehen wir jedoch davon aus, dass für ausreichend große und zufällige Primzahlen kein effizienter Algorithmus zur Faktorisierung von bekannt ist. Folglich ist auch kein Algorithmus zur Bestimmung des Entschlüsselungsexponenten bekannt, der ohne auskommt. Die Bestimmung des privaten Schlüssels aus und ist somit genauso schwierig, wie Faktorisierung von [17].
Achtung! Die Äquivalenz beweist nicht, dass das RSA-Kryptosystem sicher ist! Das Faktorisierungsproblem besteht seit mehreren Jahrhunderten, aber es ist denkbar, dass es gelöst wird. Außerdem könnte eine weitere Möglichkeit entdeckt werden, die unabhängig von dem Faktorisierungsproblem ist und das RSA-Kryptosystem knackt[5].
Beweis der Äquivalenz
Voraussetzung
Seien , , und bekannt.
Zu zeigen
Wir können den privaten Entschlüsselungsexponenten mit berechnen.
Beweis
Nach Schritt 5 des Schlüsselerzeugungsalgorithmus wissen wir, dass der private Schlüssel durch Lösen der Kongruenz berechnet werden kann, wenn die Primfaktoren und und der öffentliche Verschlüsselungsexponent bekannt sind.
Voraussetzung
Seien , , und bekannt.
Zu zeigen
Wir können die Primfaktoren und berechnen.
Beweis
Wir beschreiben einen Algorithmus, der mit den Informationen , und in der Lage ist, bzw. zu bestimmen.
Wir setzen zunächst
und
und zeigen folgenden Hilfssatz, den wir später im Satz Bestimmung eines Primfaktors aus , und nutzen.
Hilfssatz
Für alle Zahlen mit gilt [16].
Korrektheit des RSA-Kryptosystems, (Satz zur) Ordnung
von Elementen in Gruppen |
---|
Korrektheit des RSA-Kryptosysems |
Seien prim, , , und
, dann gilt für alle : |
Ordnung von Elementen in Gruppen |
Seien und . Wenn es ein gibt, sodass gilt, dann
heißt die kleinste derartige Zahl Ordnung von in und wird als geschrieben[19]. |
Satz zur Ordnung von Elementen in Gruppen |
Seien und . Es gilt genau dann, wenn [19]. |
Beweis Hilfssatz |
---|
Voraussetzung
Sei mit Zu zeigen
Beweis Sei mit . Aus der Korrektheit des RSA-Verfahrens wissen wir, dass gilt. Durch Multiplikation mit ergibt sich nach den Potenzgesetzen: . Da wir mit gesetzt haben, können wir dies nun nach umformen, dann einsetzen und erhalten . Nach dem Satz zur Ordnung von Elementen in Gruppen folgt, dass
und somit ■[16] |
Wir betrachten nun einen Satz, welcher die Grundlage für einen Algorithmus bildet, mit dem man aus , und einen Primfaktor von bestimmen kann.
Satz Bestimmung eines Primfaktors aus , und
Sei mit .
Wenn , dann gilt für ein [16].
Beweis Bestimmung eines Primfaktors aus , und
Voraussetzung
Sei mit und , wobei
und
Zu zeigen
für ein
Beweis
Betrachten wir zunächst und .
Da , wissen wir, dass und wir können den Hilfssatz anwenden:
und
.
Hilfssatz Sicherheit des RSA-Kryptosystems, (Satz zur) Ordnung
von Elementen in Gruppen |
---|
Hilfssatz Sicherheit des RSA-Kryptosystems |
Für alle Zahlen mit gilt [16]. |
Ordnung von Elementen in Gruppen |
Seien und . Wenn es ein gibt, sodass gilt, dann
heißt die kleinste derartige Zahl Ordnung von in und wird als geschrieben[19]. |
Satz zur Ordnung von Elementen in Gruppen |
Seien und . Es gilt genau dann, wenn [19]. |
Sei nun nach Voraussetzung , genauer
und
.
Dann folgt bzw. .
Wir zeigen nun, dass und .
Nach Definition der Ordnung von Elementen in Gruppen gilt
und nach Potenzieren mit folgt
, da und .
Da , folgt
Wir können umstellen und erhalten
.
Es folgt
[16].
Wir haben somit gezeigt, dass man mit den Informationen , und in der Lage ist, einen Primfaktor von zu bestimmen.
Der zugehörige Algorithmus geht wie folgt vor:
- Wir wählen ein zufälliges
- Wir berechnen
- Fallunterscheidung
- Ist
- Dann ist ein Primfaktor von
- Der Algorithmus bricht ab und wird ausgegeben
- Ist
- Dann fährt der Algorithmus mit Schritt 4 fort
- Ist
- Wir berechnen für alle
- Fallunterscheidung
- Ist ,
- Dann ist ein Primfaktor von
- Der Algorithmus bricht ab wird ausgegeben
- Ist für alle
- Dann hat der Algorithmus in diesem Durchlauf keinen Primfaktor von gefunden
- Der Algorithmus wird mit einem neuen wiederholt
- Ist ,
Bemerkung: Die Erfolgswahrscheinlichkeit des Algorithmus ist pro Durchführung mindestens 50%, sodass wir durch mehrfaches Ausführen des Algorithmus einen Primfaktor von dem RSA-Modul finden[20]. Da der Beweis der Erfolgswahrscheinlichkeit weitere neue Grundlagen benötigt[21], beschränken wir uns hier auf die Anwendung des Algorithmus'.
Da können wir den unbekannten Primfakor durch Einsetzen von und dem bekannten Primfakor leicht berechnen■[16]
Bemerkung: Nach dem RSA-Problem, könnte die Berechnung der -ten Wurzel das RSA-Kryptosystem ebenfalls knacken. Es wird aktuell angenommen, dass dies etwa so schwer ist, wie das Faktorisierungsproblem zu lösen. Ein Beweis steht jedoch noch aus[22][23].
Lernempfehlung
Übergeordnete Lerneinheit | ||
---|---|---|
11: Kryptoanalyse | ||
Vorherige Lerneinheit | Aktuelle Lerneinheit | Empfohlene Lerneinheit |
11: Kryptoanalyse | 12: Sicherheit des RSA-Kryptosystems | 13: Angriff auf das RSA-Verschlüsselungsverfahren |
Literatur
- ↑ 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: 27. Januar 2020, 14:29 UTC; Formulierung verändert)
- ↑ 2,0 2,1 2,2 2,3 Hinek, M. J. (2009). Cryptanalysis of RSA and Its Variants. CRC Press. S. 8.
- ↑ Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Berlin, Heidelberg: Springer. S. 43.
- ↑ 4,0 4,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. 125.
- ↑ 5,0 5,1 Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 172.
- ↑ Rothe, J. (2008). Komplexitätstheorie und Kryptologie: Eine Einführung in Kryptokomplexität. Springer. S. 376.
- ↑ 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.
- ↑ Yan, S., Y. (2009). Primality Testing and Integer Factorization in Public-Key Cryptography (2. Aufl.). Springer Science+Business Media, LLC. S. 208.
- ↑ Seite „Pollard-p − 1-Methode“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 22. Januar 2020, 19:04 UTC. URL: https://de.wikipedia.org/w/index.php?title=Pollard-p_%E2%88%92_1-Methode&oldid=196076553 (Abgerufen: 27. Januar 2020, 13:21 UTC)
- ↑ PL1
- ↑ Seite „Quadratisches Sieb“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 27. Dezember 2019, 16:04 UTC. URL: https://de.wikipedia.org/w/index.php?title=Quadratisches_Sieb&oldid=195259282 (Abgerufen: 27. Januar 2020, 13:22 UTC)
- ↑ PL2
- ↑ 2
- ↑ Diffie, W., & Hellman, M. (1976). New directions in cryptography. IEEE Transactions on Information Theory, 22(6) (S. 644–654). S. 644.
- ↑ 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.
- ↑ 16,0 16,1 16,2 16,3 16,4 16,5 16,6 16,7 Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 173.
- ↑ 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. 125.
- ↑ 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.
- ↑ 19,0 19,1 19,2 19,3 Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 47.
- ↑ Douglas R. Stinson. (1995). Cryptography. Theory and Practice. CRC Press LLC. S. 141.
- ↑ Buchmann, J. (2016). Einführung in die Kryptographie (6. Aufl.). Springer. S. 174.
- ↑ 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.
- ↑ Boneh, D. (1999). Twenty Years of Attacks on the RSA Cryptosystem. 46(2). S. 204.