1. Motivation
Die Authentifizierungsprotokolle
von Needham und Schroeder sind Grundlage vieler Sicherheitstechniken,
wie beispielsweise Kerberos oder SSL (Secure Socket Layer).
Kerberos wird heute z.B. als Authentifizierungsprotokoll zwischen
Clients und Servern in Intranets eingesetzt. SSL ist ein Sicherheits-Protokoll
auf Applikationsebene, das Einsatzgebiet sind elektronische
Transaktionen.
2. Begriffe
Es gibt
einen Bedarf an sicherer Verwaltung von Schlüsseln (und
Passwörtern) in einem Netzwerk. Bei Needham und Schroeder
basiert die Schlüsselverteilung auf einen Authentifizierungs-Server.
Der Authentifizierungs-Server verwaltet eine Tabelle mit Namen
und geheimen Schlüssel für jeden im System bekannten
Teilnehmer.
Ein wichtiger
Aspekt des Needham und Schroeder Protokolls ist es, dass Passwörter
nicht jedes Mal an einem Authentifizierungsdienst übertragen
werden sollten, wenn sie authentifiziert werden. Stattdessen
hat man das Konzept von Challenges eingeführt. Der Authentifizierungs-Server
stellt den Client ein Ticket aus, das mit der Schlüssel
Ks des Servers verschlüsselt ist. Dies stellt für
den Client eine Challenge dar, da der Client mit dem Ticket
nichts anfangen kann, wenn er es nicht entschlüsseln
kann.
Ein Ticket
ist ein verschlüsseltes Element und enthält die
ID des Clients, für den es ausgestellt wird. Außerdem
enthält es einen gemeinsamen Schlüssel, der für
die aktuelle Kommunikationssitzung erzeugt wurde.
3. Das Authentifizierungsprotokoll
von Needham Schroeder
3.1 Symmetrische Verschlüsselung
Alle
Clients besitzen einen geheimen privaten Schlüssel. Jeder
Client kennt nur den eigenen geheimen Schlüssel. Der
Server S kennt die geheimen Schlüssel sämtlicher
Clients.
Nachricht |
Inhalt |
Beschreibung |
1 A -> S |
A, B, NA |
A fordert von S einen Schlüssel (Sitzungsschlüssel)
für die Kommunikation mit B |
2 S -> A |
{ NA, B, KAB, { KAB, A } KB } KA |
S sendet Nachricht mit Schlüssel KA
verschlüsselte Nachricht |
3 A -> B |
{ KAB, A } KB |
A sendet Ticket an B |
4 B -> A |
{ NB } KAB |
B entschlüsselt Ticket und verwendet
Schlüssel KAB um NB zu verschlüsseln |
5 A -> B |
{ NB-1} KAB |
A zeigt B, dass er der Sender von 3. war,
indem er eine abgestimmte Transformation von NB zurückgibt |
Kommentare
Nachricht
1:
Die Nachricht an den Server wird nicht verschlüsselt.
NA dient dazu, dass Nachricht 2 später zu der Nachricht
1 zuzuordnen ist.
Nachricht
2:
Die gesamte Nachricht wird mit dem geheimen Schlüssel
von A verschlüsselt. Nur A ist in der Lage diese Nachricht
zu lesen. NA und B sind in Nachricht 1 enthalten gewesen.
Sie stellen sicher, dass Nachricht 1 und 2 keine Wiederholungen
sind. B verhindert, dass ein Man-in-the-Middle Angriff unmöglich
wird. Ein Eindringling könnte Nachricht 1 abfangen und
sich anstelle von B eintragen. { KAB, A } KB ist das Ticket.
Das Ticket kann von A nicht weiter verwenden werden, es ist
mit dem geheimen Schlüssel von B verschlüsselt.
Nachricht
3:
Mit dieser Nachricht sind nur beide Kommunikationspartner
im Besitz des Sitzungsschlüssels. Diese Nachricht kann
nur von B entschlüsselt werden. Die Authentifizierung
von A gegenüber B ist mit dieser Nachricht gegeben, den
das Ticket enthält neben dem Sitzungsschlüssel auch
noch A. Nur der Server ist in der Lage in das Ticket A einzutragen
und es mit dem geheimen Schlüssel von B zu verschlüsseln.
Somit ist auch B gegenüber A authentifiziert. Denn A
kann sicher sein, dass nur B das Ticket entschlüsseln
kann. Hier sieht man, dass dem Ticket eine zentrale Bedeutung
zukommt.
Nachricht
4:
Um sicherzugehen, dass A wirklich einen Verbindungswunsch
hatte, muss B die Nachricht 4 versenden. Diese ist natürlich
mit dem Sitzungsschlüssel verschlüsselt. Nur A ist
neben B in Besitz des Sitzungsschlüssels. Man könnte
ja Nachricht 3 aufzeichnen und an B senden.
Nachricht
5:
Warum verändert A die Zufallszahl NB? B kann sonst nicht
sicher sein, dass A die Nachricht 4 erhalten hat und diese
von A stand. Ohne eine Modifikation von NB ist Nachricht 5
nur eine Kopie von Nachricht 4.
3.2 Asymmetrische Verschlüsselung
Alle
Clients besitzen geheimen privaten Schlüssel und den
öffentlichen Schlüssel des Servers S.
Nachricht |
Inhalt |
Beschreibung |
1 A -> S |
A, B |
A fordert von Server S den öffentlichen
Schlüssel KBpub des gewünschten Kommunikationspartners
B |
2 S -> A |
{ KBpub, B } KSpriv |
S sendet öffentlichen Schlüssel
von B KBpub an A. Diese Nachricht ist mit dem privaten
Schlüssel KSpriv des Servers S verschlüsselt |
3 A -> B |
{ NA, A } KBpub |
A sendet Verbindungswunsch an B, verschlüsselt
mit dem öffentlichen Schlüssel von B KBpub |
4 B -> S |
B, A |
B fordert von Server S den öffentlichen
Schlüssel KApub Kommunikationspartners A |
5 S -> B |
{ KApub, B } KSpriv |
S sendet öffentlichen Schlüssel
von A KBpub an B. Diese Nachricht ist ebenfalls mit dem
privaten Schlüssel KSpriv des Servers S verschlüsselt. |
6 B -> A |
{ NA, NB } KApub |
B sendet Nachricht mit Zufallszahl aus Nachricht
3 mit einer neuen selbst generierten Zufallszahl an A.
Diese Nachricht wird mit dem öffentlichen Schlüssel
KApub von A verschlüsselt |
7 A -> B |
{ NB } KApub |
A sendet B eine Antwort auf Nachricht 6.
Diese enthält nur die Zufallszahl von B |
Kommentare
Nachricht
1:
Diese Nachricht wird nicht verschlüsselt.
Nachricht
2:
Da die Nachricht mit dem geheimen Schlüssel des Authentifizierungs-Servers
S verschlüsselt wird, kann A sicher sein, dass sie wirklich
von S stammt.
Die Wiederholung von B hat hier ebenfalls den Sinn, das Man-in-the-Middle
Angriffe nicht fruchten.
Nachricht
3:
NA dient hier ebenfalls dafür, veraltete Anfragen zu
erkennen.
Nachricht
4:
Diese Nachricht wird nicht verschlüsselt.
Nachricht
5:
Diese Nachricht ist wie Nachricht 2 mit dem geheimen Schlüssel
des Authentifizierungs-Servers S verschlüsselt, d.h.
B kann sicher sein, dass sie wirklich von S stammt.
Die Wiederholung von A hat hier auch den Zweck, das Man-in-the-Middle
Angriffe abgewehrt werden.
Nachricht
6:
Nach Nachricht 5 können A und B Nachrichten austauschen.
Aber um sich gegen aufgezeichnete Nachrichten zu schützen,
muss die Nachricht 6 gesendet werden. Sie enthält neben
der Zufallszahl NA aus Nachricht 3 noch die von B generierte
Zufallszahl NB.
Nachricht
7:
Warum nimmt A die Zufallszahl NA aus der Nachricht 6 und sendet
sie als Nachricht 7 an B? B erkennt sonst nicht, dass A die
Nachricht 6 erhalten hat.
|