Seminar "Verschlüsselungs- und Codierungstheorie" RSA-Verschlüsselungsverfahren Julia Barteis Matrikelnummer: 419879 Sommersemester 2017 10. Mai 2017 Inhaltsverzeichnis 1 Einleitung 2 Das RSA-Verschlüsselungsverfahren 1.1 Nötige Vorkenntnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Einstieg in die Verschlüsselung . 2.2 Die Schlüsselerzeugung . . . . . 2.3 Die Verschlüsselung . . . . . . . 2.3.1 Schnelle Exponentiation 2.4 Die Entschlüsselung . . . . . . . 2.5 Sicherheit des Verfahrens . . . . 2.6 Ein Beispiel zum Üben . . . . . 2.6.1 Die Aufgaben . . . . . . 2.6.2 Die Lösungen . . . . . . . . . . . . . . . . . . . . . . . . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 4 . 4 . 4 . 6 . 6 . 7 . 8 . 11 . 11 . 11 1 Einleitung Das RSA-Verschlüsselungsverfahren ist ein sogenanntes asymmetrisches Verschlüsselungsoder auch Public-Key-Verschlüsselungsverfahren. Dies bedeutet, dass zwischen Sender und Empfänger zuvor kein Informations- oder Schlüsselaustausch stattgefunden haben muss. Jeder Empfänger besitzt ein eigenes Schlüsselpaar bestehend aus einem geheimen und einem öentlichen Schlüssel. Der Sender besitzt hingegen nur den öentlichen Schlüssel. Das Verfahren ist nach seinen Erndern Ron Riverst, Adi Shamir und Len Adleman benannt, welche es am Massachusetts Institute of Technology entwickelt haben. Es war das erste Public-Key-Verschlüsselungsverfahren. Für meine Ausarbeitung habe ich "Einführung in die Kryptographie" von Johannes Buchmann und "Einführung in die algebraische Zahlentheorie" von Alexander Schmidt verwendet. 1.1 Nötige Vorkenntnisse Das RSA-Verschlüsselungsverfahren nutzt Erkenntnisse und Rechenoperationen der Zahlentheorie. Um die nötigen Rechenschritte des Verfahrens durchführen zu können, sollten folgende Kenntnisse aus der Zahlentheorie geläug sein: Der euklidische Algorithmus Der euklidische Algorithmus erlaubt die schnelle Berechnung des gröÿten gemeinsamen Teilers ggT(a, b) zweier Zahlen a, b ∈ Z . Angewendet auf a = 7630 und b = 49 liefert er wegen 7630 = 49 ∗ 155 + 35, 49 = 1 ∗ 35 + 14, 35 = 2 ∗ 14 + 7, 14 = 2 ∗ 7 das Ergebnis ggT(7630, 49) = 7. Der erweiterte euklidische Algorithmus ermöglicht es, den gröÿten gemeinsamen Teiler 2 zweier Zahlen a, b ∈ Z als Linearkombination ebendieser mit ganzzahligen Koezienten darzustellen. Beispielsweise ist 7 = 35 − 2 ∗ 14 = 35 − 2 ∗ (49 − 1 ∗ 35) = −2 ∗ 49 + 3 ∗ 35 = −2 ∗ 49 + 3 ∗ (7630 − 49 ∗ 155) = −467 ∗ 49 + 3 ∗ 7630 Die Eulersche φ-Funktion Die Eulersche φ-Funktion ist die Abbildung ϕ : N → N, die jeder natürlichen Zahl n die Anzahl der zu n teilerfremden Zahlen m ≤ n zuordnet. Die Abbildung ist multiplikativ (ϕ(m ∗ n) = ϕ(m) ∗ ϕ(n)), falls der gröÿte gemeinsame Teiler von m und n genau eins ist (Buchmann, 2016, S.58). Darüber hinaus gilt aufgrund der Denition einer Primzahl sofort: ϕ(p) = (p − 1) für jede Primzahl p. Satz von Euler Wenn der gröÿte gemeinsame Teiler der Zahlen a ∈ Z und n ∈ Z genau eins ist, so gilt aϕ(n) = 1 mod n. Satz zur Ordnung Sei G eine Gruppe, g ∈ G und e ∈ Z. Dann gilt: g e = 1 ⇔ e ist durch die Ordnung von g in G teilbar. Die kleinste natürliche Zahl e, für die g e genau eins ist, nennt man die Ordnung von g. 3 2 Das RSA-Verschlüsselungsverfahren 2.1 Einstieg in die Verschlüsselung Zu Beginn ein kleiner Vergleich, um ein ungefähres Verständnis für die Idee der RSAVerschlüsselung oder ganz allgemein für eine Public-Key-Verschlüsselung zu erlangen: Wie bereits zu Anfang erwähnt, besitzt jeder Empfänger dieser Art von Verschlüsselung ein eigenes Schlüsselpaar, das sich aus einem öentlichen und einem privaten Schlüssel zusammensetzt. Die Sender kennen natürlich nur den öentlichen Schlüssel. Dies ist vergleichbar mit folgendem Beispiel: Über die Adresse einer Person, also dessen Straÿe und Hausnummer, kann jeder dieser Person eine Nachricht zukommen lassen, da diese Daten öentlich bekannt sind (z.B. weil sie im Telefonbuch eingetragen sind). Andererseits kann aber nur der Empfänger die Nachricht lesen, da nur diese Person den Briefkastenschlüssel besitzt. 2.2 Die Schlüsselerzeugung Um einen Schlüssel zu generieren, werden zunächst zwei (sehr groÿe) Primzahlen p und q erzeugt. Das Produkt der beiden Primzahlen n = p ∗ q ist das sogenannte RSA-Modul. Es beschränkt die Gröÿe der Nachricht, die später verschlüsselt werden soll. Wie eingangs bereits erwähnt, wird nun ein Spezialfall der Multiplikativität der Eulerschenφ-Funktion bewiesen, da diese Eigenschaft eine wichtige Rolle bei der Schlüsselerzeugung spielt. Lemma 2.2.1. Ist die Zahl n ∈ N das Produkt von zwei Primzahlen p und q, dann gilt ϕ(n) = (p − 1) ∗ (q − 1). Beweis. Die Zahl n ist das Produkt von p und q , somit ist ϕ(n) = ϕ(p ∗ q). Da der gröÿte gemeinsame Teiler von p und q eins ist, ist die φ-Funktion multiplikativ ϕ(p ∗ q) = ϕ(p) ∗ ϕ(q) 4 und, weil es sich bei p und q um Primzahlen handelt, folgt ϕ(p) ∗ ϕ(q) = (p − 1) ∗ (q − 1). Im nächsten Schritt wählt der Algorithmus eine natürliche Zahl e mit folgenden Eigenschaften: 1) 1 < e < ϕ(n) = (p − 1) ∗ (q − 1) 2) ggT(e, (p − 1) ∗ (q − 1)) = 1 Anschlieÿend berechnet der Schlüsselerzeugungsalgorithmus eine natürliche Zahl d, die die folgenden Merkmale aufweisen soll: 1) 1<d<(p − 1) ∗ (q − 1) 2) d ∗ e ≡ 1 mod (p − 1) ∗ (q − 1) Die Zahlen n und e bilden den öentlichen Schlüssel. Der private Schlüssel besteht aus der Zahl d. Die Menge aller möglichen Tupel ((n, e),d) bezeichnet man als RSA-Schlüsselraum. Beispiel 2.2.2. Sei k=8, p=11 und q=23. Dann ergibt sich n = 11 ∗ 23 = 253. Als nächstes möchten wir ein e auswählen, das für unsere Zwecke möglichst klein sein sollte, um besser damit arbeiten zu können(bei einer maschinell erzeugten Verschlüsselung gibt es diese Intention natürlich nicht). Dazu berechnen wir zunächst ϕ(n), um die an e gestellten Bedingungen berücksichtigen zu können: ϕ(n) = (p − 1) ∗ (q − 1) = 10 ∗ 22 = 220. Da e zumeist als ungerade Zahl gewählt wird und 1 durch die erste Bedingung an e ausgeschlossen werden kann, ist das kleinstmögliche e gleich 3. Wir kontrollieren ob die Zahl 3 die gewünschten Eigenschaften hat: 1) 1 < 3 < 220: Dies ist oensichtlich korrekt. 2) ggT (3, 220) = 1: Im Allgemeinen prüft man solch eine Bedingung durch den euklidischen Algorithmus. 5 Nun folgt die Berechnung von d. Aus der zweiten Eigenschaft von d weiÿ man, dass man ein d berechnen kann, indem man mithilfe des erweiterten euklidischen Algorithmus das multiplikativ Inverse zu e in Z/ϕ(n)Z bestimmt: 1 = 220 − 3 ∗ 73 = −3 ∗ 73 mod 220 | + 3 ∗ 220 = 3 ∗ (220 − 73) mod 220 = 3 ∗ 147 mod 220 Damit ist d also gerade 147. 2.3 Die Verschlüsselung Eine Nachricht m ∈ Z/nZ wird mit c = me mod n zum Chifretext c verschlüsselt. Beispiel 2.3.1. Setzen wir das zuvor gewählte Beispiel fort, ergibt sich für m = 26 c = 263 mod 253 = 119. Für die Berechnung von me mod n wird gewöhnlich die sogenannte schnelle Exponentiation verwendet. 2.3.1 Schnelle Exponentiation Damit die Verschlüsselung trotz groÿer Zahlen und dementsprechend groÿer Potenzen ezient und schnell erfolgen kann, wird die schnelle Exponentiation genutzt: Sei m ∈ Z/nZ und e ∈ N. Zur Berechnung von me benutzen wir die Binärentwicklung e= k X ei ∗ 2i i=0 mit den Koezienten e1 , ..., ek ∈ {0, 1}. Daraus folgt e Pk m =m i i=0 ei ∗2 k Y i = (m2 )ei = i=0 Y i m2 . 0≤i≤k,ei =1 Aus den obigen Gleichungen ergibt sich die folgende Idee für die Berechnung von me : 6 1) Berechne die sukzessiven Quadrate m2 für 0 ≤ i ≤ k. i+1 i Aufgrund der Potenzgesetze gilt folgende Gleichheit: m2 = (m2 )2 . i 2) Bestimme me als das Produkt derjenigen m2 , für die ei = 1 ist, denn die Faktoren i (m2 )ei mit ei = 0 können vernachlässigt werden. i Beispiel 2.3.2. Wir wollen 673 mod 100 berechnen. Zunächst bestimmen wir die Binärentwicklung des Exponenten, also von 73: 73 = 26 + 23 + 20 . Anschlieÿend werden die sukzessiven Quadrate bestimmt: 0 6(2 ) = 60 = 6, 1 6(2 ) = 36, 2 6(2 ) ≡ 362 ≡ −4 mod 100, 3 6(2 ) ≡ 16 mod 100, 4 6(2 ) ≡ 162 ≡ 56 mod 100, 5 6(2 ) ≡ 562 ≡ 36 mod 100, 6 6(2 ) ≡ −4 mod 100. Damit folgt 673 ≡ 6 ∗ (62 )3 ∗ (62 )6 ≡ 6 ∗ 16 ∗ (−4) ≡ 16 mod 100. Durch die schnelle Exponentiation waren also nur 6 Quadrierungen und zwei Multiplikationen anstatt 72 Multiplikationen modulo 100 notwendig. 2.4 Die Entschlüsselung Die Entschlüsselung basiert auf folgendem Satz: Satz 2.4.1. Sei (n, e) ein öentlicher und d der dazugehörige private Schlüssel im RSA-Verfahren. Dann gilt für jede natürliche Zahl m mit 0 ≤ m < n: (me )d mod n = m. Beweis. Da e ∗ d ≡ 1 mod (p − 1) ∗ (q − 1) 7 ist, gibt es eine natürliche Zahl l, sodass e ∗ d = 1 + l ∗ (p − 1) ∗ (q − 1) gilt. Demnach ist (me )d = me∗d = m ∗ (m(p−1)∗(q−1) )l . So sieht man, dass (me )d ≡ m ∗ (m(p−1) )(q−1)∗l ≡ m mod p, denn im Fall, dass p ein Teiler von m ist, ist die Behauptung oensichtlich korrekt, da dann beide Seiten der Kongruenz 0 modulo p sind. Ist p kein Teiler von m, so ergibt sich die Kongruenz mit dem kleinen Satz von Fermat, da p die Dierenz (me )d − m teilt und analog auch q . Somit teilt auch das kleinste gemeinsame Vielfache von p und q , also n, diese Dierenz und es ergibt sich damit: (me )d ≡ m mod n. Beispiel 2.4.2. So wie zuvor auch seien n = 253, e = 3, c = 119 und d = 147. Mit Satz 2.4.1 kann man nun c entschlüsseln und erhält m = 119147 mod 253 = 26. Wie man sieht, war das Verfahren erfolgreich, da 26 tatsächlich unsere anfängliche Nachricht war. 2.5 Sicherheit des Verfahrens Um die Sicherheit des RSA-Verschlüsselungsverfahrens gewährleisten zu können muss Folgendes gelten: 1. es muss praktisch unmöglich sein, mit Kenntnis von (n, e), also dem öentlichen Schlüssel, auf den privaten Schlüssel d zu schlieÿen beziehungsweise diesen zu berechnen, 2. es darf kaum möglich sein, die Zerlegung von n in die Primzahlen p und q zu bestimmen. Die Sicherheit des RSA-Verfahrens ist nicht bewiesen, es gibt lediglich Indizien. Eine mögliche Gefahr geht von neuen Techniken aus, insbesondere den Quantencomputern, die ein Faktorisierungsproblem in Polynomzeit lösen können. Bis heute ist es allerdings unmöglich, groÿe n ezient zu faktorisieren. 8 Die bislang hypothetische Gefahr ist Folgende: Es ist ebenso schwer aus n und e den geheimen Schlüssel d zu bestimmen, wie eine Faktorisierung von n zu nden. Falls ein Angreifer aber p und q kennt, kann er daraus n bestimmen. Mithilfe von e kann er auch d berechnen, indem er d∗e ≡ 1 mod (p−1)∗(q−1) löst, und erhält somit den privaten Schlüssel. Konnte der Angreifer aus dem öentlichen den privaten Schlüssel d berechnen, so ist die Berechnung der Faktorisierung ein Leichtes. Dazu setzt man s = max{ t ∈ N | 2t teilt e ∗ d − 1} und k = (e ∗ d − 1)/2s . Lemma 2.5.1. Für alle zu n teilerfremden ganzen Zahlen a gilt ord(ak + nZ) ∈ {2i | 0 ≤ i ≤ s}. Beweis. Sei a eine zu n teilerfremde Zahl. Nach Satz 2.4.1 gilt ae∗d−1 ≡ 1 mod n, und daraus folgt s (ak )2 ≡ 1 mod n. Da für jedes Element g einer Gruppe G und jedes e ∈ Z gilt, dass g e genau dann eins wird, wenn e durch die Ordnung von g in G teilbar ist, teilt die Ordnung von ak + nZ die Zahl 2s . Mit dem nun folgenden Theorem arbeitet der Algorithmus, der n faktorisieren soll. Theorem 2.5.2. Sei a eine zu n teilerfremde ganze Zahl. Wenn die Ordnung von ak mod p und ak mod q verschieden ist, so ist 1 < ggT(a(2t )∗k − 1, n) < n für ein t ∈ {0, 1, 2, ..., s − 1}. Beweis. Durch Lemma 2.5.1 ist bekannt, dass die Ordnung von ak mod p und ak mod q in der Menge {2i | 0 ≤ i ≤ s} liegen muss. Angenommen die Ordnung von ak mod p ist gröÿer als die von ak mod q . Die Ordnung von ak mod q sei 2t . Dann gilt t < s und es folgt t a(2 )∗k ≡ 1 mod q 9 und nach Voraussetzung t a(2 )∗k 6≡ 1 mod p. Deshalb gilt t ggT(a(2 )∗k − 1, n) = q. Theorem 2.5.3. Die Anzahl der zu n primen Zahlen a in der Menge {1, 2, ..., n − 1}, für die ak mod p und ak mod q eine verschiedene Ordnung hat, ist wenigstens (p − 1) ∗ (q − 1)/2. Der Beweis dieses Theorems folgt im anschlieÿenden Vortrag als Anwendung des Chinesischen Restsatzes. Aus dem obigen Theorem ergibt sich direkt, dass die Wahrscheinlichkeit eines Erfolgs bei diesem Faktorisierungsverfahren bei jedem erneuten Durchgang bei mindestens 1/2 liegt. Beispiel 2.5.4. Seien wieder n = 253, e = 3, c = 119 und d = 147. Damit ist e ∗ d − 1 = 440. Sei a = 2. Dann ergibt sich mit den Denitionen von s und k zunächst s = 3, denn 23 teilt 440, aber 24 teilt 440 nicht. Mittels s = 3 errechnet sich k = 440/8 = 55 und nach Denition ist t ∈ {0, 1, 2}. Damit gilt ggT(2220 − 1, 253) = ggT(2110 − 1, 253) = 253. Aber ggT(255 − 1, 253) = 23. Also ist 23 einer der Primfaktoren von n (in diesem Fall q). Demnach wurde tatsächlich die Faktorisierung von n = 253 gefunden, denn aus n und q kann man natürlich auch p ermitteln. 10 2.6 Ein Beispiel zum Üben 2.6.1 Die Aufgaben Seien p = 3 und q = 11 . 1) Bestimme n, ϕ(n), d und e, wobei e die kleinstmögliche ungerade Zahl sein soll, die den Eigenschaften von e genügt. 2) Verschlüssle m = 14 mithilfe der schnellen Exponentiation. 3) Nutze Satz 2.4.1, um aus dem Chiretext von 2) wieder die Nachricht m zu erhalten. 2.6.2 Die Lösungen 1) p ∗ q = 3 ∗ 11 = 33 ⇒ n = 33 ϕ(n) = (p − 1) ∗ (q − 1) = 2 ∗ 10 = 20 ⇒ ϕ(n) = 20 Für die Bestimmung von e geht man wie folgt vor: e 6= 1 nach Voraussetzung Für e = 3 prüfe die an e gestellten Bedingungen: 1 < 3 < 20 und ggT(3, 20) = 1 ⇒ e = 3 Mit dem erweiterten Euklidischen Algortithmus ergibt sich: d = 7 2) Zum Verschlüsseln verwenden wir c = me mod n. Also berechnen wir hier: 143 mod 33 Mithilfe der schnellen Exponentiation lässt sich 143 ezient bestimmen: 3 = 20 + 21 0 142 ≡ 14 mod 33 1 142 ≡ 31 mod 33 0 1 0 1 ⇒ 143 = 142 +2 = 142 ∗ 142 = 14 ∗ 31 ≡ 5 mod 33 ⇒ c=5 3) Hier verwenden wir Satz 2.4.1, wonach gilt: (me )d mod n = m Durch schnelle Exponentiation erhält man: 57 mod 33 0 1 2 57 = 52 ∗ 52 ∗ 52 = 5 ∗ 25 ∗ 31 ≡ 14 mod 33 ⇒ m = 14 11 Literaturverzeichnis [1] Buchmann, [2] Schmidt, Johannes: Einführung in die Kryptographie. 6. Au. Springer Spektrum-Verlag, Berlin Heidelberg 2016 Alexander ; Einführung in die algebraische Zahlentheorie. 2. Au. Springer-Verlag, Berlin Heidelberg 2007 12