4 Kryptologie Übersicht 4.1 Der erweiterte euklidische Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Rechnen mit Restklassen modulo .... .. ... .. ... ... .. ... .. ... .. ... ... 39 4.3 Der kleine Satz von Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4 Das Pohlig-Hellmann-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.5 Das RSA-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 p 38 In der Kryptologie entwickelt man Verschlüsselungsverfahren für Texte, so daÿ diese Klartext nur von befugten Teilnehmern verstanden werden können. Dabei wird ein mit einem Schlüssel e zu einem Geheimtext geleitet. Der Geheimtext C C N verschlüsselt und an den Empfänger darf dabei durchaus von Angreifern eingesehen werden, er muÿ nur so gestaltet sein, daÿ es keine Hinweise gibt, was der ursprüngliche Klartext ist. Der Empfänger entschlüsselt den Geheimtext mit seinem Schlüssel d und erhält den Klartext zurück. Die modernen Verschlüsselungsverfahren benutzen algebraischen Methoden. Wir stellen kurz das Verfahren von Pohlig-Hellman vor das machen wir aber richtig und graben dabei ein biÿchen in anspruchsvoller Mathematik. Das Verfahren von Pohlig-Hellman ist ein der Sender P und der Empfänger sel vereinbart einen Schlüssel e H symmetrisches Verschlüsselungsverfahren, haben vor dem Versenden einer Nachricht Schlüs- zum Verschlüsseln und einen Schlüssel d zum Ent- schlüsseln. Wir brauchen eine groÿe Primzahl p, den erweiterten euklidischen Algorithmus, den kleinen Satz von Fermat und Modulorechnen. Wir beginnen mit dem erweiterten euklidischen Algorithmus. Dazu benötigen wir eine Teiler suggestive Schreibweise: Ist p ∈ Z b ∈ Z, und spricht das so schreibt man p|a p|a und ein p einer ganzen Zahl a, d. h. a = pb teilt a aus. Oenbar gilt die Regel: p | b ⇒ p | r a + s b , r, s ∈ Z . mit 4 Kryptologie 38 4.1 Der erweiterte euklidische Algorithmus Wir unterstellen, daÿ jeder den Fundamentalsatz der Arithmetik kennt: Satz 4.1 (Der Fundamentalsatz der Arithmetik) Jede natürliche Zahl n > 1 läÿt sich auf genau eine Weise als Produkt von Potenzen von Primzahlen p1 < · · · < pr schreiben: n = pν11 · · · pνrr . Man nennt diese Darstellung die kanonische Primfaktorisierung von n. Beispiele. 36 = 22 · 33 . 19110 = 2 · 3 · 5 · 72 · 13. Zerlegen Sie mal die Zahl 395058745832651445264197678006144819960207764603049364541393760515793556265 294506836097278424682195350935443058704902519956553357102097992264849779494 42955603 . Der erweiterte euklidische Algorithmus ist ein mathematisches Verfahren, das den gröÿ- ggT(a, b) zweier natürlicher Zahlen a und b berechnet, Zahlen s und t liefern, die folgende Gleichung erfüllen: ten gemeinsamen Teiler dazu noch zwei ganze und ggT(a, b) = s · a + t · b . Dazu nutzen wir sukzessive Division mit Rest. Beispiel 4.1 ggT(391, 153): 391 = 2 · 153 + 85 153 = 1 · 85 + 68 85 = 1 · 68 + 17 68 = 4 · 17 + 0 Wir bestimmen Wir bestimmen nun die ganzen Zahlen s und rückwärts: 17 = 85 − 1 · 68 17 = 85 − (153 − 1 · 85) = 2 · 85 − 153 17 = 2 · (391 − 2 · 153) − 153 = 2 · 391 − 5 · 153. Damit gilt s=2 und t = −5. t, dabei gehen wir die Rechnungen 4.2 Rechnen mit Restklassen modulo p 39 4.2 Rechnen mit Restklassen modulo p 4.2.1 Restklassen Es sei p eine natürliche Zahl (später wird p eine groÿe Primzahl sein). Für jedes a∈Z setzen wir: a := a + pZ := {a + p k | k ∈ Z} = {a, a ± p, a ± 2p, · · · } . a Restklasse von a modulo p. a und b ganze Zahlen, so sagt man a ist kongruent zu b modulo p und schreibt dafür a ≡ b mod p, falls a = b, d. h., falls a + p Z = b + p Z. Man nennt Sind Es gilt: a≡b Es sei nun p mod a ⇔ a + pZ = b + pZ ⇔ a − b ∈ pZ ⇔ p | (a − b) ⇔ a und b eine beliebige ganze Zahl. Dividiere a = r. a = b) haben bei Division durch a = b p + r, Dann gilt (⇔ a durch p p den selben Rest mit Rest r: 0 ≤ r < p. Damit gilt: Jede ganze Zahl a liegt in einer der r Restklassen 0, 1, . . . , p − 1. Je zwei dieser Restklassen sind auch verschieden, da die Dierenz zweier Zahlen aus {0, 1, . . . , p − 1} niemals durch p teilbar sein kann. Also haben wir begründet: Satz 4.2 Es gibt genau p verschiedene Restklassen modulo p, nämlich 0, 1, . . . , p − 1. Man nennt Zp := {0, 1, 2, · · · , p − 1} die Restklassengruppe Beispiel. Im Fall p=5 modulo p, es gilt |Zp | = p. gilt etwa 17 = 2, 29 = 4 = −1, −24 = 1 = 6 . Weiterhin ist Z5 = {0, 1, 2, 3, 4} . Z. B. gilt 98 ∈ 3. 4 Kryptologie 40 4.2.2 Addition und Multiplikation von Restklassen Wir addieren und multiplizieren Restklassen wie folgt: a+b=a+b a·b=a·b Beispiel. Wir betrachten wieder den Fall p = 5, es gilt hier z. B.: 0 + 1 = 0 + 1 = 1, 2 + 2 = 4, 3 + 4 = 7 = 2, 0 · 1 = 0 , 2 · 2 = 4 , 3 · 4 = 12 = 2 , 2 3 4 2 2 5 4 2 = 4 , 2 = 8 = 3 , 2 = 2 · 2 = 16 = 1 , 2 = 2 · 2 = 2 . Weiterhin kann die folgenden Regeln einfach nachprüfen: Es gilt: ∀ a, b ∈ Zp : a + b ∈ Zp und a · b ∈ Zp (Abgeschlossenheit), ∀ a, b, c ∈ Zp : (a + b) + c = a + (b + c) (Assoziativität bzgl. +), ∀ a, b, c ∈ Zp : (a · b) · c = a · (b · c) (Assoziativität bzgl. ·), ∀ a, b, c ∈ Zp : a · (b + c) = ab + ac) (Distributivität). Beispiel. Wir stellen für den Fall p=7 die Verknüpfungstafeln für die Addition und Multiplikation auf. Die Querstriche lassen wir weg, wir schreiben also damit sind wir beim a statt Modulorechnen : + 0 1 2 3 4 5 6 · 0 1 2 3 4 5 6 0 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 0 1 0 1 2 3 4 5 6 2 2 3 4 5 6 0 1 2 0 2 4 6 1 3 5 3 3 4 5 6 0 1 2 3 0 3 6 2 5 1 4 4 4 5 6 0 1 2 3 4 0 4 1 5 2 6 3 5 5 6 0 1 2 3 4 5 0 5 3 1 6 4 2 6 6 0 1 2 3 4 5 6 0 6 5 4 3 2 1 4.3 Der kleine Satz von Fermat Wir begründen nun den kleinen Satz von Fermat, dieser Satz besagt: Satz 4.3 (Der kleine Satz von Fermat) Für jede Primzahl p gilt ap−1 = 1 für alle a ∈ {1, 2, · · · , p − 1}. a und 4.4 Das Pohlig-Hellmann-Verfahren Beweis: Für ein beliebiges 41 a ∈ Zp \ {0} sind die p−1 Restklassen a 1 , a 2, . . . , a p − 1 alle verschieden. Aus ax = ay folgte nämlich ax − y = 0, sodaÿ p - a. p | a (x − y). Wegen des Fundamentalsatzes der Arithmetik folgt p−1 da x = y. Damit haben wir aber Folglich sind die p | x − y, Restklassen a 1 , a 2, . . . , a p − 1 wieder die p−1 Restklassen 1 , 2, . . . , p − 1 , nur evtl. in einer anderen Reihenfolge. Wir erhalten ap−1 p−1 ∏ k= k=1 Kürzen von p−1 ∏ k p−1 ∏ ak = k=1 p−1 ∏ k. k=1 liefert die Behauptung. k=1 Beispiel. 4 2 4 3 4 4 4 4 Wir betrachten wieder den Fall p = 5, es gilt: = 16 = 1, 2 2 = 9 = 4 = 16 = 1, 2 2 = 16 = 1 = 1, 2 2 = 16 = 1 = 1. 4.4 Das Pohlig-Hellmann-Verfahren Das Pohlig-Hellman-Verfahren ist ein symmetrisches Verschlüsselungsverfahren, das bei einer guten Wahl der Primzahl als sicher erachtet werden kann. p in der Gröÿenordnung von 512 Bit heutzutage 4 Kryptologie 42 Das Pohlig-Hellman-Verfahren Das Verfahren von Pohlig-Hellman ist ein ren, der Sender P und der Empfänger H symmetrisches Verschlüsselungsverfah- haben vor dem Versenden einer Nachricht Schlüssel vereinbart. Ihre Schlüssel erzeugen die beiden Teilnehmer wie folgt: P P und H p. e ∈ {2, . . . , p−2} mit ggT(e, p−1) = 1. Es ist e der geheime einigen sich auf eine (groÿe) Primzahl wählt eine Zahl P. H bestimmt d ∈ {2, . . . , p − 2} mit e d ≡ 1 (mod (p − 1)) Algorithmus. Es ist d der geheime Schlüssel von H . Schlüssel von Ver- und Entschlüsselung einer Nachricht: N senden. Die Schlüssel e d und haben Der Sender P und H P mit dem euklidischen will an H eine Nachricht wie eben geschildert erzeugt. Nun gehen die beiden wie folgt vor: P stellt seine Nachricht als Element N ∈ Z× p dar. e × P bildet die Potenz C := N in Zp mit seinem geheimen Schlüssel e. P sendet den Geheimtext C an H . H erhält C und berechnet die Potenz C d = N ed = N (beachte Satz seinem geheimen Schlüssel d und erhält so den Klartext N . Bemerkung. Ein Angreifer aber hieraus nicht auf N kann bzw. e den Geheimtext C = Ne zwar ??) mit mitlesen, schlieÿen. Kennt ein Angreifer ein Klartext- (N , C) aus früheren Angrien, so steht er vor dem Problem, aus C = N e den geheimen Schlüssel e zu bestimmen (d erhält er dann Geheimtextpaar der Gleichung leicht mit dem euklidischen Algorithmus). Dieses Problem ist mit den gängigen Algorithmen bei hinreichend groÿem zahlen erhält man mit sogenannten p nicht in kurzer Zeit lösbar. Groÿe Prim- Primzahltests. Eine Codierung einer Nachricht sieht z. B. wie folgt aus: Man setzt = 10, A B = 11, C = 12, D= 14, · · · , Z= 35. N = ICH LIEBE DICH zu N = 18 12 17 21 18 14 11 14..... ∈ Damit wird der Klartext Zp . Beispiel 4.2 p = 11. Für die Zahl e wählen wir e = 3, es gilt ggT(3, 10) = 1. Als d erhalten wir aus dem euklidischen Algorithmus d = 7, es gilt nämlich 7·3−2·10 = 1. Der zu verschlüsselnde Klartext sei N = 4. Wir wählen die Primzahl Verschlüsseln liefert: C mod 3 11 = 4 mod 11 = 64 mod 11 = 9 mod 11 4.4 Das Pohlig-Hellmann-Verfahren 43 Entschlüsseln liefert: C7 mod 7 11 = 9 mod 2 = (9) Die Primzahl p 2 11 = (9 )4 · 9 mod 11 = 4 mod 11 = (4)3 · 9 mod 11 p=N. mod wählt man am besten so, daÿ p−1 2 wieder eine Primzahl ist. Prim- sichere Prinzahlen. Im Allgemeinen ist zahlen mit dieser Eigenschaft nennt man es sehr schwer, sichere Primzahlen in der Gröÿenordnung 512 Bit zu nden, über sichere Primzahlen weiÿ man sehr wenig. Primzahlen ndet man prinzipiell mit sogenannten Primzahltests das ist eine Wissenschaft für sich. Kennt ein Angreifer N e gut gewählt ist: Das schlieÿen, wenn lösen, falls p p und C mit N e = C, so kann er dadurch noch lange nicht auf diskrete Logarithmenproblem ist kaum zu groÿ und geschickt gewählt ist. 4.4.1 Schnelle Exponentiation Wie bildet man die hohen Potenzen Exponentation. Ne und Cd? Mittels der sogenannte schnellen Beim Verfahren von Pohlig-Hellman (und bei vielen anderen kryptograschen Verfahren) muÿ man Potenzen in einer Gruppe G berechnen. Die Aufgabe lautet: Für a ∈ G und n ∈ N bestimme an . Der naheliegendste Ansatz der sukzessiven Multiplikation basiert auf der üblichen Rekursion für Potenzen: an = a an−1 . Dieser Ansatz benötigt n−1 an zu berechnen. Diese Methode ist von n. Die schnelle Exponentiation Operationen, um also exponentiell in der Anzahl log n der Bits basiert auf folgender Rekursion für Potenzen: ( n ) a2 2 , an = ( n−1 )2 a 2 a, falls n gerade, falls n ungerade. Ein dazu äquivalenter, iterativer Algorithmus benutzt die Binärdarstellung von n. In der englischsprachigen Literatur wird der Algorithmus aus naheliegenden Gründen oft als square and multiply der Verknüpfung. bezeichnet. Der Algorithmus benötigt nur die Assoziativität 4 Kryptologie 44 Lemma 4.4 Es sei a ein Element, dessen n-te Potenz zu bestimmen ist. Die Zahl Binärdarstellung gegeben: n= k ∑ mit bℓ 2ℓ n sei dabei in k = ⌊log2 n⌋, bℓ ∈ {0, 1}. ℓ=0 Setze a0 := ab k (i) (ii) =a und ai := ab a2i−1 , 1 ≤ i ≤ k. k−i Dann gilt: ak = a n . Zur Berechnung von an braucht man höchstens rithmus ist also linear. Im Mittel braucht man sogar nur 1.5 log2 (n) 2k Multiplikationen. Der Algo- Gruppenoperationen. Der Algorithmus ist also linear mit kleinen Konstanten. Beispiel 4.3 Der Sender P berechnet mit der schnellen Exponentiation 29 3 in Z257 wegen e = 29 = 24 + 23 + 22 + 20 , also b4 = 1, b3 = 1, b2 = 1, b1 = 0, b0 = 1 vorteilhaft durch Quadrieren und Multiplizieren. Es ist a = 3: 1 a0 = ab4 = 3 = 3 , 1 2 a1 = ab3 · a20 = 3 · 3 = 27 , 1 2 a2 = ab2 · a21 = 3 · 27 = 131 , 0 a3 = ab1 · a22 = 3 · 131 = 199 , 1 2 a4 = ab0 · a23 = 3 · 199 = 69 . Es werden dabei 7 Gruppenoperationen durchgeführt, wir fassen diese zusammen: 29 3 ((( )2 )2 )2 ( )2 1 1 1 0 1 = 3 ·3 ·3 ·3 ·3 . Man beachte, dass die Operation 0 ·3 , dies entspricht einer Multiplikation mit ausgeführt wird. Und H entschlüsselt den Geheimtext 69 wegen d = 53 = 20 + 22 + 24 + 25 und b5 = 1, b4 = 1, b3 = 0, b2 = 1, b1 = 0, b0 = 1 1, nicht 4.5 Das RSA-Verfahren 45 entsprechend durch a0 = 691 = 69 , a1 = 691 · a20 = 63 , a2 = 690 · a21 = 114 , a3 = 691 · a22 = 51 , a4 = 690 · a23 = 31 , a5 = 691 · a24 = 3 . Ein Angreifer kann durch Beobachtung des Stromverbrauchs (oder anderer physikalischer Gröÿen) einer Maschine evtl. auf die Binärdarstellung der Zahl 29 3 ist an der hervorgehobenen Formel für es eine Operation, liegt eine 1 e schlieÿen. Das schön zu erkennen. Liegt eine 0 vor braucht vor, braucht es zwei. Einen solchen Angri nennt man Seitenkanalangri. Man sollte dies bei der Imple- mentierung des Algorithmus beachten. 4.5 Das RSA-Verfahren asymmetrische RSA-Verfahren : Es ist kein Schlüsselaustausch vor dem Versenden der Nachricht Durch eine Modikation des Pohlig-Hellman-Verfahrens erhalten wir das nötig. Der Empfänger R einer Nachricht hat in einem für den Sender Verzeichnis seinen sogenannten öentlichen Schlüssel Ein zugehöriger geheimer Schlüssel d ( (n, e) ( S zugängigen public key ) veröentlicht. private key ) ist nur dem Empfänger R bekannt. Wir schildern die Schlüsselerzeugung: R R R R p ̸= q . berechnet n := p q , φ(n) = (p − 1) (q − 1). wählt ein e ∈ N mit 1 < e < φ(n) und ggT(e, φ(n)) = 1. berechnet d ∈ N mit d e ≡ 1 mod φ(n). wählt zwei (groÿe) Primzahlen Es sind dann (n, e) der öentliche Schlüssel von R und d p, q und φ(n) sind geheim zu halten). der geheime Schlüssel von R (auch die Gröÿen Ver- und Entschlüsselung: des Empfängers S S S R Der Sender besorgt sich den öentlichen Schlüssel und geht wie folgt vor: stellt seine Nachricht als Element C := N e in Zn Geheimtext C an R. bildet die Potenz sendet den S N ∈ Zn dar. mit dem öentlichen Schlüssel e. (n, e) 4 Kryptologie 46 R C = N e und berechnet die Potenz C d = N ed = N Schlüssel d und erhält so den Klartext N . erhält den Geheimtext seinem geheimen med ≡ m mod p 0 ≤ m < n gilt. Dabei haben wir benutzt, daÿ wegen auch m ed ≡ m mod n Bemerkung. Kann ein Angreifer d. h. die Primzahlen Empfänger für alle R p und q A und med ≡ m mod q die (öentlich zugängliche) Zahl p ̸= q faktorisieren, bestimmen, so kann er jeden Geheimtext ebenso wie der entschlüsseln. Sind die Primzahlen p und q aber nur geschickt genug gewählt, so ist es mit den gängigen Verfahren nicht möglich, die Zahl zu faktorisieren. n und mit n in kurzer Zeit