Mathematik für Informatiker B, SS 2012 Donnerstag 3.5 $Id: ring.tex,v 1.13 2012/05/03 15:13:26 hk Exp $ §3 Ringe 3.1 Der Ring Zm In der letzten Sitzung hatten wir die sogenannten Ringe eingeführt, dies waren Mengen A versehen mit einer Addition + und einer Multiplikation ·, die weitgehend die übli” chen Rechenregeln“ erfüllten. Nur bei der Multiplikation hatten wir weder die Existenz eines neutralen Elements der Multiplikation noch die Existenz multiplikativer Inverser gefordert. Hauptsächlich sind wir aber an Ringen mit Eins interessiert, in denen es also doch ein multiplikativ neutrales Element 1 gibt. Wir hatten bewiesen, das in diesem Fall die Einheiten des Rings A eine Gruppe U (A) bilden, die sogenannte Einheitengruppe von A. Dabei ist Einheit“ nur ein Synonym für invertierbares Element“. Wir ” ” wollen und zwei kleine Beispiele anschauen. 1. Sei A = Z12 . Wir hatten bereits gesehen, dass die Einheiten von Z12 gerade die zu 12 teilerfremden Restklassen sind, also U (Z12 ) = {[1], [5], [7], [11]}. Als Multiplikationstabelle der Einheitengruppe U (Z12 ) ergibt sich [1] [5] [7] [11] [1] [1] [5] [7] [11] [5] [5] [1] [11] [7] [7] [7] [11] [1] [5] [11] [11] [7] [5] [1] 2. Nun betrachten wir den Ring A = Z. Eine ganze Zahl a ∈ Z ist eine Einheit von Z wenn es eine ganze Zahl b ∈ Z mit ab = 1 gibt, wenn also a 6= 0 und 1/a ∈ Z sind. Dies bedeutet a = ±1, also ist die Einheitengruppe U (Z) = {−1, 1}. Wir geben jetzt noch zwei Sätze an, die unsere bisherigen Ergebnisse für den Spezialfall des Restklassenrings Zm auswerten. Satz 3.5: Seien a ∈ Z und m ∈ N∗ mit ggt(a, m) = 1. Dann liefert a · i für 0 ≤ i < m paarweise verschiedene Reste modulo m. Weiter existiert genau ein x ∈ Z mit 0 < x < m so, dass [x] das multiplikative Inverse von [a] in Zm ist. Hierfür gilt ggt(x, m) = 1. Beweis: Klar nach Lemma 3 und Lemma 4. Ist m eine Primzahl, so ist jedes a ∈ Z mit 0 < a < m zu m teilerfremd, hat also nach Lemma 3 eine in Zm invertierbare Restklasse [a]. Diese Tatsache hatten wir übrigens auch schon bei den Beispielen für Gruppen in §2 eingesehen. 6-1 Mathematik für Informatiker B, SS 2012 Donnerstag 3.5 Satz 3.6: Ist p eine Primzahl, so gibt es im Ring Zp für jedes a ∈ Zp mit a 6= 0 ein eindeutiges multiplikatives Inverses a−1 ∈ Zp . 3.2 Grundprinzip der RSA-Public-Key Verschlüsselung Die Aufgabe der Krypthographie ist es eine Nachricht in solch einer Weise zu verschlüsseln, dass der vorgesehene Empfänger diese Verschlüsselung leicht rückgängig machen kann, während diese Entschlüsselung für Außenstehende nur unter einem praktisch nicht durchführbaren Aufwand möglich ist. Von einem sehr abstrakten Standpunkt aus, ist solch eine Verschlüsselung eine bijektive Funktion C:A→B von einer Menge A von Klartexten“ auf eine Menge B von Verschlüsselungen“. Die ” ” Menge A beschreibt in der praktischen Durchführung oft nur einzelne Teilpakete der vollständigen Nachricht, diese wird dann in mehrere Pakete aus A aufgeteilt, die dann einzeln verschlüsselt werden. Die Entschlüsselung D ist einfach die Umkehrfunktion D := C −1 : B → A der Verschlüsselungsfunktion C. Die oben genannten Nebenbedingungen, dass D für den vorgesehenen Empfänger leicht“ berechenbar ist, für andere aber nur schwer“ ” ” machbar ist, ist in dieser simplen Beschreibung nicht mit erfasst. Diese Fragen muss man gesondert diskutieren, oft auch auf einer eher heuristischen Ebene. Eine spezielle Sorte von Verschlüsselungsmethoden sind die sogenannten PublicKey Methoden. Bei diesen ist die Verschlüsselungsfunktion C : A → B, und damit auch die Mengen A und B, öffentlich bekannt, und wird nicht geheim gehalten. Dies hat natürlich einige praktische Vorteile, jeder kann verschlüsselte Nachrichten senden ohne das zuvor eine geheime Verschlüsselung ausgetauscht werden muss. Ein spezielles solches Public-Key Verfahren ist das nach R. Rivest, A. Shamir und L. Adleman (1977) benannte RSA-Verfahren. Hier ist eine natürliche Zahl n vorgegeben, und diese gehört zu den Parametern des Verschlüsselungsverfahrens ist also öffentlich bekannt. Für die Mengen A und B verwendet man A := B := U (Zn ) = {a ∈ Z|0 ≤ a < n, ggt(n, a) = 1} die Menge der zu n teilerfremden Reste modulo n, also nach Lemma 3 die Einheitengruppe des Rings Zn . Die Verschlüsselungsfunktion ist die Potenzbildung mit einem festen Exponenten e im Ring Zn . Die Zahl e ∈ N ist öffentlich bekannt, und die Verschlüsselungsfunktion C ist definiert als C(a) = ae mod n für a ∈ A. Wie sich diese Potenzen praktisch berechnen lassen, wollen wir hier nicht besprechen, im Netz finden Sie Unmengen fertige Implementierungen hierfür. Die Zahlen 6-2 Mathematik für Informatiker B, SS 2012 Donnerstag 3.5 n und e müssen natürlich so gewählt werden, dass C überhaupt eine bijektive Abbildung ist. Beim RSA-Verfahren ist es so, dass die Wahl so getroffen wird das auch die Entschlüsselungsfunktion D das Potenzieren mit einem festen Exponenten d ∈ N ist, also D(b) = bd mod n für b ∈ B = A. Diese Zahl d darf natürlich nur dem vorgesehenen Empfänger bekannt sein, kennt man sie so kann man die Entschlüsselung durchführen. Der folgende Satz beschreibt nun wie n, e und d zu konstruieren sind, so das alles klappt. Satz 3.7 (RSA Verfahren) Seien p, q zwei verschiedene Primzahlen. Setze n := pq und m := (p − 1)(q − 1). Weiter sei e ∈ N teilerfremd zu m, also ggt(e, m) = 1. Dann existiert ein d ∈ N mit ed ≡ 1 mod m und die Abbildung C : U (Zn ) → U (Zn ); a 7→ ae ist bijektiv mit der Umkehrfunktion D : U (Zn ) → U (Zn ); a 7→ ad . Dabei gilt U (Zn ) = Z∗n \{[p], [2p], . . . , [(q − 1)p], [q], [2q], . . . , [(p − 1)q]}. Beweis: Dass es ein d ∈ N mit ed ≡ 1 mod m gibt, gilt nach Lemma 3. Nach Aufgabe (14) gibt es genau vier natürliche Zahlen k ∈ N mit k|n = pq, nämlich k = 1, k = p, k = q und k = pq. Für a ∈ Z folgt, dass a und n genau dann einen gemeinsamen Teiler k ∈ N mit k > 1 haben, wenn p|a oder q|a gilt, denn die einzigen Kandidaten für k sind p, q und pq. Die Vielfachen a von p mit 0 < a < n = pq sind genau die Zahlen p, 2p, . . . , (q − 1)p und die Vielfachen a von q mit 0 < a < n = pq sind genau die Zahlen q, 2q, . . . , (p − 1)q. Die anderen Zahlen zwischen 1 und n − 1 sind also gerade die zu n teilerfremden Rest modulo n, also nach Lemma 3 die Einheiten von Zn . Dies ergibt die Aussage über die Einheitengruppe U (Zn ). Da jedes gemeinsame Vielfache von p und q auch ein Vielfaches von n = pq ist, kommt unter den Zahlen 1, . . . , n − 1 kein solches gemeinsames Vielfaches vor, d.h. es ist |U (Zn )| = n − 1 − (q − 1) − (p − 1) = n − p − q + 1 = pq − p − q + 1 = (p − 1)(q − 1) = m. Da die Einheitengruppe U (Zn ) nach Lemma 4.(b) eine Gruppe ist, ergibt der kleine Satz von Fermat §2.Satz 9 jetzt [a]m = [1], d.h. am ≡ 1 mod n für alle a ∈ Z mit ggt(a, n) = 1. Verwenden wir jetzt die Potenzrechenregeln aus §2.3, so ergibt sich für jedes a ∈ Z mit ggt(a, n) = 1 die Gleichung D(C(a)) = (ae )d = aed = (ad )e = C(D(a)), um zu beweisen das D die Umkehrfunktion von C ist, müssen wir also einsehen das aed ≡ a mod n für jedes solche a gilt. Wegen ed ≡ 1 mod m ist m|ed − 1, d.h. es gibt 6-3 Mathematik für Informatiker B, SS 2012 Donnerstag 3.5 eine ganze Zahl k ∈ Z mit ed = 1 + km und wegen e, d, m ∈ N ist auch k ∈ N. Für a ∈ Z mit ggt(a, n) = 1 haben wir damit aed = a1+km = a · akm = a · (am )k ≡ a · 1k = a mod n da wir oben bereits am ≡ 1 mod n eingesehen hatten. Die Primzahlen p und q lassen sich frei wählen. Dann sind die Zahlen n = pq und m = (p − 1)(q − 1) festgelegt und für e hat man wieder die freie Wahl. Die Bedingung ggt(e, m) = 1 konnten wir dabei über den euklidischen Algorithmus leicht nachprüfen. Ist e gewählt, so ist d das multiplikative Inverse modulo m, das wir erneut leicht über den euklidischen Algorithmus berechnen können. Als ein Beispiel betrachten wir einmal p = 3 und q = 7. Dann ist n = 21 und m = 2 · 6 = 12, es gibt also 12 zu n = 21 teilerfremde Reste modulo 21. In diesem kleinen Beispiel können wir diese auch leicht auflisten A = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}. Als zu m = 12 teilerfremde Zahl wählen wir etwa e = 5. Zur Bestimmung von d rechnen wir 12 = 2 · 5 + 2, 2 = 12 − 2 · 5, 5 = 2 · 2 + 1, 1 = 5 − 2 · 2 = 5 − 2 · (12 − 2 · 5) = 5 · 5 − 2 · 12, es ist also d = e = 5. In diesem (kleinen) Beispiel ist also C = D. Die Verschlüsselung, und damit auch die Entschlüsselung, ist gegeben durch die Tabelle a C(a) = D(a) 1 2 4 5 8 10 11 13 16 17 19 20 1 11 16 17 8 19 2 13 4 5 10 20 Der String 8, 19, 11 codiert sich beispielsweise als 8, 10, 2. Dass C = D ist, ist ein reiner Zufall. Normalerweise ist n recht gross, und so etwas passiert nicht. Bei realer Anwendung werden die Primzahlen p und q, und damit auch n recht groß gewählt. Nach Wahl von e erfolgt die Berechnung von d über den euklidischen Algorithmus, und dies ist auch für großes m ohne viel Aufwand machbar. Was müsste ein Angreifer nun tun um nicht für ihn bestimmte Mitteilungen zu entschlüsseln. Die Zahlen n und e sind wie gesagt allgemein bekannt. Um die Entschlüsselung durchzuführen benötigt man die Zahl d, und um diese zu kriegen muss man m kennen. Es ist m = (p − 1)(q − 1) = pq − p − q + 1 = n − (p + q) + 1 und da n bekannt ist, ist die Bestimmung von m also dasselbe wie die Berechnung der Summe p + q. Der Angreifer kann also versuchen n in Primfaktoren zu zerlegen. Es gibt kein bekanntes Verfahren um die Primzerlegung einer großen Zahl n in vertretbarer Zeit zu berechnen. Man geht daher davon aus, dass p und q sicher sind obwohl n = pq 6-4 Mathematik für Informatiker B, SS 2012 Donnerstag 3.5 bekannt ist. Es wäre noch denkbar, dass man vielleicht p + q berechnen kann ohne p und q kennen zu müssen. Das ist aber nicht der Fall, kennen wir nämlich r := p + q und n = pq, so ist ja q = r − p, also n = pq = p(r − p) = pr − p2 und somit p2 − rp + n = 0. Dies ist eine quadratische Gleichung für p, die man als r r r2 p= ± −n 2 4 lösen kann. Kennen wir also die Summe r = p + q, so kommen wir auch leicht an p und q heran, die Bestimmung von m ist also genauso schwer“ wie die Berechnung der ” Primzerlegung von n, und wie gesagt geht man davon aus das diese nicht praktikabel durchgeführt werden kann. 6-5