www.mathematik-netz.de © Copyright, Page 1 of 12 Das RSA-Kryptosystem Um dieses Dokument verstehen zu können benötigt der Leser nur grundlegende Kenntnisse der Algebra und ein gewisses mathematisches Verständnis. Notwendige Sätze werden erläutert und mit Beispielen verdeutlicht, insofern sollte es dem Leser keine Mühe bereiten den Gedankengängen zu folgen. 1.0 Motivation und Überblick Ein Kryptosystem ist ein grundsätzliches Verfahren der Datenverschlüsselung, wir werden beide Wörter synonym verwenden. Mathematiker haben die schöne Angewohnheit alles und jedes klassifizieren zu wollen. Folgerichtig kann man auch die Datenverschlüsselung in zwei grundsätzliche Verfahren aufgliedern, den - symmetrischen und den - asymmetrischen Kryptosystemen. Bei einer symmetrischen Datenverschlüsselung wird für die Verschlüsselung und die Entschlüsselung der gleiche Schlüssel eingesetzt. Damit lassen sich Nachrichten mit hoher Geschwindigkeit chiffrieren und dechiffrieren. Von Nachteil ist, dass der Schlüssel dem Empfänger übermittelt werden muss, womit ein Sicherheitsrisiko verbunden ist. Beispiele für symmetrische Verfahren sind DES, IDEA und RC4. Bei einer asymmetrischen Datenverschlüsselung (auch Public-Key-Verfahren genannt) werden verschiedene Schlüssel zum Ver- und Entschlüsseln verwendet. Zum Verschlüsseln dient der sog. öffentliche Schlüssel (engl. public key), der von einem potenziellen Empfänger ohne Geheimhaltung bekannt gegeben wird, zum Entschlüsseln der Privatschlüssel (engl. private key), der von seinem Besitzer sorgfältig verwahrt werden muss und auf den sonst niemand Zugriff haben darf. Der große Nachteil bei symmetrischen Kryptosystemen ist der große Vorteil bei den asymmetrischen Kryptosystemen, denn bei diesen Verfahren ist es nicht notwendig die Schlüssel vor einer geschützten Übertragung auszutauschen. Wenn man sich ein großes Netzwerk von N Teilnehmern vorstellt, in dem eine vertrauliche Kommunikation zwischen je zwei Teilnehmern realisiert werden soll, so hat die Symmetrie (beide Teilnehmer haben denselben Schlüssel) unmittelbare Konsequenzen: Jeder Teilnehmer muss (N-1) Schlüssel geheim halten, insgesamt müssen also O(N)=N2 Schlüssel geheim gehalten werden. Kommt ein Teilnehmer hinzu, so müssen alle N Teilnehmer die Schlüsseldatei aktualisieren. Sender und Empfänger müssen einen gemeinsamen Schlüssel vereinbaren (insg. O(N)=N2 mal). Sender und Empfänger müssen sich gegenseitig darin vertrauen, dass keiner den geheimen Schlüssel preisgibt. Aufgrund des quadratisch wachsenden Aufwands wären symmetrische Verfahren in der Praxis mit einem relativ hohen Verwaltungsaufwand verbunden. Es stellt sich also heraus, dass bei einem Public-Key-Kryptosystem jeder Teilnehmer T ein Paar von Schlüsseln hat: einen öffentlichen Schlüssel E=ET („Encryption“) zur Verschlüsselung und einen privaten (geheimen) Schlüssel D=DT („Decrypton“) zum Entschlüsseln. Natürlich ergibt diese Aufteilung in öffentlichen und privaten Schlüssel erst und nur dann einen Sinn, wenn man von dem öffentlichen Schlüssel nicht auf den privaten Schlüssel schließen kann. Also muss bei einem Public-Key-Verfahren gelten: Aus der Kenntnis des öffentlichen Schlüssels ET ist der private Schlüssel DT nicht zu erschließen. www.mathematik-netz.de © Copyright, Page 2 of 12 Alle öffentlichen Schlüssel sind in einer allgemein zugänglichen Datei untergebracht, während die privaten Schlüssel gut gehütete Geheimnisse des Eigentümers sind bzw. sein sollten. Die wichtigsten Vertreter der Public-Key-Verfahren sind der RSA-Algorithmus, welcher hier näher untersucht wird, und die Diffie-HellmanSchlüsselvereinbarung bzw. die ElGamalVerschlüsselung, deren Arithmetik auf großen Zahlen beruht. Verschlüsselung Asymmetrische Verfahren haben auch Nachteile: Erstens gibt es im Vergleich zu den symmetrischen Verfahren nur sehr wenige Public-KeyVerschlüsselungsverfahren, deren Sicherheit zudem auf ähnlichen mathematischen Annahmen beruht. Wenn sich eines dieser Verfahren als unischer herausstellen sollte, kann man im Unterschied zu den symmetrischen Verschlüsselungsverfahren nicht so leicht auf eine Alternative zurückgreifen. Zweitens sind alle bis heute bekannten Verfahren zur asymmetrischen Verschlüsselung wegen der Arithmetik großer Zahlen sehr langsam, wohingegen sich die symmetrischen Verfahren sehr effizient implementieren lassen. Symmetrische Kryptosysteme I.d.R. sehr gut Sehr viele Kann sehr gut sein Ja Verschlüsselung O(n) = n2 bei n Teilnehmern vs. Performance Anzahl Sicherheit Vorheriger Schlüsselaustausch notwendig Typisches Einsatzgebiet Verwaltungsaufwand Asymetrische Kryptosysteme Nicht gut Sehr wenige Sehr gut Nein Signaturen, Schlüsselaustausch O(n) = n bei n Teilnehmern Es stehen sich also zwei Verfahren (mit Vor- und Nachteilen) gegenüber, und frei nach Kant (Synthese!) versucht man in der Praxis die Vorteile beider Verfahren in sog. Hybridverfahren zu nutzen. Dabei wird zur Übermittlung eines symmetrischen Schlüssels ein asymmetrisches Verfahren benutzt. Beweisbar sichere Public-Key-Kryptosysteme sind bisher unbekannt. Üblicherweise kann man zeigen, dass z.B. die Berechnung des geheimen aus dem öffentlichen Schlüssel genauso schwer ist wie ein mathematisches Problem, etwa (Prim-)Faktorisierung einer großen Zahl n. Nachdem Whitfield Diffie und Martin Hellman eine Theorie zur Public-Key-Kryptographie veröffentlicht hatten, versuchten die drei Mathematiker Rivest, Shamir und Adleman, die Annahmen von Diffie und Hellmann zu widerlegen. Nachdem sie den Beweis bei verschiedenen Verfahren durchführen konnten, stießen sie schließlich auf eines, bei dem sie keinerlei Angriffspunkte fanden. Hieraus entstand das RSAKryptosystem. Das RSA-Kryptosystem ist ein asymmetrisches Kryptosystem, d. h. es verwendet verschiedene Schlüssel zum Ver- und Entschlüsseln. Das Verfahren wurde 1977 entwickelt. Seine Sicherheit beruht auf der Schwierigkeit große! Zahlen zu faktorisieren. Die Zerlegung einer Zahl in (mindestens zwei) (Prim-)Faktoren ist zumind. bei sehr großen Zahlen sehr aufwändig, während die Erzeugung einer Zahl durch Multiplikation zweier Primzahlen trivial ist. Wenn nun eine Nachricht einem Empfänger verschlüsselt zugeleitet werden soll, generiert dieser einen öffentlichen Schlüssel (durch die Mulitplikation zweier Primzahlen). Der Nachrichtenabsender verwendet diesen öffentlich bekanntgemachten Schlüssel, indem er damit seine Botschaft verschlüsselt. Nur der www.mathematik-netz.de © Copyright, Page 3 of 12 Empfänger kann diese "decodieren", da nur er die Faktorisierung des von ihm erzeugten (öffentlichen) Schlüssels kennt. 2.0 Mathematische Grundlagen der Arithmetik und Zahlentheorie Folgender Satz sichert nicht nur die Existenz sondern auch die Eindeutigkeit der darin vorkommenden Zahlen q und r. Es wird sich zeigen, dass die Eindeutigkeit mindestens so wichtig ist, wie die Existenz. Satz 2.1: Seien a, b ∈ ] mit a ≠ 0. Dann gibt es eindeutig bestimmte ganze Zahlen q und r mit b = qa+r, und 0 ≤ r<|a|. Die Eindeutigkeit hängt übrigens wesentlich von der Bedingung 0 ≤ r<|a| ab. Beweis: Angenommen, es sind Zahlenpaare (q,r) und (q’,r’) ∈ ] 2 gegeben mit b = qa+r b = q’a+r’ mit mit 0 ≤ r<|a| 0 ≤ r’<|a|. und Setzen wir die Gleichungen gleich und formen etwas um, so ergibt sich qa+r = q’a+r’ (q-q’)a = r’ – r. Also teilt a die Zahl r’-r und da r’ als auch r zwischen 0 und |a|-1 liegen, liegt die Zahl r’-r zwischen –(|a|-1) und |a|-1. Aufgrund der gegebenen Bedingungen kann a die Zahl (r-r’) jedoch nur dann teilen, wenn r’-r = 0 gilt. Da a ≠ 0 gilt folgt damit unmittelbar die Identität r=r’ und damit q=q’. Die Existenz wird nicht bewiesen. , In vielen Fällen interessiert uns nicht so sehr der Divisor q, sondern vor allem der Rest r. Aus diesem Grund erhält der Rest eine spezielle Bezeichnung. Definition: Seien a und b ganze Zahlen mit a ≠ 0. Seien q und r die eindeutig bestimmten ganzen Zahlen mit b = qa +r und 0 ≤ r<|a|. Dann wird die Zahl r mit b mod a bezeichnet. , Das bedeutet: b mod a ist eine Zahl, und zwar die kleinste nichtnegative Zahl r, so dass b-r durch a teilbar ist. Wir können auch schreiben b= qa + (b mod a). Eine eng damit verwandte Definition ist die folgende. Definition: Seien a und b ganze Zahlen, und sei m eine positive ganze Zahl. Wir schreiben a ≡ b [mod m], wenn m die Zahl (b-a) teilt. , www.mathematik-netz.de © Copyright, Page 4 of 12 Dabei wird a ≡ b [mod m] gelesen als „a ist kongruent zu b, modulo m“. Die Zahl m wird der Modulus genannt. Um diese beiden Definitionen in Zusammenhang zu bringen, teilen wir a und b durch m mit Rest: Wir erhalten a=qm+r und b=q’m+r’, wobei q und q’ ganze Zahlen sind und r und r’ wieder die entsprechende Ungleichung von oben erfüllen. Bemerkung: Es gilt a ≡ b [mod m] ⇔ r=r’. Definition: Wenn wir a durch a mod m ersetzen, sagen wir, dass a reduziert wird modulo m. , Beispiel: (a) (b) (c) 8 mod 3 = 5, d.h. wir reduzieren 8 modulo 3. –2 mod 5 = 3 Für jede natürliche Zahl a, mit a<b gilt a mod b = a. Zu (b) sei angemerkt, dass die Bedingung 0 ≤ r’<|a| nicht vergessen werden darf, d.h. r bzw. a mod b ist positiv! , Es sei erwähnt, dass mit Hilfe der Modulo-Rechnung als Verknüpfung ein bedeutender Ring, nämlich der Ring ] /n ] definiert werden kann. Die zugrunde gelegte Menge der Restklassen R:={0, …,n-1} ist endlich. Im Folgenden notieren wir die natürliche Zahl ‚größten gemeinsamen Teiler’ zweier ganzer Zahlen a und b (die nicht beide 0 sind) mit ggT(a, b). Erinnerlich berechnet man den ggT(a,b) mit Hilfe des euklidischen Algorithmus. Beispiel: Wir berechnen den ggT(4711, 1024) mit dem euklidischen Algorithmus: 4711 = 4 ⋅ 1024 +615 1024 = 1 ⋅ 615 +409 615 = 1 ⋅ 409 +206 409 = 1 ⋅ 206 +203 206 = 1 ⋅ 203 +3 203 = 67 ⋅ 3 +2 3 = 1 ⋅ 2 +1 2 = 2 ⋅ 1 +0 ggT(4711, 1024)=ggT(1024, 615) ggT(1024, 615)=ggT(615, 409) ggT(615, 409)=ggT(409, 206) ggT(409, 206)=ggT(206, 203) ggT(206, 203)=ggT(203, 3) ggT(203, 67)=ggT(3, 2) ggT(3, 2)=ggT(2, 1) ggT(2, 1)=ggT(1, 0)= 1. ⇒ Die Zahlen 4711 und 1024 sind teilerfremd. , Ferner nennen wir zwei ganze Zahlen a und b teilerfremd, falls ihr ggT(a, b)=1 ist, insbesondere ist jede ganze Zahl a ∈ ] \{pi} (i ∈ ` ) zu einer beliebigen Primzahl p teilerfremd. Beispiel: Sei a=210 und b=-2002. Die ganzen Zahlen, die a und b teilen sind T:={-14, -7, -2, -1, 1, 2, 7, 14}. Die negativen Zahlen kommen als ggT nicht in Frage. Die Zahl 14 ist positiv, teilt 210 und -2002 und wird von allen Teilern von 210 und –2002 geteilt. Es ist also ggT(210, -2002)=ggT(-2002, 210)=14. , Wie bereits öfter erwähnt kommt den Primzahlen beim RSA-Algorithmus eine entscheidende Rolle zu, deshalb untersuchen wir zunächst die natürlichen Zahlen etwas genauer: www.mathematik-netz.de © Copyright, Page 5 of 12 Definition: Eine natürliche Zahl p > 1 heißt Primzahl, wenn sie genau zwei positive Teiler hat, nämlich 1 und p. , Die erste und einzige gerade Primzahl ist 2, weitere Primzahlen sind dann bspw. 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 53. Definition: Eine zusammengesetzte Zahl n ist eine natürliche Zahl aus der Menge ` \( P ∪ {0,1}). , Satz 2.1: (Zusammengesetzte Zahlen) Sei a ∈ ` \ ( P ∪ {0,1}). Dann hat a einen Primteiler. Beweis: Wir führen Induktion über a. Für a = 2 ist die Behauptung richtig, denn 2 ist prim. Wir nehmen nun a > 2 an. Ist a ∈ P , so ist nichts zu zeigen. Wir können also annehmen, dass a nicht prim ist, d.h. a ist zusammengesetzt. Es existiert also eine Zahl b mit 1 < b < a und b|a. Nach Induktionsvoraussetzung hat b einen Primteiler, welcher dann auch Primteiler von a ist (da b|a). , Die Primzahlen, die in einer solchen Produkt-Darstellung von n auftreten, heißen Primfaktoren der Zahl n, die Produktdarstellung selbst heißt Primfaktorzerlegung. Mit Ausnahme der Zahlen 0 und 1, welche gerade die neutralen Elemente der Verknüpfungen Addition bzw. Multiplikation sind, ist jede natürliche Zahl entweder eine Primzahl oder zusammengesetzt. Beispiel: Die ersten 10 zusammengesetzten Zahlen und ihre Primfaktorzerlegungen sind: , 4=2 ⋅ 2 6=2 ⋅ 3 8=23 9=32 10=2 ⋅ 5 12=22 ⋅ 3 14=2 ⋅ 7 15=3 ⋅ 5 16=24 18=2 ⋅ 32 Wie aus der Zahlentheorie bekannt, kann jede natürliche Zahl n>1 in seine Primfaktoren zerlegt werden. Satz 2.2: (Hauptsatz der elementaren Zahlentheorie) Jede natürliche Zahl a > 1 kann als Produkt von Primzahlen geschrieben werden. Bis auf die Reihenfolge ist diese Primfaktorzerlegung eindeutig. Beweis: Wir beschränken uns auf den Beweis der Existenz einer Primfaktorzerlegung. Wir führen Induktion über a, für a = 2 ist die Behauptung richtig, sei also a > 2. Nach Satz 2.1 hat a einen Primteiler p. Ist a = p, so sind wir fertig. Wir können also wieder annhemen, dass a zusammengesetzt ist. Es existiert also wieder eine natürliche Zahl b, welche a teilt. Also muss a b ∈ ` \ {0,1} sein – diese Zahl besitzt nach Induktionsvoraussetzung eine Zerlegung in Primfaktoren, womit die Existenz einer Zerlegung von a gezeigt ist. , www.mathematik-netz.de © Copyright, Page 6 of 12 Wenn n>1 ist, gibt es mindestens eine Primzahl, die n teilt. Ist n eine Primzahl, so existiert genau eine Primzahl, welche n teilt, nämlich n selbst. Dagegen ist n ein Vielfaches einer Primzahl, so ist n eine zusammengesetzte Zahl. Die Sicherheit des RSA-Algorithmus beruht auf dem Problem der Faktorisierung einer (großen) zusammengesetzten Zahl. Man nutzt also dabei aus, dass es leicht ist, Zahlen zu multiplizieren, dass man aber keinen Algorithmus kennt, der effizient die Primfaktorzerlegung einer beliebigen Zahl angeben kann. Weiterhin wäre die Sicherheit des RSA-Algorithmus nicht gewährleistet, gäbe es nur endlich viele Primzahlen (warum?). Einer der wichtigsten Sätze über Primzahlen, und gleichzeitig einer der ältesten und damit ersten Sätze der Mathematik ist der Folgende: Satz 2.3: (Anzahl Primzahlen) Es gibt unendlich viele Primzahlen. Anders ausgedrückt: Die Folge der Primzahlen endet nie, es gibt keine größte Primzahl. Beweis: Für eine beliebige endliche Menge {p1, …, pr} von Primzahlen sei n:=p1p2…pr+1 und p ein Primteiler von n. Eigentlich müsste nun gelten, dass p in {p1, …, pr} liegt, da angeblich alle Primzahlen in einer endlichen Menge liegen. Dies kann jedoch nicht sein, da p von allen pi verschieden ist, denn ansonsten müsste n p1p2…pr teilen und die 1, was offenbar nicht möglich ist. Widerspruch zur Voraussetzung, dass des endlich viele Primzahlen gibt. , Der eben geführte Beweis ist ein absoluter Klassiker und wohl einer der ersten mathematischen Beweise die jemals geführt wurden. Im „Buch der Beweise“ kann man die schönsten Beweise (insgesamt 6 verschiedene Versionen) zu diesem Satz finden. Man kann die Frage nach der Anzahl der Primzahlen noch konkretisieren: Wie viele Primzahlen existieren, welche kleiner oder gleich einer natürlichen Zahl x sind? Satz 2.4: (Primzahlsatz) Es gilt π (x) ≈ x ln(x) . Das bedeutet: Die Anzahl der Primzahlen kleiner oder gleich x ist ungefähr x/ln(x). Der Beweis ist viel zu aufwendig, dass er in diesem Dokument Platz finden würde. Ein Ergebnis, welches besagt, dass im Durchschnitt jede ln(x)-te Zahl kleiner oder gleich x eine Primzahl ist. Es ist klar, dass also die Wahrscheinlichkeit eine Primzahl zu treffen mit steigenden Werten immer kleiner wird, da ln(x) eine monoton wachsende Funktion ist. Dies hat zur Folge, dass die Primzahlen nach „oben hin immer dünner“ werden. Lemma 4.1 (Vielfachsummendarstellung von Bézout): Seien a, b ∈ ] und sei d:=ggT(a,b). Dann gibt es ganze Zahlen a’ und b’ mit d = aa’ + bb’. Insbesondere gilt : Wenn a und b teilerfremd sind, d.h. 1=ggT(a,b), gibt es ganze Zahlen a’ und b’ mit 1 = aa’ +bb’. www.mathematik-netz.de © Copyright, Page 7 of 12 Um diese Erkenntnisse zu festigen, werden wir vor dem eigentlichen Beweis einige Beispiele betrachten: Beispiel: Es ist der ggT(8,5)=1. Mit a’=2 und b’=-3 folgt 1 = 2 ⋅ 8+(-3) ⋅ 5. Wir bemerken: Wenn a und b positiv sind, dann muss eine der Zahlen a’, b’ negativ sein. , Beweis: Den Beweis kann man relativ einfach und sehr konstruktiv führen. Sei ohne Einschränkung a ≠ 0. Falls b=q1a mit q1 ∈ ] , so ist |a|=ggT(a, b). Dann sind t=0 und s=1 oder s=-1 die gesuchten Zahlen. Anderenfalls führen wir den Euklidischen Algorithmus durch und erhalten die Gleichung: b a r1 = = = rn-2 rn-1 = = q1a+r1 q2r1+r2 q3r2+r3 # qnrn-1+rn qn+1rn , 0<r1<|a| , 0<r2< r1 , 0<r3< r2 , 0<rn< rn-1 , Obiges Lemma verrät noch nicht, wie man die Zahlen a’ und b’ konkret ausrechnen kann. Dies ist mit dem sog. erweiterten euklidischen Algorithmus möglich. Wir wollen uns dieses Verfahren an einem Beispiel klar machen. Beispiel: Sei etwa a=35 und b=101. Das Verfahren besteht aus zwei Großschritten. Der erste Schritt besteht darin, mit Hilfe des euklidischen Algorithmus den ggT von a und b zu berechnen: 101 = 2 ⋅ 35 +31 35 = 1 ⋅ 31 +4 31 = 7 ⋅ 4 +3 4 = 1 ⋅ 3 +1 3 = 3 ⋅ 1 +0 ggT(101, 35)= ggT(35, 31) ggT(35, 31)= ggT(31, 4) ggT(31, 4)= ggT(4, 3) ggT(4, 3)= ggT(3, 1) ggT(3, 1)= ggT(1, 0)=1 Im zweiten Schritt gehen wir jetzt vom ggT aus und dröseln die obigen Gleichungen „von unten nach oben“ der Reihe nach auf. Stellen wir obige Gleichungen auf der linken Seite um, so erhalten wir 101 -2 ⋅ 35 = 31 35 -1 ⋅ 31 = 4 31 -7 ⋅ 4 = 3 4 -1 ⋅ 3 = 1 und daraus kann man durch wiederholte Substitution gewinnen: ⇒ 1 = 4 -1 ⋅ 3 = 4 -1 ⋅ (31-7 ⋅ 4) 1 = -1 ⋅ 31+8 ⋅ 4 Nach der Substitution ist es entscheidend, dass man die gemeinsamen Faktoren zusammenfasst und erst dann weiter substituiert. Dies ist nun in jedem weiteren Schritt notwendig. ⇒ ⇒ 1 = -1 ⋅ 31+8 ⋅ (35 -1 ⋅ 31) 1 = -9 ⋅ 31+8 ⋅ 35 Schließlich fassen wir die 31 als Rest der ersten Gleichung auf und erhalten durch Einsetzen: www.mathematik-netz.de © Copyright, Page 8 of 12 1 = -9 ⋅ (101 -2 ⋅ 35)+8 ⋅ 35 1 = -9 ⋅ 101 +18 ⋅ 35 +8 ⋅ 35 1 = -9 ⋅ 101 +26 ⋅ 35. ⇒ ⇒ ⇒ Der erweiterte euklidische Algorithmus liefert also die Werte a’=26 und b’=-9. , Aus dem Lemma von Bézout folgt eine Aussage, die v.a. in der Algebra von großem Nutzen sein wird. Satz: (Modulare Inverse) Seien a und n teilerfremde positive Zahlen. Dann gibt es eine ganze Zahl a’ ∈ {1, 2, …, n-1} mit aa’ ≡ 1 (mod n). Man nennt a’ die modulare Inverse bez. der Multiplikation von a modulo n. Beweis: Da ggT(a, n)=1 ist, existieren nach dem Lemma von Bézout ganze Zahlen a’ und n’ mit aa’+nn’=1. Wenn wir diese modulo n lesen, ergibt sich aa’=1 mod n. , Beispiel: Es ist ggT(26, 7) = 1, deshalb folgt mit dem Lemma von Bézout, dass es ganze Zahlen a’ bzw. b’ gibt, so dass gilt: 1 = 26a’ + 7b’ Setzen wir a’:=3 und b’:=-11, so erhalten wir in der Tat die Vielfachsummendarstellung 1 = 26 ⋅ 3 +7(-11) = 78 -77=1. Nun müssen wir diese Gleichung nur noch mod lesen, dann erhalten wir: 1 = 7(-11) mod 26 ⇒ 1 = -77 mod 26, da für ganzes k 26k mod 26 = 0 ist. D.h. -11=15 mod 26 ist das modulare Inverse zu 7. , 3.0 Konkrete Anwendung des RSA-Kryptosystems Bob möchte Alice die Nachricht M:=“BN“ (Kennzeichen der Stadt Bonn) über einen nicht sicheren Kanal zukommen lassen, ohne, dass ein Dritter diese Nachricht lesen kann. Der private Schlüssel der Empfängerin Alice wird mit dA bezeichnet, den öffentlichen Schlüssel notieren wir mit eA. Entsprechend betiteln wir den privaten Schlüssel von Bob mit dB und den Öffentlichen mit eB. Zunächst zeigen wir, wie Alice Ihren privaten und öffentlichen Schlüssel generiert. Dazu geht Sie in folgenden Schritten vor: 1. Alice wählt zufällig (und stochastisch unabhängig) zwei (große) Primzahlen p und q www.mathematik-netz.de © Copyright, Page 9 of 12 2. Alice berechnet n=pq und ϕ (n):=(p-1)(q-1). 3. Alice berechnet einen Verschlüsselungs-Exponenten e – es muss gelten ggT(e, ϕ (n)) = 1. 4. Alice berechnet einen Entschlüsselungs-Exponenten d, wobei d gerade das modulare Inverse von e ist. 5. Alice veröffentlicht das Paar (n, e) und hält das Tupel (pq=n, d) als privaten Schlüssel geheim. Nun also hat Alice Ihre Schlüssel erzeugt und Bob ist in die Lage versetzt Ihr eine verschlüsselte Nachricht M zukommen zu lassen. Der Text wird in das numerische Äquivalent übersetzt, bspw: „BN“ 0113. Die Verschlüsselung der Nachricht M ergibt sich durch Berechnung von e S:= M mod n. Die Entschlüsselung der Nachricht M’ ergibt sich durch Potenzieren mit d, also d M = S mod n. 4.0 Mathematische Grundlagen des RSA-Kryptosystems Um RSA-Kryptosystem vollständig beschreiben zu können, benötigen wir ein klein wenig mehr Mathematik, insbesondere einen Satz des schweizer Mathematikers Leonhard Euler (1707 – 1783) über eine Eigenschaft der natürlichen Zahlen. Der RSA-Algorithmus stellt eine Anwendung des Satzes von Euler bzw. des kleinen Satzes von Fermat dar. Um diesen jedoch formulieren zu können benötigen wir die so genannte eulersche ϕ -Funktion. Definition: Für n ∈ ` sei der Wert der eulerschen ϕ -Funktion gegeben durch , ϕ (n) = | {a ∈ ` : 1 ≤ a ≤ n, ggT(a,n)=1 } |. In Worten könnte man die eulersche ϕ -Funktion wie folgt definieren: Für eine natürliche Zahl n definieren wir den Funktionswert ϕ (n) als die Anzahl der zu n teilerfremden (d.h. ggT(a, n) = 1) natürlichen Zahlen, die nicht größer als n sind. Ein Beispiel wird dieser scheinbar schwierigen Funktion leben einhauchen. Beispiel: Wir berechnen einige Funktionswerte der ϕ -Funktion: ϕ (1) = 1, ϕ (2) = 1, ϕ (3) = 2, ϕ (4) = 2, ϕ (5) = 4, ϕ (6) = 2 und ϕ (15) = 8. ϕ (4) = 2, da gilt ggT(1, 4)=ggT(3,4)=1. Insgesamt sind also 2 natürliche Zahlen kleinergleich 4 teilerfremd zu 4. , Insbesondere gilt folgender Satz 4.1: (Multiplikative Funktion) Die eulersche ϕ -Funktion ist multiplikativ. Sind die natürlichen Zahlen n und m teilerfremd (d.h. ggT(n,m)=1), so gilt die Funktionsgleichung: f(mn)=f(m)f(n) www.mathematik-netz.de © Copyright, Page 10 of 12 Ein Beweis ist recht umfangreich, wir verweisen deshalb auf das Skript „Mathematische Grundlagen der Kryptographie“ von Frau Prof. Dr. Luise Unger, Satz 4.4.5, o.a. Bemerkungen: (i) Für jede Primzahl p gilt: ϕ (p) = (p-1). (ii) Für jede natürliche Potenz einer Primzahl p gilt: ϕ (pn) = pn-1(p-1). (iii) Hat man die Primfaktorzerlegung von m= r ∏ pν k =1 r r ( ) ∏ p ν (p ϕ (m) = ∏ ϕ pkνk = k =1 k −1 k =1 k k k k (pk verschiedene Primzahlen, νk ∈ ` ), so ist − 1) . D.h. will man den Funktionswertes ϕ (m) einer beliebigen natürlichen Zahl m bestimmen, so ist es notwendig vorher die Primfaktorzerlegung zu bestimmen. , Nun also kommen wir zum zentralen Satz des Dokumentes und der entscheidenden Folgerung, welche uns verrät, warum der RSA-Algorithmus funktioniert. Satz 4.2: (Kleiner Satz von Fermat) Sei p eine Primzahlen, und sei a ∈ ` mit ggT(a, p)=1. Dann gilt p-1 a mod p = 1 ⇔ p-1 p | (a -1) Der kleine Satz von Fermat kann mit dem Satz von Euler bewiesen werden, denn Satz 4.2 ist ein Speziall dieses Satzes. Wir erinnern uns nochmals an die Verschlüsselung und Entschlüsselung der Nachricht M: e Verschlüsselung: Entschlüsselung: ⇒ d e d S:= M d M=S ed S = (M ) = M . Nun müssen wir uns noch daran erinnern, dass d –nach Voraussetzungen- das modulare Inverse zu e ist, genauer gilt: ed mod ϕ (n) = ed mod(p-1)(q-1) = 1. Der Wert ed ist also in der Restklasse 1 von ] / ϕ(n)] enthalten. Deshalb ist ed ein Vielfaches von k ϕ (n)+1 und deshalb gilt auch ed mod ϕ (n) = [k ϕ (n)+1] mod ϕ (n) = [k(p-1)(q-1)+1] mod ϕ (n). Nun ist klar, warum der nun folgende Satz beweist, dass die Entschlüsselung funktioniert. Folgerung 4.3: (RSA) Seien p und q zwei verschiedene Primzahlen, und sei m eine natürliche Zahl ≤ pq. Dann gilt für jede natürliche Zahl k: Mk(p-1)(q-1)+1 mod pq = M. www.mathematik-netz.de © Copyright, Page 11 of 12 Beweis: Wir zeigen die Behauptung in zwei Schritten. Zunächst beweisen wir, dass - Mk(p-1)(q-1)+1 mod p = M Mk(p-1)(q-1)+1 mod q = M und unter obigen Voraussetzungen gilt. Die Behauptung Mk(p-1)(q-1)+1 mod pq = M folgt dann durch Zusammenführung beider Gleichungen, dies erledigen wir im dritten Schritt. Schritt p: Mk(p-1)(q-1)+1 = M ⋅ Mk(p-1)(q-1) = M ⋅ (M(p-1))k(q-1) = M ⋅ (M(p-1))k(q-1) | Potenzregel: | Potenzregel: xa+1 = x ⋅ xa xab = (xa)b An dieser Stelle halten wir kurz inne, und erinnern uns an die Aussage des kleinen fermat’schen Satzes. Dieser proklamiert, dass für eine Primzahl p und eine natürliche Zahl M, welche stets teilerfremd sein p-1 geteilt durch p stets den Rest 1 ergibt. Es gilt offensichtlich ggT(M, p)=1 müssen, die Zahl a (warum?). Teilen wir also unsere letzte Gleichung durch p so erhalten wir: = M ⋅ 1k(q-1) mod p mod p =M Schritt q: | kleiner Satz von Fermat | 1a = 1 ⋅ 1 ⋅ … ⋅ 1 (a –mal) = 1 Dieser Schritt verläuft analog zu Schritt p. Tausche in Schritt p überall p mit q – fertig. Schritt n=pq: In diesem Schritt führen wir nun die gewonnen Erkenntnisse zusammen. Dazu sei h:= k(p-1)(q-1)+1, dann gilt - Mh mod p = M Mh mod q = M. und Addieren wir -M zu beiden Gleichungen, so folgt daraus - (Mh mod p) – M = 0 (Mh mod q) – M = 0. und Diese Gleichung sagt aus, dass bei einer Division mit p bzw. q der Rest 0 überbleibt, wenn man nach Division –M zur entstandenen Gleichung addiert. D.h. im Umkehrschluss, dass p|(Mh – M) und q|(Mh – M). Die beiden Primzahlen p und q teilen also dieselbe Zahl. Da p und q verschiedene Primzahlen sind, muss dann auch ihr Produkt pq die Zahl z teilen. Wenn wir das wieder zurückübersetzen, erhalten wir die Aussage , (Mh – M) mod pq = 0 ⇔ Mh mod pq = M. Wir fassen also zusammen: Erzeugung der Schlüssel des Empfängers (Alice): 1. Alice wählt sich zufällig zwei große Primzahlen p und q. Dies ist nach dem Primzahlsatz (2.4) mit effizient möglich. 2. Daraus berechnet Alice das Produkt n=pq und ϕ (n)=(p-1)(q-1). 3. Alice wählt zufällig den Verschlüsselungs-Exponenten e, so dass gilt ggT(e, n)=1. Auch diese Berechnung ist effizient möglich. www.mathematik-netz.de © Copyright, Page 12 of 12 4. Alice stellt den öffentlichen Schlüssel (n, e) zur Verfügung. 5. Alice erzeugt den Entschlüsselungs-Exponenten d, dabei muss d gerade das Inverse [modulo n] sein. Zur Berechnung verwenden wir den erweiterten euklidischen Algorithmus, welcher auf dem Lemma von Bézout basiert. 6. Alice bewahrt ihren privaten Schlüssel (pq=n, d). Chiffrierung der Nachricht M durch den Absender (Bob): 1. Erzeugung des numerischen Äquivalents. e 2. Berechnung von: S:= M , wobei e gerade der Verschlüsselungs-Exponent von Alice ist. Dechiffrierung der Nachricht S durch den Empfänger (Alice): e d ed 1. Berechnung von: Sd = (M ) = M . 2. Zurückübersetzung des numerischen Äquivalents. Weiterhin viel Spaß mit der Mathematik! http://www.mathematik-netz.de http://www.mathering.de