Ticket-Granting Tickets

Da das Kerberos-Protokoll ursprünglich entworfen wurde, wurde ein master Schlüssel für einen Benutzer von einem kennwort abgeleitet, das vom Benutzer bereitgestellt wurde. Wenn sich ein Benutzer angemeldet hat, akzeptierte der Kerberos-Client auf der Arbeitsstation des Benutzers das Kennwort vom Benutzer und konvertierte es in einen Verschlüsselungsschlüssel, indem er den Text über eine unidirektionale Hashfunktion übergibt. Der resultierende Hash war der master Schlüssel des Benutzers. Der Client hat diesen master Schlüssel verwendet, um vom KDC empfangene Sitzungsschlüssel zu entschlüsseln.

Das Problem mit dem ursprünglichen Kerberos-Entwurf besteht darin, dass der Client bei jeder Entschlüsselung eines Sitzungsschlüssels vom KDC den master Schlüssel des Benutzers benötigt. Dies bedeutet, dass entweder der Client den Benutzer am Anfang jedes Client/Server-Austauschs nach dem Kennwort fragen muss, oder der Client muss den Schlüssel des Benutzers auf der Arbeitsstation speichern. Häufige Unterbrechungen des Benutzers sind zu aufdringlich. Beim Speichern des Schlüssels auf der Arbeitsstation besteht die Gefahr, dass ein Schlüssel kompromittiert wird, der aus dem Benutzerkennwort abgeleitet wird. Hierbei handelt es sich um einen langfristigen Schlüssel.

Die Lösung dieses Problems durch das Kerberos-Protokoll besteht darin, dass der Client einen temporären Schlüssel vom KDC erhält. Dieser temporäre Schlüssel eignet sich nur für diese Anmeldesitzung. Wenn sich ein Benutzer anmeldet, fordert der Client ein Ticket für das KDC an, genau wie er ein Ticket für jeden anderen Dienst anfordern würde. Das KDC antwortet, indem es einen Anmeldesitzungsschlüssel und ein Ticket für einen speziellen Server erstellt, den vollständigen Ticketgewährungsdienst des KDC. Eine Kopie des Anmeldesitzungsschlüssels ist in das Ticket eingebettet, und das Ticket wird mit dem master Schlüssel des KDC verschlüsselt. Eine weitere Kopie des Anmeldesitzungsschlüssels wird mit dem master Schlüssel des Benutzers verschlüsselt, der vom Anmeldekennwort des Benutzers abgeleitet ist. Sowohl das Ticket als auch der verschlüsselte Sitzungsschlüssel werden an den Client gesendet.

Wenn der Client die Antwort des KDC erhält, entschlüsselt er den Anmeldesitzungsschlüssel mit dem vom Kennwort des Benutzers abgeleiteten master Schlüssel des Benutzers. Der Client benötigt den Schlüssel, der vom Kennwort des Benutzers abgeleitet wurde, nicht mehr, da der Client jetzt den Anmeldesitzungsschlüssel verwendet, um seine Kopie eines Serversitzungsschlüssels zu entschlüsseln, den er vom KDC erhält. Der Client speichert den Anmeldesitzungsschlüssel in seinem Ticketcache zusammen mit seinem Ticket für den vollständigen Ticketgewährungsdienst des KDC.

Das Ticket für den vollständigen Ticketgewährungsdienst wird als Ticket-Granting-Ticket (TGT) bezeichnet. Wenn der Client das KDC nach einem Ticket für einen Server fragt, stellt er Anmeldeinformationen in Form einer Authentifikatornachricht und eines Tickets – in diesem Fall ein TGT – wie auch anmeldeinformationen für jeden anderen Dienst bereit. Der Ticketgewährungsdienst öffnet den TGT mit seinem master Schlüssel, extrahiert den Anmeldesitzungsschlüssel für diesen Client und verwendet den Anmeldesitzungsschlüssel, um die Clientkopie eines Sitzungsschlüssels für den Server zu verschlüsseln.