Kerberos

Kerberos ist ein verteilter Authentifizierungsdienst für den Einsatz in offene und unsichere Computernetze, wie das Internet. Neben der Authentifizierung unterstützt Kerberos auch Single Sign-On, sodass sich ein Benutzer nur einmal anmelden muss und anschließend alle verfügbare Netzwerkdienste nutzen kann, ohne sich ein weiteres Mal authentifizieren zu müssen.

Bei Kerberos findet eine gegenseitige Authentifizierung statt. Sowohl User als auch Server verifizieren gegenseitig die jeweilig andere Identität. Generell wird auf symmetrische Verschlüsselung aufgebaut, wobei eine vertrauenswürdige dritte Partei (Trusted Third Party) zum Einsatz kommt.

Kerberos Komponenten

An Kerberos sind drei Parteien beteiligt:
  1. Ein Client
  2. die Netz-Ressource, auf die der Client zugreifen möchte
  3. der Kerberos-Server, der die Authentifizierung sicherstellen soll, auch Key Distribution Center genannt (Authentication Server + Ticket-Granting Server)
Für die Authentifizierung kommen sogenannte Tickets zum Einsatz. Um dieses zu bekommen, muss der Client erst einmal ein Ticket-Granting-Ticket vom Authentication-Server anfordern. Dafür muss der Nutzer des Clients ein Passwort eingeben. Erhält der Client dieses Ticket-Granting-Ticket kann er sich nun damit bei Ticket-Granting Server für den Ressourcen-Zugriff autorisieren lassen. In diesem Fall erhält der Client nun das Ticket und kann mit der Ressource kommunizieren.

Ablauf eines Zugriffs auf eine Ressource

Ablauf einer Authentifizierung mit Kerberos
Schematische Darstellung des Ablaufs einer Authentifizierung mit Kerberos.

Im oberen Beispiel möchte Alice auf eine Ressource zugreifen. Dafür meldet sie sich erst einmal auf ihrer Workstation (Client) durch Eingabe ihres Benutzernamens samt Passwort an. Der Client wandelt anschließend das Passwort in einen geheimen Schlüssel um, in dem er das Passwort als Parameter in eine Hashfunktion gibt. Auch wenn oben der Authentication Server (AS) und der Ticket-Granting Server (TGS) einzeln dargestellt sind, wird davon ausgegangen (wie in vielen Fällen), dass beide Systeme vom sogenannten Key Distribution Center (KDC) ausgeübt werden.

AS_REQ

Nun folgt die erste Nachricht an den Authentication Server (AS). Mit AS_REQ bittet der Client um ein Ticket-Granting-Ticket. Die Nachricht beinhaltet unter anderem den Benutzernamen im Klartext, die gewünschte Ticket-Lebenszeit, den Dienstnamen und auch eine Nonce (Zufallszahl).

AS_REP

Der Authentication Server antwortet mit einer AS_REP-Nachricht, die unter anderem das Ticket-Granting Ticket beinhaltet. Dieses ist mit dem Master-Secret des jeweiligen KDCs verschlüsselt, von dem der Authentication Server und Ticket-Granting Server ein Teil sind. Das Ticket-Granting Ticket enthält unter anderem den Benutzernamen, die Adresse, den Sitzungsschlüssel, die Gültigkeitsdauer, den Zeitstempel usw. und ist vom Client nicht einsehbar. Darüber hinaus beinhaltet die Nachricht auch einen Session-Key (Alice-KDC), die NONCE aus dem AS_REQ (als Schutz vor Replay-Attacken), der Name, den Zeitstempel des KDCS und die TGT Länge. Diese Informationen sind wiederum mit dem Master Secret von Alice (also dem Client verschlüsselt).

TGS_REQ

Das verschlüsselte Ticket-Granting-Ticket (TGT) sendet der Client nun mit der Nachricht TGS_REQ zum Ticket-Granting Server. Die Nachricht enthält aber nicht nur das TGT, sondern auch den Ressourcen Namen, auf den zugegriffen werden soll, die Lebensdauer sowie einen Authentication, der mit dem Sitzungsschlüssel verschlüsselt wurde. Der Authenticator ist nur einmal einsetzbar und soll vor Wiedereinspielungseingriffen schützen. Er beinhaltet neben dem Clientnamen lediglich noch dessen Zeitstempel. Der Server kann nun abgleichen, ob die beiden Systemzeiten übereinstimmen (Abweichung sollte nicht größer als 5 Minuten sein). Damit können spätere Angriffe ausgeschlossen werde.

TGS_REP

Der Ticket-Granting Server antwortet mit der Nachricht TGS_REP, die unter anderem das Ticket für die Ressource beinhaltet. Das Ticket umfasst unter anderem den Client Namen, der auf die Ressource zugreifen möchte, die Netzwerkadresse des Clients, den Session-Key (Alice-Ressource), die Lebensdauer, den Zeitstempel und den Servernamen. Verschlüsselt ist das Ticket mit dem Master-Secret der Ressource auf die zugegriffen werden soll. Der Client kann die Informationen aus dem Ticket also nicht auslesen.

Darüber hinaus werden weitere Informationen zurückgeliefert, wie der Session-Key (Alice-Ressource), der Name der Ressource, die Ticket-Lebensdauer, der Zeitstempel des KDC oder auch eine Zufallszahl. Diese Informationen sind wiederum mit dem Session-Key (Alice-KDC) verschlüsselt.

AP_REQ

Nun hat der Client endlich die Informationen für den Zugriff auf eine Ressource. Mit der AP_REQ Nachricht sendet er der jeweiligen Ressource nun das vom Ticket-Granting Server erhaltene Ticket, sowie einen Authenticator, der mit dem Session-Key verschlüsselt worden ist.

AP_REP

Die AP_REP ist in der Dokumentation nicht explizit erwähnt. Prinzipiell enthält sie aber einen Authenticator, danach folgt der ungeschützte Austausch der Anwendungsdaten. Der Integritätsschutz, bzw. die Verschlüsselung mit Integritätsschutz usw. ist Aufgabe der Anwendungsprotokolle.

Quellen und Verweise

  • Sicherheit und Kryptographie im Internet - Theorie und Praxis von Schwenk, Jörg
  • Sichere Netzwerkkommunikation - Grundlagen, Protokolle und Architekturen von Bless, R., Mink, S., Blaß, E.-O., Conrad, M., Hof, H.-J., Kutzner, K., Schöller, M.
  • W. Stallings; Cryptography and Network Security, 6th Edition, Prentice-Hall, 2013


Artikel vom 01.09.2016