Kryptographische Grundlagen - Fakultät für Mathematik

Transcrição

Kryptographische Grundlagen - Fakultät für Mathematik
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Kryptographische Grundlagen
Bernhard Lamel
Universität Wien, Fakultät für Mathematik
10. Mai 2007
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Outline
1
Symmetrische Verschlüsselung
2
Asymmetrische Verschlüsselung
3
Praxis
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Verschlüsseln und Entschlüsseln
A und B sind im Besitz eines Schlüssels K und eines
Algorithmus S(K , M), der eine Nachricht M in
verschlüsseln kann:
C = S(K , M) (die “Chiffre”) kann mit Hilfe von K wieder in
M übersetzt werden, M = S −1 (K , C)
Aus C soll weder auf K noch auf M geschlossen werden
können
Alle Schlüssel ausprobieren immer möglich (“Brute-Force”
Attacken); Anzahl der möglichen Schlüssel deswegen
wichtig!
Algorithmen sind öffentlich–Schlüssel sind geheim
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Ein Beispiel–oder warum Algorithmen wichtig sind
A und B einigen sich auf einen 8-Bit Schlüssel, sagen wir,
01010101 = 85, und verschlüsseln ihre Nachricht (eine
Folge von ganzen Zahlen zwischen 0 und 256) mit Hilfe
eines logischen “XOR” (dh 1 wenn die Bits ungleichen
Wert haben, 0 sonst)
Aus {2, 13, 14} = {102 , 11012 , 100010102 } wird so
{87, 88, 91}
Um zu entschlüsseln, nimmt man dann einfach ein XOR
des Schlüssels mit der Chiffre
Problem: Aus Kenntnis des Klartexts M kann auf den Schlüssel
geschlossen werden! (Mögliche Angriffe sollten so teuer sein
wie Brute-Force) Wichtige Verschlüsselungsalgorithmen:
(Triple) DES, Rijndael, Blowfish,. . .
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Wie komme ich an den Schlüssel?
Das Schlüsselverteilungsproblem war schon immer wichtig
(Codebücher, usw)!
Schlüssel sollten geheim bleiben
Persönliche Weitergabe meist schwierig
Vertrauen in dritte Person problematisch
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Der Diffie-Hellman Schlüsselaustausch
A und B einigen sich auf ein Paar (g, p), wo p eine Primzahl ist
und g eine primitive Wurzel.
Hilfe, was heisst das?!?!
Eine Primzahl ist eine Zahl, die nur durch sich selber (und 1)
teilbar ist. Mit den Restklassen modulo p, die durch die Zahlen
0, . . . , p − 1 repräsentiert werden können, rechnet man wie mit
normalen Zahlen, nur um sie zu vergleichen, reduziert man sie
auf ihren Rest, wenn man durch p dividiert. Dass g eine
primitive Wurzel ist, heisst daß g p−1 = 1 ist, aber g j 6= 1 für
j < p − 1. (g erzeugt die multiplikative Gruppe der Restklassen
mod p)
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Restklassen modulo 5
Example
Die Restklassen modulo 5 sind 0, 1, 2, 3, 4. Für die
Exponentiation haben wir:
g
1
2
3
4
g2
1
4
4
1
g3
1
3
2
4
g4
1
1
1
1
Also sind 2 und 3 primitive Wurzeln modulo 5, 1 und 4 nicht.
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Also, A und B haben sich auf (g, p) geeinigt–(g, p) ist öffentlich!
A wählt nun eine geheime Zahl M ≤ p − 1, und bildet g M . B
wählt eine geheime Zahl N ≤ p − 1 und bildet g N . Diese
Zahlen werden nun verschickt. Nun bildet B (g N )M = K , und A
bildet (g M )N = K . A und B befinden sich nun im Besitz von K .
Example
Wir wählen (g, p) = (2, 5). A wählt M = 2 und sendet B 4. B
wählt N = 3 und sendet A 3. Nun bildet A 32 = 4 und B 43 = 4.
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Wie schwierig ist es, N zu finden, wenn man g N kennt?
Es gibt keinen effizienten Algorithmus, um N
auszurechnen–dh man kann im Grunde einfach für jedes j
g j bilden und mit g N vergleichen.
Die Anzahl der Zahlen mit, sagen wir, 300 Stellen ist 10300 ;
wir wählen p in dieser Grössenordnung. Die Grösse von g
ist eigentlich unerheblich. Angenommen, wir können jede
Sekunde 1000000 = 106 Zahlen überprüfen, dann
brauchen wir ungefähr 1050 Sekunden um N zu finden.
Das Universum existiert seit ungefähr 4, 3 ∗ 1017
Sekunden.
Zusammengenommen: Es dauert wirklich, wirklich lange.
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Praktische Probleme
Der öffentliche Schlüsselaustauch ist inherent gegen
"Man-in-the-Middle"-Attacken anfällig
Es ist also notwendig, daß wir uns sicher sind, daß
tatsächlich der gewünschte Kommunikationspartner am
anderen Ende ist!
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Asymmetrische Verschlüsselung-Public Key
Cryptography
A und B befinden sich jeder im Besitz eines privaten
Schlüssels KA (bzw KB ), sowie eines öffentlichen
Schlüssels PA (bzw PB ). Wir identifizieren im folgenden die
Schlüssel mit den durch sie durchgeführten
Verschlüsselungen (i.e. PA (M) ist die Chiffre der Nachricht
M unter dem Schlüssel PA )
Der Verschlüsselungsalgorithmus erfüllt:
K (P(M)) = P(K (M)) = M.
Durch die Kenntnis von P, M, und P(M) kann man nicht auf
K schliessen
Durch die Kenntnis von M und K (M) kann man auch nicht
auf K schliessen
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Mit Hilfe eines solchen Systems lassen sich die Probleme von
vorher ziemlich rasch aus der Welt schaffen.
Private Nachrichten: A sendet B eine Nachricht, indem sie
PB (M) übermittelt. Damit kann nur jemand etwas
anfangen, der KB kennt (also, hoffentlich nur B!)
Authentifizierung des Kommunikationspartners: A
unterschreibt ihre Nachricht, indem sie KA (M) übermittelt.
Diese kann mit Hilfe von PA (bekannt) entschlüsselt
werden–und kann ja nur von A stammen!
Kombination: A schickt einfach PB (KA (M)). Nur B kann
entschlüsseln, und auch sichergehen, daß die Nachricht
von A stammt.
Schlüsselverteilung: Nachdem es möglich ist, mit seinem
privaten Schlüssel die Authentizität eines öffentlichen
Schlüssels zu bestätigen, können (mit Hilfe geeigneter
Infrastruktur, PKI, “Web of Trust”) vertrauenswürdige
öffentliche Schlüssel übergeben werden.
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Der RSA-Algorithmus
Der Schlüssel besteht aus einer Zahl n = pq, die Produkt
von zwei Primzahlen ist, sowie Zahlen d (teilerfremd zu
(p − 1)(q − 1)) und einer Zahl e, die de = 1 modulo
(p − 1)(q − 1) erfüllt
(e, n) ist der öffentliche, (d, n) der private Schlüssel
Verschlüsselt wird M durch C = M e (modulo n);
entschlüsselt wird C durch M = C d (modulo n).
Das Finden des Schlüssels ist so schwierig wie das
Faktorisieren von n in Primfaktoren (und das ist schwer!)
Das Paper von Rivest-Shamir-Adleman kann auf
http://theory.lcs.mit.edu/~cis/cis-publications.html
gefunden werden
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Wie sicher kann das sein?
Um Zahlen zu faktorisieren, muss man–im Grunde–einfach
für alle Primzahlen (bis zu einer bestimmten Grösse)
ausprobieren, ob sie die gegebene Zahl teilen.
Der Primzahlsatz besagt, daß die Anzahl π(N) der
Primzahlen kleiner gleich N asymptotisch N/ ln N ist:
π(N) ≈
N
.
ln N
Die Verteilung der Primzahlen ist extrem irregulär und
unvorhersagbar (zB Primzahlpaare, Satz von Green-Tao)
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Beispiel: OpenSSL und vsftpd
Natürlich brauchen wir OpenSSL–also installieren–ich tippe
apt-get install openssl.
Schlüssel erstellen
openssl req -x509 -nodes -days 365 \
-newkey rsa:1024 \
-keyout /etc/ssl/certs/vsftpd.pem \
-out /etc/ssl/certs/vsftpd.pem
openssl erstellt ein X509 Zertifikat und stellt dazu ein paar
Fragen.
Nun passen wir noch die Konfiguration von vsftpd an
und–übermitteln unsere Passwörter nicht mehr im Klartext!
Praxis
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
Beispiel: SSH
SSH verwendet folgenden Ansatz:
Bei der ersten Kontaktaufnahme übermittelt der Server
seinen Public Key an den Client, welcher ihn mit einer
Datenbasis abgleicht und ihn uU abspeichert
Ist der Key unbekannt, so ist das Verhalten konfigurierbar
Selber erstellt man Keys für ssh mit ssh-keygen. Schlüssel
werden auf Client-Seite mit ssh-agent und ssh-add
verwaltet.
Praxis

Documentos relacionados