itsec – ss 2019 – teil 11/asymmetrische verschlüsselung...

16
2 ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung Literatur [11-1] Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne Verfahren der Kryptographie. 4. Auflage, Vieweg 2001 [11-2] Schmeh, Klaus: Kryptografie. dpunkt, 6. Auflage, 2017 [11-3] Schneier, Bruce: Angewandte Kryptographie. Addison-Wesley http://www.schneier.com/ [11-4] Freiermuth, Karin; Hromkovic, Juraj; Keller, Lucia; Steffen, Björn: Einführung in die Kryptologie. Vieweg+Teubner, 2010 [11-5] Buchmann, Johannes: Einführung in die Kryptographie. 5. Auflage, Springer, 2010 [11-6] Burnett, Steve; Paine, Stephen: Kryptographie. RSA Security‘s Official Guide. RSA Press, mitp, 2001 [11-7] Diffie-Hellman Key Agreement Method https://tools.ietf.org/pdf/rfc2631.pdf [11-8] https://de.wikipedia.org/wiki/RSA-Kryptosystem [11-9] https://de.wikipedia.org/wiki/Eulersche_Phi-Funktion

Upload: phamanh

Post on 11-Aug-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

2ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Literatur

[11-1] Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne Verfahren der Kryptographie. 4. Auflage, Vieweg 2001

[11-2] Schmeh, Klaus: Kryptografie. dpunkt, 6. Auflage, 2017

[11-3] Schneier, Bruce: Angewandte Kryptographie. Addison-Wesleyhttp://www.schneier.com/

[11-4] Freiermuth, Karin; Hromkovic, Juraj; Keller, Lucia; Steffen, Björn: Einführung in die Kryptologie. Vieweg+Teubner, 2010

[11-5] Buchmann, Johannes: Einführung in die Kryptographie. 5. Auflage, Springer, 2010

[11-6] Burnett, Steve; Paine, Stephen: Kryptographie. RSA Security‘s Official Guide. RSA Press, mitp, 2001

[11-7] Diffie-Hellman Key Agreement Methodhttps://tools.ietf.org/pdf/rfc2631.pdf

[11-8] https://de.wikipedia.org/wiki/RSA-Kryptosystem

[11-9] https://de.wikipedia.org/wiki/Eulersche_Phi-Funktion

3ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Übersicht

• Ein bisschen Mathematik

• Diffie-Hellman-Verfahren

• RSA-Verfahren (Schulbuchversion)

4ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Euler'sche Φ-Funktion

a und b sind teilerfremd, wenn sie außer 1 keinen gemeinsamen Teilerhaben, d.h. es gilt ggT(a,b)=1.

Beispiel:21=3*7 und 40=2*2*2*5 sind teilerfremd.

Euler'sche Φ-FunktionΦ(n) ist die Anzahl der positiven ganzen Zahlen, die kleiner als n und zu n teilerfremd sind, also einschließlich 1.

Beispiele:Φ(4)= 2, da alle Elemente aus {1,3} teilerfremd zu 4 sindΦ(6)= 2, da alle Elemente aus {1,5} teilerfremd zu 6 sindΦ(7)= 6, da {1,2,3,4,5,6} teilerfremd zu 7 (Primzahl)

Für alle Primzahlen p gilt: Φ(p)= p-1Für alle Primzahlen p und q gilt: Φ(p*q)= Φ(p)*Φ(q) mit ggT(p,q)=1

5ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Satz von Euler

Wenn zwei positive Ganzzahlen a und m teilerfremd sind, also wennggT(a,m)=1, dann gilt:

aΦ(m) ≡ 1 (mod m), mit a>0 und ggT(a,m)=1

Beispiel:m= 5,Φ(5)= 4 mit a=3

a4 (mod 5) = 34 = 3*3*3*3 ≡ 81 (mod 5) = 1

6ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Kleiner Satz von Fermat – noch einmal

Ein Spezialfall vom Euler'schen Satz ist der kleine Satz von Fermat:

ap-1 ≡ 1 (mod p), mit a>0 und ggT(a,p)=1

Das bedeutet auch, dass p-1 auf den Exponenten beliebig oft addiertoder subtrahiert werden kann, ohne die Kongruenz zu ändern.

Dieser Satz bzw. die dadurch ausgedrückte Eigenschaft wird in der Kryptographie oft benutzt.

