Kryptographie

Werbung
Kryptographie
Adrian Neumann
Motivation
Das Wort Kryptographie stammt von den griechischen Worten kryptos ( verborgen“) und gra”
phein ( Schrift“) und bezeichnet die Kunst Nachrichten so zu verändern, dass nur bestimmte
”
Menschen sie lesen können.
Seit jeher will man Botschaften übermitteln, die nur vom Empfänger gelesen werden können.
Früher waren die Anwendungen vorallem militärisch oder politisch. Nur die eigenen Feldherren
sollten über die Strategie Bescheid wissen, nur die befreundeten Senatoren in laufende Intrigen
eingeweiht sein.
Heutzutage, insbesondere seit der explosionsartigen Verbreitung des Internets, werden kryptographische Methoden verwendet um Sicherheit und Authentitiztät für allerlei Transaktionen
(z.B. bargeldloses Einkaufen) zu gewährleisten.
Theorie
Ein kryptographisches System besteht aus einer in polynomieller Zeit berechenbaren Funktion
fk (w), die eine Transformation g aus einer Schar T auswählt und sie auf w anwendet. Dabei
bestimmt ein Schlüssel k aus einem Schlüsselraum K, welche der Transformationen angewandt
wird.
Beispiel : Wir bilden eine Menge von Transformationen als Liste von einstelligen Funktionen
a->a in Haskell ab. Der Schlüssel k ist dann offensichtlich die Stelle in der Liste. Wir können uns
also eine Funktion f bauen, die ein k und eine Zahl nimmt und die entsprechende Transformation
anwendet:
transf :: [( a - > a ) ]
transf = [(*) 1 , (*) 2 , (*) 3 , (*) 4]
f :: Int -> Int -> Int
f k n = ( transf !! k ) n
Man muss die Funktion natürlich umkehrbar wählen, damit der Empfänger sie rückgängig machen kann. Dabei sollte es ohne Wissen um k schwer“ sein die Umkehrfunktion zu berechnen,
”
mit k aber leicht (in polynomieller Zeit). Um schwer“ zu formalisieren, brauchen wir ersteinmal
”
eine neue Art von Turingmaschine:
Def : Eine randomisierte Turingmaschine ist eine TM, deren Übergangsfunktion an Hand einer
Wahrscheinlichkeitsverteilung den Folgeschritt wählt. Eine Sprache gilt wie üblich als akzeptiert,
wenn die TM alle Wörter akzeptiert, die in der Sprache sind. Man erlaubt aber Fehler. Sei
0 ≤ < 12
w ∈ L ⇔ P r[M akz. w] ≥ 1 − Jetzt können wir sagen:
$
CC
BY:
\
1
C
Proseminar Theoretische Informatik
Def : Sei M eine randomisierte Turingmaschine mit polynomieller Laufzeit. Schwer“ zu berech”
nen heißt:
∀k∃n : P rM,w [M (g(w)) ∈ g −1 (w)] ≤ n−k mit n = |w|
Für ausreichend lange Wörter wird die Wahrscheinlichkeit, dass M die Umkehrfunktion berechnet beliebig klein.
Das heißt anschaulich, es gibt keine bessere Möglichkeit, als alle Schlüssel durchzuprobieren
(O(cn )), um die Umkehrfunktion zu berechnen. Eine solche Funktion fk (w), die diese Eigenschaften hat, wird trapdoor function genannt.
Um zu zeigen, dass ein Kryptosystem sicher ist, müsste man beweisen, dass es keine Abkürzung
gibt, um den Schlüssel zu finden. Da aber die Schlüsselsuche in NP ist (man kann ja die Umkehrfunktion in polynomieller Zeit berechnen, wenn man k geraten hat), wäre ein Beweis dafür,
dass man den richtigen Schlüssel nicht in polynomieller Zeit finden kann, eine Antwort auf die
Frage ob P = N P . Man weiß also nicht, ob es passende Funktionen gibt.
Es bleibt einem also nichts weiter übrig, als zu zeigen, dass die Schlüsselsuche mindestens so
schwierig ist, wie ein Problem von dem man keine effiziente Lösung kennt (NP-schwere Probleme
zum Beispiel). Da man aber in der Komplexitätstheorie üblicherweise den schlimmsten Fall
annimmt, ist das kein ausreichendes Maß für die Sicherheit, die verschlüsselte Nachricht soll ja
im mittleren Fall auch nicht einfach zu entschlüsseln sein.
Symmetrische Verschlüsselung
Bei symmetrischen Verschlüsselungsverfahren sind die Schlüssel zum Ver- und Entschlüsseln
identisch. Im Allgemeinen gilt, je länger der Schlüssel, desto sicherer die Verschlüsselung. Im
Idealfall ist der Schlüssel genauso lang wie die Nachricht. Es gibt natürlich das Problem, den
Schlüssel sicher zu übermitteln.
RC4
Ein sehr einfaches und relativ sicheres symmetrisches Verfahren zur Verschlüsselung ist RC4.
Obwohl einige Schwächen bekannt sind, verwendet man es auf Grund der einfachen Implementierung bei populären Protokollen wie WEP oder WPA.
Es benutzt einen Pseudozufallszahlengenerator (PRNG), der mit dem Schlüssel initialisiert wird
und dann eine Bytefolge liefert, die mit dem Klartext modulo 256 addiert wird.
Der Zustand des PRNG wird durch ein Array S mit den Zahlen [0..255] festgelegt. In der Initialisierungsphase werden die Zahlen im Array wie folgt permutiert:
for i in 0..255
j = (j+S[i]+key[i % keylength]) % 256
swap(S[i],S[j])
Jetzt benutzt man das Array um Pseudozufallszahlen zu generieren, je eine pro Nachrichtenbyte.
i = 0
j = 0
for (n = 0; n < msg_size; n++)
i = ++i % 256
j = (j+S[i]) % 256
swap(S[i],S[j])
output.add(S[ (S[i]+S[j]) % 256 ])
$
CC
BY:
\
2
C
Proseminar Theoretische Informatik
Wie man sieht, wird der Zustand des PRNGs bei jeder Erzeugung verändert.
Da durch den PRNG ein Schlüsselstrom erzeugt wird, der mit den Klartext verrechnet wird,
zählt RC4 zu den sog. stream cipher Algorithmen. Die andere übliche Art von symmetrischen
Verschlüsselungsalgorithmen sind die block ciphers, die jeweils einen Block (z.B. 128 bit) der
Nachricht verschlüsseln. Wichtige Mitglieder dieser Gruppe sind unter anderem DES und AES.
Asymmetrische Verschlüsselung
Symmetrische Verschlüsselungsverfahren sind heutzutage sehr sicher und schnell. Es bleibt aber
das leidige Problem des Schlüsselaustauschs. Jedes Personenpaar, das miteinander sicher reden
möchte, braucht einen eigenen einzigartigen Schlüssel. Die Anzahl der benötigten Schlüssel steigt
also quadratisch mit der Anzahl der Personen. Gerade in Zeiten des Internets ist das natürlich
völlig inakzeptabel.
RSA
1976 lösten R. Rivest, A. S hamir und L. Adleman das Problem durch die Entwicklung des nach
ihnen benannten RSA Algorithmus. Er benutzt statt eines geheimen Schlüssels ein paar von
Schlüsseln: den öffentlichen, der aller Welt bekannt sein kann, und den privaten, den nur der
Empfänger kennt. Verschlüsselt wird mit dem öffentlichen Schlüssel des Empfängers, entschlüsseln kann man die Nachricht nur mit dem privaten Schlüssel.
Das Verfahren funktioniert so:
1. Schlüsselerzeugung:
(e,N) ist der öffentliche Schlüssel, (d,N) ist der private.
2. Verschlüsseln
C ≡ Ke
mod N
K ≡ Cd
mod N
3. Entschlüsseln
Korrektheit
Wir müssen zeigen:
∀K : K ed ≡ K
mod |{z}
N
p·q
$
CC
BY:
\
3
C
Proseminar Theoretische Informatik
Nach dem chinesischen Restesatz kann man das auseinanderziehen:
∀K : K ed ≡ K
mod p ∧ K ed ≡ K
mod q
p und q kann man vertauschen, deswegen betrachten wir nur p. Wenn die Nachricht K=0 ist,
gilt das ganze offensichtlich. Lediglich bei K 6= 0 müssen wir genauer hinsehen. e,d haben wir
so gewählt, dass
e · d ≡ 1 mod φ(N ) ⇒ e · d = 1 + k(p − 1)(q − 1)
Desweiteren wissen wir, K ed ≡ K mod N ⇒ K ed ≡ K mod p, da p|N . Damit können wir jetzt
K ed
mod p = K 1+k(p−1)(q−1)
mod p
p−1k(q−1)
mod p
=K ∗K
nach dem kleinen Satz von Fermat
= K ∗ 1k(q−1)
mod p
Sicherheit
Man unterscheidet zwischen zwei Problemen
RSAP Mit dem öffentlichen Schlüssel und dem Geheimtext soll der Klartext bestimmt werden
RSAP∗ Mit dem öffentlichen Schlüssel soll der private Schlüssel gefunden werden
Es gilt folgende Reduktionskette:
RSAP ≤p RSAP∗ =p FACTORING
RSAP∗ ≤p FACTORING leicht, denn wenn man N in polynomieller Zeit faktorisieren kann,
kann man den Schlüssel aus den gewonnenen p,q wie oben beschrieben berechnen. Auch die
Umkehrung gilt, man kennt einen randomisierten Algorithmus, der das macht. Aus einem öffentlichen Schlüssel den geheimen zu gewinnen, ist also genauso schwierig, wie das Faktorisieren
von Zahlen. RSAP≤r RSAP∗ ist auch trivial, wenn man den privaten Schlüssel kennt, kann man
ja einfach entschlüsseln. Ob aber auch die Rückrichtung gilt, also dass das Entschlüsseln von
RSA-kodierten Nachrichten so schwierig ist wie Faktorisierung, ist bis heute nicht bekannt. Es
könnte also sein, dass es leichter ist, das RSA Problem zu lösen, als Zahlen zu faktorisieren.
Quellen
• M. Sipser: Introduction to the Theory of Computation
• A. Konheim: Cryptography: A Primer
• Wikipedia: RC4, RSA
• MafI III Skript WiSe 05/06, Dr. Klaus Kriegel
$
CC
BY:
\
4
C
Proseminar Theoretische Informatik
Herunterladen