Versucht sich ein User an seinem Arbeitsplatz anzumelden (User+Kennwort), sendet der PC eine Klartext-Anfrage an das KDC (AD). An dieser Stelle werden keine sensiblen Schlüsselinformationen übermittelt. Das AD prüft nun ob zur Anfrage ein Benutzerkonto existiert. Anschließend erzeugt das AD ein TGT (Ticket-Granting-Ticket) und verschlüsselt dies mit einem geheimen Schüssel. Der geheime Schlüssel enthält u.a. das gehashte Passwort des Benutzers. Der geheime Schlüssel ist nur dem Anwender und dem AD bekannt. Der lokale Arbeitsplatz zuletzt, fragt den Benutzer nach einem Kennwort, hashed das Kennwort und entschlüsselt damit das TGT.

Dies ist aus mehreren Gründen problematisch:

Der geheime Schlüssel ist dem lokalen Arbeitspaltz und dem Benutzer selbst, bekannt. Dieser Schlüssel kann z.B. lokal mit Administratorenrechten ausgelesen werden oder durch das Abfangen von Verkehr im Netzwerk.

Wie helfen hier jetzt Smartcards?

Eine Smartcard beinhaltet i.d.R. ein x.509-Schlüsselpaar. Der private Schlüssel befindet sich ausschließlich in der Smartcard und verlässt diese nicht.
Obiger Login bzw. Anforderungsprozess für ein TGT läuft jetzt wie folgt:

Der Benutzer wird mit gesteckter Smartcard zur Eingabe der PIN aufgefordert beim Login-Versuch an seiner lokalen Workstation

Kerberos senden eine Anfrage an das KDC (AD). Diese Anfrage beinhaltet den öffentlichen Schlüssel von der Smartcard, signiert mit dem privaten Schlüssel.
Findet das AD zum präsentierten öffentlichen Zertifikat einen passenden Benutzer in seiner Datenbank, erzeugt das AD ein TGT, und signiert dies mit dem eigenen privaten Schlüssel. Keine privaten Schlüsselinformationen werden hierbei übertragen.

Der wesentliche Vorteil hierbei ist, dass die so erhaltenen TGT keine sensiblen Schlüsselinformationen erhalten und somit auch keine gehashten Klartextkennwörter enthalten.

Quelle: https://en.wikipedia.org/wiki/Kerberos_(protocol)

Categories: Blog