Es kann aber auch modulo p-1 auf den Exponenten ohne Auswirkungenauf die Kongruenz angewendet werden (folgt aus der Definition vonModulo):

ar ≡ ar mod p-1 (mod p), mit a>0 und ggT(a,p)=1

7ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Diffie-Hellman-Schlüsselaustausch

• Entwickelt Witfield Diffie und Martin Hellman

• 1976: "New Directions in Cryptography"– Verfahren zum Schlüsselaustausch

– Idee der Public-Key-Verfahren, jedoch kein Algorithmus

– Epoche machende Arbeit

Aus: http://de.wikipedia.org/wiki/Whitfield_Diffie http://de.wikipedia.org/wiki/Martin_Hellman

8ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Bemerkungen

In den 90er Jahren gab es Veröffentlichungen von der NSA,dass die Ideen von Diffie-Hellman sowie auch die späteren Public-Key-Verfahren im Rahmen des Echelon-Netzwerkes (NSA, Britische und Australische "Abhör"-Geheimdienste) schon in den 60er Jahren entwickelt und benutzt wurden.

Diese Verfahren wurden jedoch geheim gehalten....

Clifford Cocks vom GCHQ hat 1973 die Grundlagen dazu entdeckt, was bis 1997 geheim gehalten wurde.Nach: http://www.di-mgt.com.au/rsa_alg.html

Siehe auch: http://de.wikipedia.org/wiki/Echelon

9ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Das Verfahren I

Vorbereitung:A und B einigen sich auf eine Primzahl p und eine natürliche Zahl gmit g<p.p und g sind öffentlich.

1) A wählt zufällig x mit x<p2) A berechnet a ≡ gx mod p3) A schickt a an B (öffentlich)4) A erhält b von B (öffentlich)5) A berechnet K

1 ≡ bx mod p

1) B wählt zufällig y mit y<p2) B berechnet b ≡ gy mod p3) B schickt b an A (öffentlich)4) B erhält a von A (öffentlich)5) B berechnet K

2 ≡ ay mod p

K1 = K

2 (!)

10ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Das Verfahren II - Ein Beispiel

Vorarbeiten: g=3 und p=7

(1) A wählt zufällig x=2 mit x<7(2) B wählt zufällig y=5 mit y<7(3) A berechnet a ≡ gx mod 7 -> a ≡ 32 mod 7 ≡ 2 mod 7(4) A schickt a=2 an B (A's öffentlicher Schlüssel)(5) B berechnet b ≡ gy mod 7 -> b ≡ 35 mod 7 ≡ 5 mod 7(6) B schickt b=5 an A (B's öffentlicher Schlüssel)(7) A berechnet K1 ≡ bx mod 7 -> K1 ≡ 52 mod 7 ≡ 4 mod 7

(8) B berechnet K2 ≡ ay mod 7 -> K2 ≡ 25 mod 7 ≡ 4 mod 7

K1 = K2 = 4

11ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Sicherheit von Diffie-Hellman (DH)

• Bitlängen für g, x und y sind frei wählbar - je größer, desto besser; es gibt aber bei der Wahl der Werte einschränkende Regeln (siehe später).

• Vollständiges Durchprobieren ist nicht effektiv, da es schnellere Algorithmen zur Lösung des diskreten Logarithmus gibt:– 512 bit sind viel zu klein

– 1024 bit sind na ja

– 2048 bit sind in Ordnung

– 3000 bit sind zu empfehlen

• Bisher ist kein Verfahren bekannt, das einen 2048 bit-Schlüssel innerhalb eines Menschenlebens knacken konnte.

• DH ist aber für den Man-in-the-Middle-Angriff empfindlich, d.h. es muss eine Authentisierung zusätzlich durchgeführt werden.

12ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Einschränkungen bei der Wahl von g I

• g wird auch Generator genannt.

• Eine Zahl ist dann ein Generator, wenn ihre Potenzierungen jedes Element der Grundmenge außer der 0 ergeben.

• Für die Grundmenge G kann daher geschrieben werden:

G\{0}=⟨g⟩ ={g,g2,g3,g4,...,gn-1}

• gn-1 ist immer 1 (Kleiner Satz des Fermat), dann kann die Folge geschrieben werden: g,g2,g3,g4,...,gn-1,g,g2,g3,g4,...,gn-1,... Daher auch der Name Zyklische Gruppe.

