Kryptographische Protokolle Lerneinheit 4: Schlüsselvereinbarung Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2017 8.5.2017
Einleitung Einleitung In dieser Lerneinheit werden Protokolle zur Vereinbarung von Schlüsseln durchgenommen. Die Lerneinheit gliedert sich in folgende Abschnitte: Diffie-Hellman Schlüsselaustausch Berechnung von erzeugenden Elementen Sichere Primzahlen No-Key Protokoll von Shamir Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 2 / 23
Diffie-Hellman Protokoll Das Protokoll wurde von Whitfield Diffie und Martin Hellman im Jahr 1976 vorgestellt. Alice und Bob handeln einen Schlüssel aus, ohne diesen zu übertragen Die Sicherheit des Protokolls beruht auf dem Diskreter-Logarithmus Problem. Voraussetzung: Alice und Bob einigen sich im Vorfeld auf eine Primzahl p und ein erzeugendes Element α von Z p. Die Parameter p und α müssen nicht geheim gehalten werden. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 3 / 23
Ablauf Ablauf des Diffie-Hellman Protokolls Vorbereitung: Alice und Bob einigen sich auf eine Primzahl p und ein erzeugendes Element α von Z p. Ablauf: 1. Alice wählt zufällig ein a Z p, berechnet y A = α a mod p. Anschließend sendet sie y A an Bob. 2. Bob wählt zufällig ein b Z p, berechnet y B = α b mod p. Anschließend sendet er y B an Alice. 3. Alice berechnet k A = y a B mod p und Bob berechnet k B = y b A mod p. Ergebnis: Wenn das Protokoll ordnungsgemäß durchläuft, dann sind k A und k B identisch, denn y a B (α b ) a (α a ) b (y A ) b (mod p). Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 4 / 23
Ablauf Ablauf des Diffie-Hellman Protokolls (Forts.) Sei p eine Primzahl und α ein Generator von Z p Alice Bob Wählt zufällig ein a Z p α a mod p α b mod p Wählt zufällig ein b Z p α ab mod p Geheimer Schlüssel Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 5 / 23
Ablauf Beispiel zum DH Schlüsselaustausch Angenommen, p = 27803 und α = 5 sind die öffentlichen Parameter für einen DH Schlüsselaustausch. Alice würfelt a = 21131 und berechnet 5 21131 mod 27803 = 21420. Anschließend sendet sie Bob diesen Wert. Bob würfelt b = 17555 und berechnet 5 17555 mod 27803 = 17100. Diesen Wert sendet er an Alice. Alice und Bob berechnen schließlich den geheimen Schlüssel 21420 17555 mod 27803 = 17100 21131 mod 27803 = 11134. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 6 / 23
Man-In-The-Middle Attacke Man-In-The-Middle Attacke Alice α a mod p α a mod p Oskar α b mod p α b mod p Bob Oskar sitzt zwischen Alice und Bob und fungiert als Vermittlungsstelle. Oskar ersetzt die Teilschlüssel von Alice und Bob durch seine eigenen. Alice und Bob können zwar ihre Daten mit dem ausgehandelten Schlüssel verschlüsseln, aber keiner kann die Daten des anderen entschlüsseln. Oskar kann alle Daten ver- bzw. entschlüsseln und entsprechend weiterleiten. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 7 / 23
Station-To-Station Protokoll Verbessertes Verfahren Idee: Einsatz von Prüfsummen oder Signaturen Modifiziertes Protokoll: Sei p eine Primzahl und α ein Generator von Z p Alice α a Bob α b, sign B (m B, α a, α b ) sign A (m A, α a, α b ) Alle Berechnungen verstehen sich modulo p m A und m B stehen für den Signaturschlüssel von Alice bzw. Bob Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 8 / 23
Station-To-Station Protokoll Verbessertes Verfahren (Forts.) Bei dem Protokoll handelt es sich um eine Vereinfachung des Station-To-Station Protokolls. Modifikation: Alice und Bob signieren die zu übertragenden Daten Konsequenzen: Alice und Bob können überprüfen, ob die Daten korrekt übertragen wurden. Oskar kann die Nachrichten nicht umbemerkt verändern, da er die Signaturschlüssel von Alice und Bob nicht kennt. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 9 / 23
Sichere Primzahlen Gefahren bei der Parameterwahl Beobachtung: Die Generierung von p und α ist kritisch für die Sicherheit des Diffie-Hellman Protokolls. Ist α kein erzeugendes Element, sondern ein Element mit niedriger Ordnung, dann kann Oskar eine Brute-Force Attacke ausführen. Die Überprüfung, dass α ein erzeugendes Element von Z p ist, ist aufwändig, wenn man nicht die Primfaktorzerlegung von φ(p) kennt. Lösung: Einsatz einer sicheren Primzahl. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 10 / 23
Sichere Primzahlen Sichere Primzahlen Definition. Eine sichere Primzahl ist eine hinreichend große Primzahl p mit der Eigenschaft, dass p = 2q + 1 für eine Primzahl q. Ist p eine sichere Primzahl, dann hat Z p folgende Untergruppe: die triviale Untergruppe {1} die Untergruppe {1, p 1} mit 2 Elementen die Untergruppe mit q Elementen Z p mit 2q Elementen Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 11 / 23
Generierung der öffentlichen Parameter Wie erzeugt man einen Generator? Hilfreiche Fakten: Ist Z n eine zyklische Gruppe, dann ist die Anzahl ihrer Generatoren gleich ϕ(ϕ(n)). Für eine Primzahl p ist die Anzahl der Generatoren von Z p gleich ϕ(p 1). Man kann beweisen, dass ϕ(n) n/6 ln(ln(n)) für alle n. Wenn man also zufällig ein Element α aus Z n zieht, dann ist die Chance gut, dass α ein Generator ist. Die Zahl α Z n ist ein Generator von Z n genau dann, wenn α ϕ(n)/p 1 (mod n) für alle Primteiler p von ϕ(n). Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 12 / 23
Generierung der öffentlichen Parameter Algorithmus zur Generatorerzeugung RandomGenerator(p, p 1, e 1, p 2, e 2,..., p k, e k ) Input: Primzahl p, Primfaktorzerlegung p e 1 1 pe 2 2... pe k k Output: Generator α von Z p 1 found := false; 2 while (found = false) do 3 α := Random(2, p 1); 4 found := true; 5 for i := 1 to k do 6 b := α p 1/p i mod p; 7 if (b = 1) then found := false; 8 return α; von ϕ(p) Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 13 / 23
Generierung der öffentlichen Parameter Berechnung der DH-Parameter GenerateDHParams(n, s) Input: Natürliche Zahl n, Qualitätsparameter s Output: n-bit Primzahlen p, q mit p = 2q + 1, Generator α von Z p 1 found := false; 2 while (found = false) do 3 p := Random(2, 2 n 1); 4 if p ungerade then 5 q := (p 1)/2; 6 found := MillerRabinTest(p, s) and MillerRabinTest(q, s); 7 α = RandomGenerator(p, 2, 1, q, 1) 8 return (p, q, α); Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 14 / 23
Einsatz einer kleinerern Untergruppe Einsatz einer kleineren Untergruppe Nachteil der Verwendung einer sicheren Primzahl ist der hohe Aufwand bei der Berechnung der modularen Exponentiationen. Ist p eine n-bit Primzahl (und somit q eine (n 1)-Bit Primzahl), dann benötigt eine modulare Exponentation im Mittel 3n/2 Multiplikationen. Ein gängiger Ansatz zur Verminderung des Aufwands besteht im Einsatz einer Primzahl p der Form p = Nq + 1, wobei q eine Primzahl ist. Ist p = Nq + 1, dann hat Z p eine Untergruppe der Größe q. Das Element α wird so gewählt, dass es genau diese Untergruppe erzeugt. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 15 / 23
Einsatz einer kleinerern Untergruppe Einsatz einer kleineren Untergruppe Erzeugung der Parameter: 1. Generiere zufällig eine Primzahl q mit 2 255 < q < 2 256. 2. Generiere zufällig eine große gerade Zahl N und überprüfe, ob p = Nq + 1 eine Primzahl ist. Wiederhole diesen Schritt, bis eine Primzahl gefunden wird. 3. Generiere zufällig eine Zahl a {1, 2,..., p 1} und berechne α = a N mod p. α hat die Ordnung q, falls α 1 (mod p), und α q 1 (mod p). Wiederhole diesen Schritt, bis ein passender Wert für α gefunden wird. 4. Lege (p, q, α) als öffentliche Parameter für das Diffie-Hellman Protokoll fest. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 16 / 23
Einsatz einer kleinerern Untergruppe Wahl der Größe von p Frage: Wieviele Bits sollte N bzw. p haben? Dilemma: Je größer p ist, um so sicherer ist das Diskreter-Logarithmus Problem. Je größer p ist, um so aufwändiger ist die Berechnung der modularen Exponentation. Ansatz: Einsatz der Formeln von A. Lenstra und E. Verheul 1, mit denen man passende Schlüssellängen berechnen kann. 1 A. Lenstra, E. Verheul: Selecting Cryptographic Key Sizes. Journal of Cryptography 14(4):255-293, 2001. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 17 / 23
Einsatz einer kleinerern Untergruppe Wahl der Größe von p (Forts.) Ziel: Wahl der Schlüssellänge in Abhängigkeit von der Schutzdauer der verschlüsselten Daten in Jahren. Ergebnis: Schlüssellänge Schutz bis zum Jahr 2048 Bit 2022 3072 Bit 2038 4096 Bit 2050 Warnung: Derartige Abschätzungen sind mit Vorsicht zu genießen. Online-Berechnung über die Web-Page http://www.keylength.com Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 18 / 23
No-Key Protokoll von Shamir Das No-Key Protokoll von Shamir Frage: Wie kann Alice an Bob eine geheime Nachricht senden, ohne dass beide einen Schlüssel vereinbaren? Antwort: Alice und Bob setzen das No-Key Protokoll von Shamir zum Versand der Nachricht ein. Shamir s Idee: Verwende die diskrete Exponentialfunktion f(a, x) = x a mod p als symmetrische Verschlüsselungsfunktion. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 19 / 23
No-Key Protokoll von Shamir Shamir s No-Key Protokoll (Vorbereitung) Alice und Bob einigen sich auf eine große Primzahl p. Diese Zahl muss nicht geheim gehalten werden. Der Nachrichtenraum ist Z p. Alice wählt ein Zahlenpaar (a, a ) so dass a a 1 (mod p 1). Bob wählt ein Zahlenpaar (b, b ) so dass b b 1 (mod p 1). Für alle s Z p gilt: s aa s bb s (mod p). Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 20 / 23
No-Key Protokoll von Shamir Shamir s No-Key Protokoll (Ablauf) Alice Bob Berechnet x = s a mod p x y Berechnet y = x b mod p Berechnet z = y a mod p z Berechnet s = z b mod p Es gilt: z b mod p s aba b ( s aa }{{}) bb s (mod p) =s Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 21 / 23
No-Key Protokoll von Shamir Beispiel für das No-Key Protokoll Alice und Bob einigen sich im Vorfeld auf die Primzahl p = 113. Alice wählt als Schlüsselpaar (a, a ) = (47, 31), Bob das Schlüsselpaar (b, b ) = (61, 101). Es gilt: 47 31 1 (mod 112) 61 101 1 (mod 112) Übertragung der Nachricht s = 20: 1. Alice Bob: 20 47 mod 113 = 58 2. Bob Alice: 58 61 mod 113 = 3 3. Alice Bob: 3 31 mod 113 = 47 Bob berechnet s = 47 101 mod 113 = 20 Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 22 / 23
Zusammenfassung Zusammenfassung Das Diffie-Hellman Protokoll ermöglicht die Vereinbarung eines geheimen Schlüssels über einen unsicheren Kanal. Mittels sicherer Primzahlen lässt sich das Diffie-Hellman Protokoll weiter verbessern. Die von Diffie und Hellman vorgestellten Techniken werden in zahlreichen weiteren Protokollen eingesetzt. Die Erfindung des Diffie-Hellman Protokolls gilt als die Geburtsstunde der Public Key Kryptographie. Prof. Dr. C. Karg (HS Aalen) Kryptographische Protokolle Schlüsselvereinbarung 23 / 23