Bernd Borchert Univ. Tübingen WS 13/14 Vorlesung Kryptographie Teil 4b Diffie-Hellmann, Authentisierung
Diffie-Hellmann Schlüsselaustausch - Verfahren, mit dem sich zwei Parteien einen gemeinsamen Schlüssel vereinbaren können - seit 1976, aber immer noch gängig, insbesondere Teil von SSL (https) - Vorgänger von El-Gamal, beruht auf Komplexität von Diskreter Logarithmus - Fast immer als erste von 2 Stufen genutzt: Zuerst gemeinsamen Schlüssel bestimmen und dann mit diesem symmetrischen Schlüssel verschlüsselt gegenseitig die Nachrichten verschicken - Schwäche: Anfälligkeit gegenüber Man-in-the-Middle Angriff
Primitivwurzel Eine Primitivwurzel einer Zahl p ist eine Zahl r < p, so dass die p-1 Potenzen r 1 mod p, r 2 mod p,, r p-1 = 1 mod p alle voneinander verschieden sind, oder mit anderen Worten, alle Zahlen 1,...,p-1 darin vorkommen. Beispiel: 3 ist Primitivwurzel von 5, denn 3 1 mod 5 = 3, 3 2 mod 5 = 4, 3 3 mod 5 = 2, 3 4 mod 5 = 1. Beispiel: 2 ist nicht Primitivwurzel von 7, denn 2 1 mod 7 = 2, 2 2 mod 7 = 4, 2 3 mod 7 = 1. Ab da Wiederholung, d.h. 3,5,6 kommen nicht vor. Einfachste Methode, um große p und r zu finden: suche zufällig Primzahl q und teste, ob auch p=2q+1 eine Primzahl ist (p heißt Sophie-Germain Primzahl). Wenn ja, dann sind alle Zahlen r < p Primitivwurzel von p. r zufällig wählen!
Beispiel Primitivwurzel p=11, Primitivwurzel r = 7 0 10 1 2 9 3 8 7 6 5 4 Der neue Kreis mit p-1 Elementen irrt scheinbar zufällig in dem Kreis 1,...,p-1 hin und her.
Diffie-Hellman Schlüsselvereinbarung a, s = (g b ) a p, g, g a, g b b, s = (g a ) b A B 1. Einer der beiden legt eine Primzahl p und eine Primitivwurzel g fest und schickt p und g dem anderen. Das darf jeder sehen. 2. A erzeugt sich zufällig eine Zahl a<p und B eine Zahl b<p. Diese beiden Zahlen bleiben geheim. D.h., A wird b niemals kennen, und B a nicht. 3. A berechnet g a mod p und schickt g a mod p über den öffentlichen Kanal an B, und B schickt g b mod p an A. Reihenfolge spielt keine Rolle 4. A berechnet s= (g b ) a mod p, und B berechnet s' = (g a ) b mod p. s und s' sind wegen s = (g b ) a = g (ba) = g (ab) = (g a ) b = s' identisch und s=s' ist damit das gemeinsame Geheimnis, das A und B jetzt haben, aber niemand anders kennt. 5. Mit s als als symmetrischem Schlüssel, z.b. als AES256 Schlüssel, kann jetzt A verschlüsselte Nachrichten über den öffentlichen Kanal an B schicken, die B dann entschlüsseln kann, aber niemand anders, und umgekehrt.
Schwächen Diffie-Hellman a, s = (g b ) a p, g, g a, g b b, s = (g a ) b A B 1. Wenn ein schneller Algorithmus für Diskreter Logarithmus gefunden wird, ist DH gebrochen. Genau genommen reicht sogar ein schneller Algorithmus für das folgende Berechnungsproblem: Gegeben p, g, g a mod p, g b mod p, was ist g ab mod p? 2. Der Zufallsgeneratoren bei der Generierung von a und b müssen unvorhersehbar sein. 3. Größtes Problem von Diffie-Hellman ist der Man-in-the-Middle Angriff: a, s = (g z ) a p, g, g a, g z p, g, g z, g b b, t = (g z ) b A M B z, s = (g a ) z, t = (g b ) z Der Angreifer M setzt sich beim Schlüsselaustausch zwischen A und B, generiert eine Zufallszahl z<p und spielt dann A gegenüber B, und B gegenüber A. So tauscht M mit A einen Schlüssel s aus und mit B einen Schlüssel t. A und B bemerken die Anwesenheit von M nicht. Wenn dann A eine mit s verschlüsselte Nachricht an B schickt, entschlüsselt M die Nachricht mit s, verschlüsselt sie mit t, um sie dann an B weiterzuschicken, und umgekehrt. M kann also nicht nur alle Nachrichten abhören, sondern auch abändern. Einziger Trost, was diesen Angriff angeht: M muss dauerhaft den Kanal besetzen, um abzuhören bzw. zu manipulieren, und A und B merken, dass etwas nicht stimmt, wenn M nicht mehr dazwischen ist bzw. sie sich auf einem anderen Kanal verschlüsselte Nachrichten zuschicken.
Authentisierung Bislang ging es fast nur um das Thema Privacy, d.h. Ver- und Entschlüsselung. Zwei weitere wichtige Themen der Kryptologie für die Praxis sind aber auch Authentisierung und Signierung. Beim Thema Authentisierung geht es darum, dass der richtige Benutzer sich als solcher zu erkennen gibt. Beispiele: Passwort, Zutrittskarte, Fingerabdruck.
Die drei Authentisierungs-Faktoren Faktor Wissen: etwas, was der richtige Benutzer weiß: Passwort, PIN, etc. Faktor Haben: etwas, was der richtige Benutzer bei sich hat: Zutrittskarte, gespeicherter Schlüssel, z.b. auf dem Handy, etc. Faktor Sein: etwas, was der richtige Benutzer körperlich hat: Fingerabdruck, Gesichtserkennung, etc.
Gehashte Passwörter Das Benutzername/Passwort Verfahren (Faktor Wissen) ist mit weitem Abstand das gängigste Authentisierungsverfahren, insbesondere im Internet, aber auch in lokalen Netzen. Passwörter können bei der Übertragung abgehört werden, insbesondere bei der Eingabe auf dem Endgerät (Keylogger) dort ist praktisch keine Abwehr möglich (zumindest nicht ohne einen weiteren Faktor Haben). Bei der Übertragung durch das Netz zum Server schützt aber die Verschlüsselung der Sitzung (https). Um sich gegen Diebstahl der Identitäten (=Benutzername+Passwort) beim Server zu schützen, werden die Passwörter beim Server fast überall gehasht abgespeichert (Defintion hashen ein paar Folien später). So muss der Dieb der Passwort-Datei die Passwörter zumindest ent-hashen, was bei guten Passwörtern (zufällig gewählt und aktuell so ab Länge 10) schwer bis unmöglich ist. Für die Überprüfung des vom Benutzer eingegebenen Passworts reicht dem Server die Speicherung des Hashwerts, denn das aktuell empfangene Passwort wird gehasht und dann mit dem gespeicherten Hashwert verglichen.
Faktor Haben Authentisierung id Login id Ein einfaches Faktor-Haben Authentisierungsverfahren ist ein gespeicherter Identifikator. Z.B. kann eine Karte per Kontakt oder Funk einen Identifikator versenden, der für die Authentisierung ausreicht. Ein offensichliches Problem dabei ist, dass der Identifikator nur einmal abgehört werden muss und schon kann der Dieb sich mit dem kopierten Identifikator authentisieren (wie bei Passwörtern). Deshalb ist bei einem zur Verfügung stehendem Faktor Haben ein sog. Challenge/Response Verfahren (manchmal auch Zero-Knowledge Verfahren genannt, denn der Identifikator bleibt unbekannt) vorzuziehen, siehe nächste Seite.
Faktor Haben Authentisierung: Challenge/Response Verfahren c r Login c r Der Authentisierungs-Server produziert ein nur kurzfristig geltendes Zufallswort (challenge) und es schickt über das Netz zum Endgerät, z.b Kartenlesegerät. Der Benutzer hält seine Karte an das Lesegerät. Die challenge wird von der Karte gelesen und mit dem gespeicherten Schlüssel verschlüsselt. Der Output, auch response genannt, wird an das Kartenlesegerät zurückgegeben, und dieses schickt die response an den Server. Der Server, der auch den Schlüssel gespeichert hat, vergleicht die response mit seinem Verschlüsselsergebnis und gibt bei Übereinstimmung den Zugang frei. Der Schlüssel wird nicht preisgegeben, der Server kann aber dennoch eindeutig (bis auf die Ratewahrscheinlichkeit, abhängig von der response-länge) bestimmen, ob sich der Kartenbesitzer authentisiert hat. Das Verfahren ist auch mit assymmetrischen Schlüsseln möglich. Wegen der Rechenressourcen- Belastung sollte aber vorzugsweise mit einer Hash-Funktion anstatt einer Verschlüsselungsfunktion gearbeitet werden: Die Eingabe für die Berechnung des Hashwerts (=response) ist dabei eine Konkatenation kc des Schlüssels k und der challenge c. Verschlüsselung statt Hashen ist over-engineered: die Entschlüsselbarkeit bringt nichts, kostet aber meistens mehr Rechenressourcen, asymmetrische Verschlüsselung am meisten.
Faktor Sein Anderes Wort für Faktor Sein: Biometrie bzw. biometrische Verfahren. Beispiele für Faktor Sein: Fingerabdruck, Iris, Herzschlag, Gesicht, Stimme, Tippverhalten, etc. Faktor Sein ist eigentlich nur für physische Zugänge (proximity) geeignet. Bei Online Zugängen (remote) besteht das prinzipielle Problem, dass das Endgerät, bzw. ein Virus darauf, eine elektronische Kopie des einmal eingelesenen Faktor Seins einer Person machen kann und sich ab dann als derjenige ausgeben kann, zumindest online. Indirekt könnte der Faktor Sein aber doch für remote Zugänge interessant sein, wenn nämlich der Faktor auf einem Extra-Gerät abgefragt wird, z.b. Karte oder iphone 5s, und erst zusammen mit einem Faktor Haben oder Wissen auf diesem Extra-Gerät den Zugang absichert.