• Das g beim Diffie-Hellman-Verfahren sollte ein Generator sein.Warum?

• Siehe– https://de.wikipedia.org/wiki/Zyklische_Gruppe

– https://de.wikipedia.org/wiki/Erzeugendensystem

– https://de.wikipedia.org/wiki/Primitivwurzel

13ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Beispiele für Generatoren

g Sequenz der Potenzen bei p= 41

1 1

2 2 4 8 16 32 23 5 10 20 40 39 37 33 25 9 18 36 31 21 1

3 3 9 27 40 38 32 14 1 3 9 27 40 38 32 14 1

4 4 16 23 10 40 37 25 18 31 1

5 5 25 2 10 9 4 20 18 8 40 36 16 39 31 32 37 21 23 33 1

6 6 36 11 25 27 39 29 10 19 32 28 4 24 21 3 18 26 33 34 40 35 5 30 16 14 2 12 31 22 9 13 37 17 20 38 23 15 8 7 1

7 7 8 15 23 38 20 17 37 13 9 22 31 12 2 14 16 30 5 35 40 34 33 26 18 3 21 24 4 28 32 19 10 29 39 27 25 11 36 6 1

40 40 1

• In der Tabelle bilden nur die Werte 6 und 7 Generatoren.

• Eine 1, 4 oder 40 für g zu wählen, ist keine gute Idee.

• Der Zyklus bei einem Generator endet immer mit einer 1:gp-1 mod p = 1

14ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Einschränkungen bei der Wahl von g II

• Wenn g kein Generatorelement ist, dann kann durch gx bzw. gy nur eine Teilmenge der Grundmenge beim Potenzieren "benutzt" werden, was dem Angreifer sein Werk erleichtert.

• Extremes Beispiel:

g=1, dann berechnen Alice und Bob a=1 und b=1 unabhängig von ihren gewählten x- und y-Werten.

Das erneute Potenzieren der ausgetauschten Werte führt zu K1=K2=1 als einzig möglichen Wert.

• Starke Primzahl = Eine Primzahl p ist dann stark, wenn die Zahl q= (p-1)/2 auch eine Primzahl ist.

• Satz: Für eine starke Primzahl p ist g ein Generator, wenn g2 mod p<>1 und gq mod p<>1 mit q= (p-1)/2 gelten.

• Damit kann leicht eine Prüfroutine realisiert werden.

Wie lässt sich prüfen, ob eine Zahl ein Generator ist?

15ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Einschränkungen bei der Wahl von g III

g g2 mod p<>1 gq mod p<>1

5 True True

7 True True

10 True True

11 True True

14 True True

15 True True

17 True True

19 True True

20 True True

21 True True

22 False True

p=23 q=11

g=22 ist keinGenerator

Wenn der Kandidat aus der Menge{2,..,p-2} ausgewählt wird, kanndas Prüfen von g2 mod p<>1 weg-gelassen werden, da dies nur beip-1 relevant wird, siehe Beispiel.

16ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Einschränkungen bei der Wahl von x bzw. y

• Alice und Bob können nicht alle Werte von 0 bis p-1 wählen, denn für x = 0 bzw. 1 kommt kein Geheimnis heraus, was leicht einzusehen ist.

• Etwas komplexer ist der Grund dafür, dass auch p-1 für x und y nicht erlaubt sind.

• Also muss für x 1<x<p-1 gelten.

17ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

BSI-Empfehlungen - Diffie-Hellman

• p sollte mindestens 3000 bit lang sein.

• Die zufälligen Werte x und y sollten mind. 250 bit lang sein.

• Die Wahl von g sollte immer ein Generator sein bzw. der Zyklus mindestens 2250 lang sein, d.h. nach 2250 Potenzierungen wiederholen sich die generierten Elemente.

• Für die Primzahl p sollte auch gelten, dass die Zahl (p-1)/2 auch eine Primzahl ist, d.h. p sollte eine starke Primzahl sein.

18ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

RSA-Verfahren

• Entwickelt 1977 aufgrund der Veröffentlichung von Diffie-Hellman

• Erfinder: R. Rivest, A. Shamir, L. Adleman (RSA)

• Verfahren ist im PKCS#1 beschrieben.Siehe: http://de.wikipedia.org/wiki/RSA-Kryptosystem

• Das RSA-Verfahren war bis zum Jahr 2000 patentiert.

