Grundlagen der Kryptographie

Grundlagen der Kryptographie
Die Kryptographie, aus dem Altgriechischen „Geheimschrift“ abgeleitet, ist die Wissenschaft der Verschlüsselung von Nachrichten.
Ursprünglich in der Antike eingesetzt, um diplomatischen und
militären Briefwechsel geheim zu halten, entwickelte sich die
Kryptographie zu einer unverzichtbaren Wissenschaft im heutigen
digitalen Informationszeitalter. Neben des ursprünglichen Ziels
der Geheimhaltung von Informationen gibt es heutzutage diverse
Schutzziele für die Sicherheit von IT-Systemen. Grundlage ist das
Kommunikationsystem, welches für alle Kommunikationsarten
zwischen zwei Parteien zutrifft (siehe Abbildung 1). Die klassischen Protagonisten sind „Alice“ und „Bob“, die Nachrichten
austauschen. Ein Angreifer meist „Eve“, „Mallory“ oder „Oskar“
genannt, wirkt auf den Kommunikationskanal zwischen A und
B ein. Je nach Stärke des Angreifers kann er passiv, die Daten
abhören oder aktiv in das Geschehen eingreifen, indem er gesendete Daten manipuliert, selbst Nachrichten schickt und verhindert,
dass gesendete Nachrichten bei dem Empfänger ankommen.
Oskar (O)
Alice (A)
?
Abbildung 1: Modell des
Kommunikationssystems
-
Bob (B)
Durch kryptographische Mechanismen (nicht nur Verschlüsselung) können nun diverse Schutzziele adressiert werden:
• Vertraulichkeit. Nachrichten zwischen A und B können nicht
von O gelesen werden.
8
michael braun
• Integrität. Nachrichten zwischen A und B werden nicht verändert, bzw. A und B können erkennen, ob Daten verändert
wurden.
• Nachrichtenauthentizität. B kann Nachrichten, welche von A
gesendet wurden, zweifelsfrei A zuordnen.
• Teilnehmerauthentizität. B kann die Identität des aktuellen
Kommunikationspartners A zweifelsfrei feststellen.
• Verbindlichkeit. B kann Nachrichten, die von A gesendet
werden, zweifelsfrei einer dritten Partei als Nachrichten von A
nachweisen.
Die kryptographischen Methoden mit welchen man diese
Schutzziele sicherstellen kann, werden in zwei Kategorien eingeteilt: in symmetrische und asymmetrische Verfahren.
Bei dem symmetrischen Ansatz besitzen beide Parteien A
und B denselben geheimen Schlüssel k, welcher vorab über einen
vertraulichen und authentischen Kanal ausgetauscht werden muss.
Bei dem asymmetrischen Ansatz hingegen besitzt jeder Teilnehmer A und B ein eigenes Schlüsselpaar (e, d), bestehend aus
einem öffentlichen Schlüssel e und einem dazugehörigen privaten
Schlüssel d. Der öffentliche Schlüssel eines Teilnehmers wird vor
dem eigentlichen Nachrichtenaustausch über einen authentischen
Kommunikationskanal an den entsprechenden Kommunikationsteilnehmer übermittelt. Im Gegensatz zum symmetrischen Ansatz
muss die Übertragung des öffentlichen Schlüssel nicht geheim sein.
Aufgrund dieser Eigenschaft werden asymmetrische Verfahren
auch als Public-Key-Verfahren bezeichnet.
Wir betrachten nun einige rudimentäre Protokolltypen für
symmetrische und asymmetrische Verfahren, um die genannten
Schutzziele zu erreichen.
Symmetrische Verschlüsselung
Sei „enc“ ein symmetrischer Verschlüsselungsalgorithmus mit
dazugehöriger Entschlüsselung „dec“, d.h. für alle Klartexte m
und alle Schlüssel k gilt die Bedingung dec(k, enc(k, m)) = m. Ein
vertraulicher Nachrichtenaustausch von A nach B ergibt sich also
wie folgt:
public-key-algorithmen
A Schlüssel: k
c := enc(k, m)
B Schlüssel: k
c
≠æ
mÕ := dec(k, c)
Mittels symmetrischer Verschlüsselung wird das Schutzziel der
Vetraulichkeit realisiert. Beispiele symmetrischer Verschlüsselungsalgorithmen mit unterschiedlicher Bitlänge sind die Blockchiffren
DES (Luzifer) bzw. 3DES, AES (Rijndael), Blowfish, Serpent oder
Twofish.
Message-Authentication-Code (MAC)
Ein MAC-Algorithmus „mac“ bestimmt bei Eingabe eines symmetrischen Schlüssels k und einer Nachricht m einen kurzen
(möglichst) eindeutigen Wert t := mac(k, m) fester Länge, welcher charakteristisch für die Nachricht m ist. Wie der Name sagt,
möchte man also mit einem MAC die Nachrichtenauthentizität
feststellen. Da unendlich viele Nachrichten auf eine endliche Menge von Werten einer festen Länge abgebildet werden können, gibt
es nach dem Schubfachprinzip (oder auch Taubenschlagprinzip
genannt), Kollisionen. Mit dem gleichen Schlüssel k gibt es zwei
Nachrichten m und mÕ mit mac(k, m) = mac(k, mÕ ). Da sich dies
mathematisch nicht vermeiden lässt, muss der MAC-Algorithmus
so entworfen werden, dass solche Kollisionen nur mit einer ausreichend niedrigen Wahrscheinlichkeit entstehen. Das Protokoll
zur Überprüfung der Nachrichtenauthentizität mit einem MACAlgorithmus sieht nun wie folgt aus. Beide Seiten benötigen
denselben geheimen Schlüssel k.
Algorithmen zur Berechnung eines Message-AuthenticationCodes basieren meist auf Hashfunktionen oder Blockchiffren.
Symmetrisches Challenge-Response-Protokoll
Bei einem solchen Protokoll geht es darum, dass ein Kommunikationspartner B gegenüber dem anderen Teilnehmer A nachweist,
dass er im Besitz eines geheimen Schlüssels ist ohne explizit den
9
Abbildung 2: Symmetrische
Verschlüsselung
10
michael braun
A Schlüssel: k
B Schlüssel: k
t := mac(k, m)
Abbildung 3: MessageAuthentication-Code
(MAC)
m,t
≠æ
tÕ := mac(k, m)
if tÕ = t then accept
else reject
geheimen Schlüssel zu verraten. Dies dient dem Teilnehmerauthentizität. Der Teilnehmer B zeigt, dass er den für ihn vorgesehenen
geheimen Schlüssel k kennt. Die Idee dieser Challenge-ResponseProtokolle basiert darauf, dass A dem Teilnehmer B eine sogenannte Challenge c schickt, für die B die korrekte Respone r
mit Hilfe des geheimen Schlüssels k berechnen kann. Es wird dabei angenommen, dass r aus c auch nur mit dem dazugehörigen
Schlüssel k berechnet werden kann. Es gibt mehrere Varianten für
Challenge-Reponse-Protokolle. Beispielsweise kann eine symmetrische Chiffre oder ein MAC-Algorithmus verwendet werden. Im
folgenden Protokoll wird eine Verschlüsselungs- und Entschlüsselungsroutine verwendet.
A Schlüssel: k
choose random c
B Schlüssel: k
c
≠æ
r
:= dec(k, r )
if cÕ = c then accept
else reject
cÕ
r := enc(k, c)
Ω≠
Asymmetrische Verschlüsselung
Wie bereits erwähnt besitzt ein Kommunikationsteilnehmer
B ein Paar (e, d) bestehend aus dem öffentlichen Schlüssel e
und dem privaten Schlüssel d. Der öffentliche Schlüssel e wird
vor Beginn der eigentlichen vertraulichen Kommunikation dem
Abbildung 4: Symmetrisches Challenge-ResponseVerfahren
public-key-algorithmen
11
zweiten Kommunikationsteilnehmer A mitgeteilt. Dabei muss
beachtet werden, dass der Schlüssel manipulationsgeschützt an A
übermittelt wird. Der vertrauliche Nachrichtenaustausch von A
nach B geschieht dann wie folgt:
B Schlüssel: (e, d)
A
e
c := enc(e, m)
Ω≠
c
≠æ
mÕ := dec(d, c)
Die verwendete Verschlüsselung bzw. Entschlüsselung erfüllen
für alle Klartexte m die Eigenschaft dec(d, enc(e, m)) = m. Die
Grundidee des asymmetrischen Ansatzes besteht darin, dass
man den öffentlichen Schlüssel e auf nicht vertraulichen Wege
verbreiten kann. Diese Eigenschaft impliziert, dass man mittels
e keine Klartexte aus Geheimtexte berechnen kann und dass
man aus e auch nicht den privaten Schlüssel d gewinnen kann.
Asymmetrische Verschlüsselungsverfahren sind beispielsweise RSA,
ElGamal, oder ElGamal-Varianten auf Basis elliptischer Kurven.
Digitale Signatur
Das Analogon eines MACs für die asymmetrische Situation ist
die so genannte digitale Signatur. Der Kommunikationsteilnehmer
A besitzt das asymmetrische Schlüsselpaar (eÕ , dÕ ). Zunächst
übermittelt A an den Kommunikationsteilnehmer den öffentlichen
Schlüssel eÕ . Anschließend signiert A eine Nachricht m mittels
eines Signaturalgorithmus „sign“ und mittels des eigenen privaten
Schlüssels dÕ . Anschließend wird die Signatur s zusammen mit
der Nachricht m an den Teilnehmer B gesendet. Dieser kann
nun mittels des Verifikationsalgorithmus „verify“ und mittels des
öffentlichen Schlüssels eÕ von A überprüfen, ob die Nachricht m
wirklich von A erstellt wurde.
Dieses Verfahren setzt voraus, dass man mit dem öffentlichen
Schlüssel keine korrekte digitale Signatur erstellen kann oder
aus dem öffentlichen Schlüssel nicht den dazugehörigen privaten
Schlüssel generieren kann. Beispiels für Digitale Signaturverfahren
Abbildung 5: Asymmetrische Verschlüsselung
12
michael braun
A Schlüssel: (eÕ , dÕ )
s := sign(dÕ , m)
B
m,s
≠æ
v := verify(eÕ , m, s)
if v = true then accept
else reject
sind RSA-Signatur, Digital Signature Algorithm (DSA) oder auch
die elliptische Kurvenvariante EC-DSA.
Neben der Nachrichtenauthentizität und Integrität kann man
mit einer digitalen Signatur auch das Schutzziel Verbindlichkeit
realisieren, da nur der Besitzer des privaten Schlüssels eine gültige
Signatur erzeugen kann.
Asymmetrisches Challenge-Response-Protokoll
Ähnlich der symmetrischen Variante geht es bei dem ChallengeResponse-Protokoll hier darum, nachzuweisen, dass man in Besitz
des privaten Schlüssels ist, ohne diesen direkt an den Kommunikationspartner zu übermitteln. Der erste Teilnehmer A übermittelt
eine zufällige Challenge, auf die der zweite Teilnehmer mit einer
entsprechenden Response antwortet. Die gültige Response kann
dabei nur mit dem korrekten privaten Schlüssel von B berechnet
werden. Anschließend verifiziert A die erhaltene Reponse mit dem
öffentlichen Schlüssel von B. Das folgende Protokoll zeigt eine
Variante mit einem asymmetrischen Verschlüsselungsverfahren.
Abbildung 6: Digitale
Signatur
public-key-algorithmen
B Schlüssel (e, d)
A
e
choose random rÕ
c := enc(e, rÕ )
Ω≠
c
≠æ
r
if = r then accept
else reject
rÕ
Ω≠
r := dec(d, c)
13
Abbildung 7: Asymmetrisches Challenge-ResponseVerfahren