Kerberos Authentifizierung

Vorwort
Das Kerberos-Protokoll hat seinen Namen vom dreiköpfigen Hund aus der griechischen
Mythologie.
Die drei Elemente von Kerberos sind die folgenden:
Ein Client, der Dienste oder Authentifizierung benötigt
Ein Server, auf dem
die vom Client angeforderten Dienste vorhanden sind
Ein Computer, der
für den Client wie für den Server vertrauenswürdig ist (in diesem
Fall ein Windows Server 2003
Domänencontroller,
auf dem der Kerberos Schlüsselverteilungscenter Dienst läuft, KDC
Key Distribution Center)
Die Kerberos Authentifizierung basiert auf speziell formatieren
Datenpaketen, die "Tickets" heißen. Bei Kerberos werden
statt der Kennwörter diese Tickets über das Netzwerk übertragen.
Die Übertragung von Tickets anstelle von
Kennwörtern macht den Authentifizierungsvorgang weniger anfällig für
Angreifer, die den Datenverkerhe im Netzwerk
abfangen mit zB. Sniffern.
Schlüsselverteilungscenter (engl. KDC Key Distribution
Center)
Das Schlüsselverteilungscenter verfügt über eine Datenbank mit
Kontendaten zu allen Sicherheitsprinzipalen in der Domäne.
Es speichert einen kryptografischen Schlüssel, den nur der Sicherheitsprinzipal
ud das KDC selbst kennen.
Dieser Schlüssel wird beim Datenaustausch zwischen dem Prinzipal und dem
KDC verwendet und heißt "Langzeitschlüssel".
Der Langzeitschlüssel ist vom Anmeldekennwort des Benutzers abgeleitet.
Kerberos Authentifizierungsvorgang
In einer Kerberos-Umgebung beginnt der Authentifizierungsvorgang mit der Anmeldung.
Die folgenden Schritte
beschreiben der Kerberos Authentifizierungsvorgang:
- Wenn ein Benutzer einen Benutzernamen und ein Kennwort eingibt, sendet der
Computer den Benutzernamen an das KDC. Das KDC enthält eine Masterdatenbank
mit eindeutigen Langzeitschlüssel für jeden Prinzipal im Bereich
- Es schlägt den Hauptschlüssel (KA) des Benutzers nach, der auf
dem Benutzerkennwort basiert. Dann erzeugt das
KDC zwei Elemente: einen Sitzungsschlüssel (SA), der gemeinsam mit dem
Benutzer verwendet wird, und ein
Ticket-genehmingendes Ticket (Ticket Granting Ticket, TGT). Das TGT enthält
eine zweite Kopie des SA, den
Benutzernamen und einen Ablaufzeitpunkt. Das KDC verschlüsselt dieses
Ticket mithilfe des eigenen
Hauptschlüssels (KKDC), den nur das KDC selbst kennt.
Hinweis: Kerberos implementiert eine Geheimschlüsselkryptografie, die
sich von der Kryptografie mit öffentlichen
Schlüsseln dahingehend unterscheidet, dass sie kein Paar aus öffentlichem
und privatem Schlüssel verwendet.
- Der Clientcomputer empfängt die Daten vom KDC und bearbeitet das Benutzerkennwort
mit einer unidirektionalen
Hashingfunktion, die dieses Kennwort in den KA des Benutzers umwandelt. Der
Clientcomputer verfügt nun über
einen Sitzungsschlüssel und ein TGT, kann also sicher mit dem KDC kommunizieren.
Der Client ist bei der
Domäne authentifiziert und kann unter Verwendung des Kerberosprotokolls
auf weitere Ressourcen in der
Domäne zugreifen.
- Wenn ein Kerberos Client auf Ressourcen auf einem Server zugreifen will,
der Mitglied der gleichen Domäne ist, dann
kontaktiert er das KDC. Der Client weist sein TGT und einen Zeitstempel vor,
der mit dem Sitzungsschlüssel
verschlüsselt wurde, welcher bereits mit dem KDC gemeinsam verwendet
wird. Das KDC verschlüsselt das TGT
mithilfe seines KKDC. Das TGT enthlt den Benutzernamen und eine Kopie des
SA. Mit dem SA entschlüsselt das
KDC den Zeitstempel. Das KDC kann dann bestätigen, dass die Anfrage von
diesem Benutzer kommt, denn nur
er kann den SA benutzen.
- Als nächstes erzeugt das KDC ein Paar Tickets, und zwar eines für
den Client und eines für den Server, auf dem
die vom Client angeforderten Ressourcen liegen. Jedes Ticket enthält
den Namen des Benutzers, der den Dienst
anfordert, den Empfänger der Anforderung, einen Zeitstempel, der den
Erstellungszeitpunkt des Tickets angibt, und
eine Zeitangabe zur Gültigkeitsdauer der Tickets. Die beiden Tickets
enthalten zudem einen neuen Schlüssel (KAB),
der von Client und Server gemeinsam verwendet wird, sodass eine sichere Kommunikation
möglich ist.
- Das KDC verschlüsselt nun das Ticket des Servers mithilfe des Serverhauptschlüssels
(KB). Dann verschachtelt das
KDC das Serverticket im Clientticket, welches ebenfalls den KAB enthält.
Diese gesamte Datengruppe wird nun
mithilfe des Sitzungsschlüssels verschlüsselt, der seit dem Anmeldevorgang
mit dem Benutzer gemeinsam verwendet
wird. Dann schickt das KDC all diese Daten an den Benutzer.
- Wenn der Benutzer das Ticket erhält, entschlüsselt er es mithilfe
des SA. Auf diese Weise werden dem Client der
KAB und das Serverticket bekannt. Der Benutzer selbst kann das Serverticket
hingegen nicht lesen. Er wird nun den
Zeitstempel mithilfe des KAB verschlüsseln und ihn und das Serverticket
an den Server senden, auf dem die erwünschten
Ressourcen liegen. Wenn der Server diese beiden Elemente erhält, entschlüsselt
er zunächst mithilfe des KB das
Serverticket. Auf diese Weise kann er auf den KAB zugreifen, mit dessen Hilfe
dann der Zeitstempel des Clients entschlüsselt wird.
Nun verfügen sowohl der Client als auch der Server über den KAB.
Der Server kann sicher sein, dass der Client sich wahrhaftig
selbst identifiziert hat, denn der Client hat zur Verschlüsselung des Zeitschlüssels
den KAB verwendet. Muss der Server dem
Benutzer antworten, dann wird er hierzu seinen KAB verwenden. Der Client weiß
dann, dass der Server sich wahrhaftig identifiziert
hat, denn der Server hat seinen KB verwendet, um den KAB zu erhalten.
Erstellt von: Haßlinger Stefan
Im: Jahr 2006