Die drei vor längererZeit am MITLinks: Shamir,Mitte: RivestRechts: Adleman

http://www.ams.org/featurecolumn/images/april2006/internet12.jpg

19ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

RSA-Algorithmus I

• p und q sind ungleiche ungerade positive Primzahlen

• n= p*q, dieses n wird RSA-Modul genannt

• e und d werden aus ℕ so gewählt, dass e*d ≡ 1 (mod Φ(n)) ist.

• P aus ℕ ist der Klartext, C aus ℕ ist der Chiffretext:

• Verschlüsseln (1. Anwendung): C = Pe MOD n

• Entschlüsseln (2. Anwendung): P = Cd MOD n

Öffentlicher Schlüssel ist Kp={e,n}

Geheimer Schlüssel ist Ks={d,n}

Schlüsselpaar ist {{e,n},{d,n}}

20ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

RSA-Algorithmus II - Korrektheit

1) Es wurden d und e gewählt, wobei gilt: d*e ≡ 1 (mod Φ(n))also gilt auch: d*e ≡ k*Φ(n)+1und mit P als Plaintext

2) C ≡ Pe (mod n) // 1. Anwendung mit e

3) P' ≡ Cd (mod n) // 2. Anwendung mit d

4) P' ≡ Pe*d (mod n) // C wird ersetzt durch P (Zeile 2)

5) P' ≡ P(k*Φ(n)+1) (mod n) // wegen Zeile 1

6) P' ≡ Pk*Φ(n)*P (mod n) // +1 aus dem Index zum Faktor P

7) P' ≡ (PΦ(n))k*P (mod n) // Produkt der Potenz

8) P' ≡ (1)k*P (mod n) // Euler: aΦ(n)≡ 1 (mod n)

9) P' ≡ P (mod n) // q.e.d.. da P'=P

21ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Bedingungen an P

• Der Plaintext P darf nicht 0 oder 1 oder n-1 sein, da dann keine Verschlüsselungen vorliegen. Warum?

• Der Plaintext P darf nicht größer als n sein, weil dann der Text nach der Entschlüsselung nicht eindeutig ist. Warum?Verschiedene Werte für den Chiffre Text ergeben denselben Plaintext aufgrund der Modulo-Operation.

• Welche Formate bzw. Verfahren angewendet werden regelt folgendes Dokument: PKCS#1 und RFC 8017 https://tools.ietf.org/pdf/rfc8017.pdf

• Siehe dazu auch https://de.wikipedia.org/wiki/Public-Key_Cryptography_Standards

22ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Schlüsselerzeugung (vereinfacht)

1)Wähle zwei zufällige ungleiche Primzahlen p, q

2)Berechne n=p*q und Φ(n)= Φ(p)*Φ(q)= (p-1)*(q-1)

3)Wähle ein e und berechne ggT(e,Φ(n)),falls dies ungleich 1 ist, dann wähle ein neues e (oder neues n)

4)Berechne d mit (d*e) mod Φ(n)=1 bzw. d*e ≡ 1 (mod Φ(n))

5)Öffentlicher Schlüssel ist {e,n}

6)Geheimer Schlüssel ist {d,n}

e darf nicht zu klein gewählt werden,üblich ist der Bereich zwischen 216+1= 65537 und 21824-1.

Die Sicherheit beruht auf der aufwendigen Bestimmungvon p und q anhand von n.

23ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Schlüsselerzeugung (Algorithmus) I

func BigInt generatePrime(int keySize>60,base, delta) { range:= [2**(base-delta),2**(base+delta)]; p:= random(range) with bit0=1 highest2Bits=11; while not isPrime(p){ p:= p+2; } return p;}

• isPrime(p) testet die übergebene Zahl, ob sie eine Primzahl ist. • random() liefert eine Zufallszahl innerhalb des angegebenen

Bereichs.• Der Wert von delta definiert wie "eng" die gelieferten Primzahlen

nebeneinander liegen. Das BSI empfiehlt:0.1< abs(log2p-log2q) <30

• base definiert, um welchen Wert herum die Zufallszahlen liegen.

24ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Schlüsselerzeugung (Algorithmus) II

func BigInt[] generateKeys(nat keySize>530) { delta:= 30; base:= random([500+delta,keySize-delta]); elist:= list[2**16+1,realPrime()]; success:= false; while not success { p:= generatePrime(keySize,base,delta); do { q:= generatePrime(keySize,base,delta); } until p<>q; phiN:= (p-1)*(q-1); foreach e in eList { if ggT(e,phiN)=1 { success:= true; break; } } } d:= invers(e,phiN); return [p,q,n,e,d]; }

