Kryptographie

Werbung
Kryptographie
Vorlesung 9: Public-Key Verschlüsselung
Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca
[email protected]
1/71
S YMMETRISCHE K RYPTOSYSTEME
Der gleiche Schlüssel
Bei symmetrischen Kryptosystemen sind die Schlüssel zum
Ver- und Entschlüsseln einer Nachricht identisch.
2/71
A SYMMETRISCHE K RYPTOSYSTEME
Verschiedene Schlüssel
Bei asymmetrischen Kryptosystemen unterscheiden sich die
Schlüssel zum Ver- und Entschlüsseln einer Nachricht. Diese
Verfahren werden auch als Public-Key-Verfahren bezeichnet.
3/71
S CHL ÜSSELVERWALTUNG SYMMETRISCHE S YSTEME
1
Ein Schlüssel kann von A gewählt und B physisch
übergeben werden.
2
Eine dritte Partei kann den Schlüssel auswählen und ihn
physisch an A und B ausliefern.
3
Wenn A und B kurz zuvor einen Schlüssel verwendet
haben, kann eine Partei den neuen Schlüssel an die andere
übertragen, der mit Hilfe des alten Schlüssel verschlüsselt
wurde.
4
Wenn A und B beide über eine verschlüsselte Verbindung
zu einer dritten Partei C verfügen, kann C über die
verschlüsselten Verbindungen einen Schlüssel an A und B
übertragen.
4/71
S CHL ÜSSELVERWALTUNG P UBLIC -K EY
Öffentlicher Schlüssel:
1
Öffentliche Bekanntgabe
2
Öffentlich zugängliches Verzeichnis
3
Public-Key-Verwaltung
4
Public-Key-Zertifikate
5/71
G ESCHICHTLICHES
Bis in die 1970er Jahre gab es nur symmetrische
Kryptosysteme, bei denen Sender und Empfänger
denselben Schlüssel besitzen müssen.
Das erste Public-Key-Verschlüsselungsverfahren war das
von Ralph Merkle und Martin Hellman entwickelte
Merkle-Hellman-Kryptosystem. Das MH-Verfahren wurde
1983 von Adi Shamir gebrochen.
Das heute noch verwendete RSA-Verfahren wurde 1977
von Ronald L. Rivest, Adi Shamir und Leonard Adleman
am MIT entwickelt.
6/71
M ERKLE -H ELLMAN K RYPTOSYSTEM
Basiert auf das Rucksackproblem → NP-hartes Problem →
Einwegfunktion!
Rucksackproblem: Aus einer Menge von Objekten, die
jeweils ein Gewicht und einen Nutzwert haben, soll eine
Teilmenge ausgewählt werden, deren Gesamtgewicht eine
vorgegebene Gewichtsschranke nicht überschreitet. Unter
dieser Bedingung soll der Nutzwert der ausgewählten
Objekte maximiert werden.
In der Kryptographie wird häufig eine andere
Entscheidungsvariante betrachtet. Dabei werden nur die
Gewichte betrachtet und es wird gefragt, ob es eine
Teilmenge der Objekte gibt, die einen vorgegebenen
Gewichtswert genau erreicht.
7/71
R UCKSACK -P ROBLEM
Ein Rucksack-Vektor ist eine Menge von positiven,
paarweise verschiedenen ganzen Zahlen:
A = (a1 , a2 , . . . , an ).
Unter dem allgemeinen Subset-Sum Problem wird
folgendes verstanden:
Gegeben ein Rucksack-Vektor A, sowie eine positive ganze
Zahl s, die Summe genannt wird
P
Gesucht ist eine Teilmenge A0 von A mit a0 ∈A0 = s
8/71
S UPERANSTEIGENDE R UCKSACK -V EKTOREN
Das allgemeine Subset-Sum Problem ist NP-vollständig.
Es gibt spezielle Probleme (A, s) die schnell und einfach
lösbar sind.
Definition
Sei A ein Rucksack-Vektor. A ist superansteigend, falls ai größer ist
als die Summe der vorhergehenden aj :
ai > a1 + . . . , ai−1
9/71
S UPERANSTEIGENDE V EKTOREN
Der folgende Algorithmus löst ein Problem (A, s), wenn A
superansteigend ist:
for i := n downto 1
if s ≥ ai then xi := 1 and s := s − ai
else xi := 0
if s != 0 then return (no solution)
else return (x1 , x2 , . . . , xn ).
Dieser Algorithmus durchläuft linear die einzelnen
Elemente von A und hat daher eine Laufzeit von O(n).
10/71
M ERKLE -H ELLMAN K RYPTOVERFAHREN
Superansteigende Rucksack-Probleme sind leicht zu lösen.
Wenn A nicht superansteigend ist, kann das Lösen des
Problems (A, s) äußerst schwierig sein.
Ausgangspunkt ist ein superansteigender Rucksack A.
Dieser ist Teil des privaten Schlüssels.
Ein zweiter Rucksack, B, wird dann aus A konstruiert und
als öffentlicher Schlüssel bereitgestellt. B besitzt die
superansteigende Eigenschaft nicht.
Eine Nachricht p wird chiffriert, indem die Summe
c = pB = p1 b1 + p2 b2 + · · · + pn bn berechnet wird. Dabei ist pi
ist das i-te Bit der Klartextnachricht p.
11/71
S CHL ÜSSELERZEUGUNG
Festlegen des Parameters n. Dieser Parameter gibt an,
wieviele Komponenten die Rucksack-Vektoren A und B
haben. Gleichzeitig wird damit festgelegt, dass n-bit
Nachrichten chiffriert werden.
Erzeuge eine superansteigende Menge A = (a1 , . . . , an )
P
Wähle eine Zahl M, so dass M > i=1...n ai . M ist der
Modulus.
Wähle einen Multiplikanden W mit 1 ≤ W < M und
ggT(M, W) = 1. Diese Wahl von W garantiert ein inverses
Element U mit UW = 1 mod M.
optional: wähle eine Permutation π : {1, . . . , n} → {1, . . . , n}
12/71
S CHL ÜSSELERZEUGUNG
Die einzelnen Komponenten bi des öffentlichen Schlüssels
B werden durch folgende Vorschrift erzeugt:
bi = aπ(i) W
mod M, i = 1, . . . , n.
Die superansteigende Eigenschaft von A wird durch
modulare Multiplikation verschleiert.
öffentlicher Schlüssel ist der Rucksack-Vektor B.
Das Tupel (A, M, W) bildet den privaten Schlüssel.
13/71
V ERSCHL ÜSSELUNG
Der Parameter n legt fest, dass pro
Verschlüsselungsvorgang eine n-Bit Nachricht chiffriert
wird. Daher muss vor Verschlüsselung eine evtl. größere
Nachricht p in n-Bit Blöcke unterteilt werden.
Sei nun p = (p1 , p2 , . . . , pn ) die zu verschlüsselnde binäre
Nachricht. Der Chiffretext c wird durch die Vorschrift
c = pB = p1 b1 + p2 b2 + · · · + pn bn
erzeugt.
Das i-te Element von B wird zu c hinzuaddiert, wenn das
i-te Bit von p Eins ist.
14/71
E NTSCHL ÜSSELUNG
Die Entschlüsselung eines Chiffretextes c erfolgt in zwei
Schritten:
1
2
Berechne c0 = Uc mod M = W −1 c mod M
Lösen des Problems (A, c0 ).
Da A eine superansteigende Menge ist, lässt sich das
Problem (A, c0 ) einfach lösen. Sei X = (x1 , . . . , xn ) der
erhaltene Lösungsvektor für (A, c0 ). Bei Verwendung einer
Permutation ergeben sich die Nachrichtenbits pi aus
pi = xπ(i) . Ansonsten gilt pi = xi .
15/71
P UBLIC -K EY S YSTEME
Formal besteht ein Public-Key-Verschlüsselungsverfahren aus
drei Algorithmen:
Der Schlüsselerzeugungsalgorithmus erzeugt zu einem
gegebenen Sicherheitsparameter ein Schlüsselpaar, das aus
einem öffentlichen und dem dazugehörigen geheimen
Schlüssel besteht.
Der Verschlüsselungsalgorithmus erzeugt aus einem
Klartext unter Verwendung des öffentlichen Schlüssels
einen Geheimtext. Es kann zu einem Klartext mehrere
Geheimtexte geben. In diesem Fall ist der Algorithmus
probabilistisch.
Der Entschlüsselungsalgorithmus berechnet zu einem
Geheimtext unter Verwendung des geheimen Schlüssels
den passenden Klartext.
16/71
V OR - UND N ACHTEILE
Symmetrische Kryptosysteme
+ hohe Geschwindigkeit (z.B. DES 1000 mal schneller als
RSA)
- Problem der Schlüsselvergabe
17/71
V OR - UND N ACHTEILE
Asymmetrische Kryptosysteme
+ öffentlicher Schlüssel darf bekanntgegeben werden
+ privater Schlüssel bleibt geheim
+ digitale Unterschrift
- hoher Rechenaufwand ⇒ niedriger Datendurchsatz
18/71
V OR - UND N ACHTEILE
Lösung:
über ein Public-Key-Verfahren wird sich auf ein
symmetrisches Kryptosystem mit gemeinsamen Schlüssel
geeinigt.
Die Übertragung der Daten erfolgt mit symmetrischer
Verschlüsselung.
19/71
V ORRAUSSETZUNGEN F ÜR ASYMMETRISCHE
K RYPTOSYSTEME
Sei KU der öffentliche Schlüssel und KR der private
Schlüssel, so gilt für jede Nachricht m:
KU(KR(M)) = KR(KU(M)) = m
Der private Schlüssel KR sollte aus dem öffentlichen
Schlüssel nicht zu erschließen sein
20/71
V ERTRAULICHKEIT
21/71
D IGITALE U NTERSCHRIFT
22/71
V ERTRAULICHKEIT UND A UTHENTIZIT ÄT
23/71
RSA: S CHL ÜSSELGENERIERUNG
24/71
RSA: V ER - UND E NTSCHL ÜSSELUNG
25/71
D IE E ULERSCHE φ F UNKTION
Definition
Die Eulersche φ-Funktion gibt für jede natürliche Zahl n an, wieviele
natürliche Zahlen zwischen 1 und n zu ihr teilerfremd sind. Zwei
Zahlen a und b sind zu einander teilerfremd, gdw. ggT(a, b) = 1.
Sei n eine Primzahl, so sind alle Zahlen von 1 bis n − 1 zu n
teilerfremd.
Somit ergibt sich für p und q:
φ(p) = p − 1 und φ(q) = q − 1.
26/71
D IE E ULERSCHE φ-F UNKTION
Die Eulersche φ-Funktion ist multiplikativ.
Für teilerfremde Zahlen, das heißt Zahlen m und n mit
ggT(m, n) = 1, gilt damit:
φ(m · n) = φ(m) · φ(n).
27/71
B EISPIEL
p=7
q = 11
n = 77
φ(n) = (7 − 1)(11 − 1) = 60.
28/71
RSA: S CHL ÜSSELGENERIERUNG
29/71
D ER EUKLIDISCHE A LGORITHMUS
30/71
B EISPIEL
Für den öffentlichen Schlüssel wird eine zu φ(n)
teilerfremde Zahl gewählt.
Wahl: e = 13, denn 1 < 13 < 60 und
ggT(e, φ(n)) = ggT(13, 60) = 1
31/71
RSA: S CHL ÜSSELGENERIERUNG
32/71
D ER ERWEITERTE E UKLIDISCHE A LGORITHMUS
d = e−1 mod φ(n)
de = 1 mod φ(n)
de + φ(n) = 1
ggT(e, φ(n)) = d · e + k · φ(n) = 1
Beispiel:
e = 13, φ(n) = 60, ggT(13, 60) = d · 13 + k · 60 = 1
Mögliche Lösung: d = 37, k= -8
Denn 37 · 13 mod 60 = 1
33/71
V ER - UND E NTSCHL ÜSSELUNG
Definition
Eine Einwegfunktion ist eine leicht zu berechnende Funktion, die
Berechnung ihrer Umkehrung soll unmöglich sein. RSA verwendet
eine Einwegfunktion mit Hintertür (engl. trap door one-way
function), um die Umkehrung der Funktion durch eine
Zusatzinformation und damit die Entschlüsselung zu ermöglichen.
Binäres Potenzieren
Klassisches Potenzieren xn = x . . . x benötigt n − 1
Multiplikationen. Der Aufwand wächst exponentiell zu
der Anzahl der Stellen von n.
34/71
P SEUDOCODE
35/71
B EMERKUNGEN 1
Der Algorithmus ist im wesentlichen, aber doch nicht ganz
optimal. Mit der Theorie der Additionsketten aus der
Zahlentheorie kann man zeigen, dass die durchschnittlich
benötigte Zahl der Multiplikationen sich asymptotisch wie
log n verhält, also nur halb so groß ist.
36/71
B EMERKUNGEN 2
Die unterschiedliche Zahl von benotigten Multiplikationen je
nach Exponent ist Ansatzpunkt der Zeitbedarfs- und der
Stromverbrauchsanalyse (timing attacks, power attacks nach
Paul Kocher), wo ein Gerät, etwa eine Chipkarte, das mit einem
geheimen Exponenten potenziert, analysiert wird, um ihm das
Geheimnis zu entlocken.
37/71
S ATZ VON E ULER -F ERMAT
∀a ∈ Zn .aφ(n) = 1 mod n
Es muss gewährleistet sein, dass das Verfahren auch
umgekehrt funktioniert
38/71
V OR - UND E NTSCHL ÜSSELUNG
39/71
V OR - UND E NTSCHL ÜSSELUNG
40/71
D IE S ICHERHEIT DES RSA-V ERFAHRENS
Die Sicherheit von RSA basiert auf dem Problem, eine
große ganze Zahl in ihre Primfaktoren zu zerlegen
(Faktorisierungsproblem)
Man muss einige Richtlinien beachten, um mit RSA sicher
arbeiten zu können.
41/71
FAKTORISIERUNGSPROBLEM
42/71
FAKTORISIERUNGSPROBLEM
43/71
FAKTORISIERUNGPROBLEM
512-Bit-RSA-Schlüssel sind nicht mehr sicher!
Mindestwert heute: 2048
Empfehlung: 4096!
44/71
R ICHTLINIEN
p und q müssen groß genug sein
p und q unterscheiden sich um wenige Bits in der Länge.
Beispiel: Für ein n mit 1024 Bits sollten p und q etwa 512
Bits groß sein.
p − q darf nicht klein sein (Faktorisierungsangriff)
√
Wenn p − q klein ist , dann p q ⇒ p n.
45/71
R ICHTLINIEN
Starke Primzahlen auswählen
p − 1 hat großen Primfaktor ← Pollard p − 1 Faktorisierung
p + 1 hat großen Primfaktor ← p + 1 Faktorisierungalgorithmus
r − 1 hat großen Primfaktor ← cycling attacks
Random p, q hat gute Eigenschaft im allgemeinen
46/71
A NGRIFFE AUF RSA
Faktorisierung Attack
Brute Force Attack auf dem Privaten Schlüssel
Small encryption exponent e
Forward Search Attack
Small decryption exponent d
Homomorphieeigenschaft
Common modulus Attack
Cycling Attack
Quantum Computer Attack
47/71
FAKTORISIERUNGSATTACK
Primfaktorzerlegung
√ einer natürlichen Zahl. Besonders schnell
wenn p q → p n.
n = a2 − b2 = (a + b) · (a − b) = p · q
48/71
B RUTE F ORCE ATTACK AUF d
Alle möglichen d nacheinander ausprobieren
49/71
S MALL ENCRYPTION EXPONENT e
A sendet einen Klartext M zu B, C, D mit dem Schlüssel
(e, ni ) und e = 3:
ci = m3
mod ni , i = 1, 2, 3
Eve bekommt c1 , c2 , c3 .
Gauss’scher Algorithmus und Chinesischer Restsatz:
∃!x.0 ≤ x ≤ n1 n2 n3
x ≡ c1 mod n1
x ≡ c2 mod n2
≡ c3 mod n3
√
n1 n2 n3 → x = m3 → 3 x
Lösung: Für jedes M verschiedenes Salz verwenden.
50/71
C HINESISCHER R ESTSATZ
Ein großes Problem von Public Key-Verfahren ist die
rechenaufwendige Langzahlarithmetik. Während der
öffentliche Schlüssel bei RSA (in der Praxis oft
e = 3, 216 + 1, . . . ) verhältnismäßig kurz und
Exponentiationen effizient berechenbar sind, hat der
geheime Exponent d die volle Länge des Modulus n, also
in der Praxis etwa 1024-4096 Bit.
Um die notwendigen Exponentiationen auch in
Umgebungen mit begrenzten Ressourcen möglichst
effzient durchführen zu können, bedient man sich in
einigen Implementierungen des Chinesischen Restsatzes
51/71
C HINESISCHER R ESTSATZ
Seien p, q ∈ Z mit ggT(p, q) = 1. Dann gilt:
Zpq ∼ Zp × Zq ,
d.h. die Ringe Zpq und Zp × Zq sind isomorph.
Wir können also, statt in Zn zu rechnen, die Operanden vorher
in die Ringe Zp und Zq abbilden und die Berechnungen
zunächst in diesen Ringen durchführen, was wesentlich
schneller geht, als in Zn .
Anschließend müssen die Teilergebnisse wieder
zusammengesetzt werden.
52/71
L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM
CRT
Der chinesiche Restsatz beschreibt in der Form, wie er oben
angegeben ist, die Existenz einer bijektiven Abbildung
zwischen algebraischen Strukturen. Uns interessiert aber die
konkrete Berechnung einer solchen Abbildung für ein System
aus r simultanen Kongruenzen mit paarweise teilerfremden
Modulen ni (mit dem Ziel, modulare Exponentiationen zu
beschleunigen, wie sie beim RSA vorkommen):
53/71
L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM
CRT
54/71
L ÖSUNG VON SIMULTANEN K ONGRUNZEN MIT DEM
CRT
55/71
B ERECHNUNG VON RSA-S IGNATUREN MIT DEM CRT
56/71
B ERECHNUNG VON RSA-S IGNATUREN MIT DEM CRT
57/71
F ORWARD S EARCH ATTACK
Wenn Cyphertext C zu klein ist, kann Eve ein Wörterbuch
für alle M erstellen.
Lösung: Für kleines M Salz verwenden.
58/71
S MALL DECRYPTION EXPONENT d
Wenn d ≤
n
4
kann man d leicht finden.
Lösung: d sollte fast genauso groß wie n sein.
59/71
H OMOMORPHIEEIGENSCHAFT DER S IGNATUR
Signatur: m Nachricht, d geheimer Exponent, Signatur
sig = md mod n
sig1 sig2 = md1 md2 mod n = (m1 m2 )d mod n
sig3 = sig1 sig2 eine neue Signatur.
Lösung: Benutze Hashwerte!
60/71
B EMERKUNGEN
Praktisch vorkommende Nachrichten liegen nun in der
Regel allerdings nicht in Zn .
Daher wird zur Berechnung einer digitalen Signatur an
Stelle von m oft das Bild einer Hashfunktion x = h(m)
gewäahlt, welches wieder in Zn liegt. Zur Verifi
kation muss dann überprüft werden, ob h(m) = se mod n
gilt.
Beim Einsatz von Hashfunktionen werden weitere
kryptographische Eingeschaften gefordert, wie die
Einweg-Eigenschaft (zu einem gegebenen Bild kann das
Urbild nicht berechnet werden) und die Kollisionsresistenz
(es ist schwierig, zwei Urbilder zu
nden, die auf das gleiche Bild abbilden). Ein Angreifer mit
begrenzter Rechenleistung und begrenztem Speicherplatz
kann diese Eigenschaften also nicht brechen.
61/71
C OMMON MODULUS ATTACK
Jede Person sollte ein unterschiedliches n benutzen, da die
Verwendung des gleichen n’s Risken in sich birgt.
Mit Faktorisierung von n auf p und q, kann A alle
verschlüsselte Nachrichten von B, C, . . . knacken.
62/71
C YCLING ATTACK
63/71
Q UANTUM C OMPUTER ATTACK
Ein Quantencomputer könnte das Faktorisierungsproblem
lösen und sehr schnell die Werte für p und q knacken.
Peter Shor hat einen Algorithmus erfunden, der auf einem
Quantencomputer benutzt werden kann, um RSA zu
knacken.
Dieser Algorithmus wurde auf einem Quanten- computer
ausgeführt und hat RSA für n = 15 mit p = 3 und q = 5
geknackt.
64/71
D IGITALE S IGNATUR RSA
Eigenschaften:
Eindeutigkeit (nur vom Urheber erstellbar)
Von jedem überprüfbar
Stellt die Authentizität des Unterschreibers sicher
Untrennbar mit dem Dokument verbunden bzw. eine
Trennung von Unterschrift und das Dokument ist sofort
erkennbar
65/71
D IGITALE S IGNATUR RSA
Absender generiert einen Hash-Wert (z.B. SHA-1) von der
Datei.
Absender verschlüsselt mit dem Geheimschlüssel (d, n) nur
den Hashwert, und damit hat man die Digitale Signatur:
S = Md
mod n
Empfänger entschlüsselt die Signatur mit dem Public key
(n, e):
M = Se mod n
Der Empfänger generiert mit der gleichen Hash-Funktion
einen Hashwert von dem Dokument.
Der Empfänger vergleicht die zwei Hashwerte und prüft
sie auf Gleichheit.
66/71
RSA A NWENDUNGEN
Internet- und Telefonie-Infrastruktur: X.509-Zertifikate
Übertragungs-Protokolle: IPSec, SSL, TLS, SSH, WASTE
E-Mail-Verschlüsselung: PGP, S/MIME
Authentifizierung französischer Telefonkarten
67/71
Z USAMMENFASSUNG
Asymmetrisches Verschlüsselungsverfahren
Benutzt öffentliche und geheime Schlüssel
Nachrichten können nur von einem Empfänger gelesen,
aber vielen Absendern versandt werden
Algorithmus beruht auf der scheinbaren Unmöglichkeit
der Zerlegung von großen Produkten in Primfaktoren
Verschlüsselung und Entschlüsselung erfolgen nach
einfachen Formeln
Am meisten benutztes Kryptographie-System
Digitale Signaturen
68/71
K RYPTOGRAPHISCHE R ESSOURCEN
Kryptographische Software-Bibliotheken:
libgcrypt (GNU Cryptographic Library)
OpenSSL
Ganzzahl-Arithmetik:
gmp (GNU Multiprecision Library)
Pari-GP
LiDIA
69/71
Achtung: Gewöhnliche Arithmetik-Bibliotheken sollten für
kryptographische Software-Entwicklung nur mit äußerster
Achtsamkeit verwendet werden. Z. B. sollte kryptographische
Software stets dafür sorgen, dass geheime Schlssel niemals,
auch nicht in temporären Dateien oder Auslagerungsdateien,
auf einer Festplatte oder anderen permanenten
Speicherbereichen zwischengespeichert werden. Es gilt als
schwerer Kunstfehler, kryptographische Software für den
ernsthaften Gebrauch selbst zu entwickeln! Jeder macht dabei
fatale Fehler.
70/71
K RYPTOGRAPHISCHE R ESSOURCEN
Freie Computeralgebra-Systeme:
Pari-GP
SIMATH, NZMATH
CoCoA
ARIBAS
SAGE (enthlt PARI, GAP [ein
Gruppentheorie-Programmsystem] und Singular [ein
Programmsystem für Algebraische Geometrie und
Polynomalgebra] sowie Schnittstellen zu Maple,
Mathematica und anderen kommerziellen Systemen). Für
Pari (und MAGMA) gibt es auch einen Online-Zugang.
Kommerzielle Computeralgebra-Systeme: Maple,
Mathematica
71/71
Herunterladen