Liste von echtenPrimzahlen >2**16+1

Berechnung desmultiplikativenInversen mit eggT()

25ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Bemerkungen I

• Die beiden Grenzwerte zur zufälligen Berechnung von von base sind kritisch; hier ist der untere Wert 500.

• Bei der Faktorisierung liegt zur Zeit der beste Wert bei ca. 800 bit (für n=p*q), also sollte base zwischen [500+delta,…] liegen, so dass n minimal 880 bit lang ist.

• Dieser Wert 500 ist die absolut unterste Grenze, besser sind 1000 oder 1500.

• Für die Wahl von p und q gibt es noch weitere einschränkende Bedingungen, siehe: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf Anhang B.3.4

Diese Einschränkungen beruhen auf bekannten Algorithmen der Gegenseite und erhöhen für diese Algorithmen den Aufwand.

• Aber: das verletzt die Gleichverteilung, besser ist wohl die Schlüssellänge zu vergrößern.

26ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Bemerkungen II - Optimierungen

• Optimierung:

• Falls e eine echte Primzahl ist:

ggT(e,p-1)>1 --> p-1= k*e --> p-1 MOD e = 0 --> p MOD e = 1

foreach e in eList { if ggT(e,phiN)=1 { success:= true; break; }}

foreach e in eList { if ggT(e,p-1)=1 and ggT(e,q-1) { success:= true; break; }}

foreach e in eList { if p mod e<>1 and q mod e<>1 { success:= true; break; }}

Das ist der Grund, warumfür e Primzahlen benutztwerden sollten.

27ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Ein Beispiel

→Wahl: p= 5, q= 17 n= p*q= 85 und e= 3

Φ(n)= Φ(85)= (p-1)*(q-1)= 4*16= 64

d*e ≡ 1 mod 64 mit d= 43da 43*3 ≡ 1 mod Φ(85)

e = 3 und d = 43, d.h. Öffentlicher Schlüssel ist { 3,85} Geheimer Schlüssel ist {43,85}

Beispiel Verschlüsselungm= 2 (Nachricht)C ≡ me mod n, also C≡ 23

→ mod 85 C= 8

Entschlüsselungm' ≡ Cd mod n, also m'≡ 843

→ mod 85 p'= 2

28ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Sicherheit von RSA

• Schlüssellängen– Unter 512 bit nicht zu empfehlen

– 1024 bit nur für Hausgebrauch

– 2048 bit in Ordnung, besser länger

– 3000 bit empfiehlt das BSI

• Erfolgreiche Faktorisierungsattacken

Siehe:http://www.emc.com/emc-plus/rsa-labs/historical/the-rsa-challenge-numbers.htm

155 bit 1999

576 bit 2003

640 bit 2005

768 bit 2009

29ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

BSI-Empfehlungen - RSA

• p und q sollten ähnlich groß, aber nicht gleich sein:0.1< abs(log2p-log2q) <30

• Die Wahrscheinlichkeit, dass p oder q doch keine Primzahlen sind, sollte kleiner als 2-100 sein.

• Die Schlüssellänge von n sollte mindestens 3000 bit lang sein.

• Für e darf kein kleiner Wert, wie z.B. 3, benutzt werden;Werte ab 216+1 bis 21824 sind in Ordnung.

• Falls d gewählt wird, so muss die Bitlänge von d größer als ¼ der Bitlänge von n sein.

• Die Optimierung nach dem Chinesischen Restzahlensatz sollte unterlassen werden, da p und q sicher gespeichert werden müssen.

• Die Nachricht m muss kleiner als n sein.

• Das obige Verfahren ist die Lehrbuch-Variante, die nicht so in der Praxis benutzt werden sollte.

30ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Weitere asymmetrische Verfahren

• Digital Signature Algorithm (DSA)

• Elliptic Curve Cryptography (ECC)

• Cailey-Purser

• ElGamal

• Es gibt ca. 13.000 Variationen bei den Verfahren der Gruppe, die auf den diskreten Logarithmen beruhen.

31ITSec – SS 2019 – Teil 11/Asymmetrische Verschlüsselung

Nach dieser Anstrengung etwas Entspannung....