Authentication
Authentication befasst sich mit der Bestätigung einer Identität und der Überprüfung dieser Bestätigung auf Korrektheit.
Authentication ist ein zentraler Bestandteil des Anmeldevorgangs in einem (P2P-)Netzwerk.
Allgemein
Die Authentifizierung, gegenüber eines Systems, kann auf verschiedene Weise erfolgen:
Methode | Beispiel |
man hat etwas | Schlüssel |
man weiß etwas | Passwort |
man ist etwas | Biometrische Merkmale |
man ist an einem Ort | ein bestimmter Rechner |
man kann etwas | Unterschrift |
Die Verwendung von mehr als einer Methode wird als n-Factor-Authentication bezeichnet, wobei n für die Anzahl der verwendeten Methoden steht.
Allgemein unterscheidet man zwei grundlegende Typen der Authentication. Zum Einen die Standard Authentication gegenüber eines einzelnen Systems, wie zum Beispiel die Anmeldung an dem Heimrechner. Zum Anderen das Single Sign On (SSO). Hierbei authentifiziert sich der Nutzer gegenbüber einer Menge von Systemen, was eine Reduzierung der administrativen Last zur Folge hat und außerdem die verlinkung von Applikationen untereinander ermöglicht. Beispielsweise könnte es eine Datenbank für Bilder von Mitarbeitern einer Organisation, sowie eine Datenbank für Mitarbeiter und deren Adresse auf verschiedenen Systemen geben. Dabei würde die Verlinkung ermöglichen, auf beide Datenbanken zuzugreifen, ohne sich jeweils neu anmelden zu müssen.
Ein populäres Beispiel für SSO ist das Microsoft Passport Netzwerk.
Der Begriff Authorization wird häufig mit Authentication gleichgesetzt, bezeichnet allerdings die Zuweisung und Überprüfung von Zugriffsrechten auf Daten und Dienste an Nutzer nach einer erfolgreichen Authentication.
Kerberos
In einem offenen Netzwerk kann das Problem auftreten, dass eine Workstation, bzw. ein Server (Service), nicht eindeutig identifizieren kann. Dieses Problem versucht Kerberos zu beheben, indem es eine sichere und einheitliche Authentifizierung im ungesicherten TCP/IP-Netzwerk bietet. Kerberos setzt auf der Idee des SSO auf.
Geschichte von Kerberos
[wegen Streitigkeiten unter den Autoren noch nicht bearbeitet :)]
Funktionsweise
Zentraler Server
Das Kerberos-System besitzt einen zentralen Server mit optionalen Spares. Dieser Server führt eine Datenbank über alle Clients und deren Private Keys (z.B. ein verschlüsseltes Passwort). Weiterhin generiert der zentrale Server, als initialen Schritt bei der Authentifizierung, Tickets sowie Session Keys für den Ticket Granting Server(TGS).
Er bietet außerdem drei Sicherheitsstufen an:
- einmalige Authentifizierung nur bei Anmeldung
- Authentifizierung jeder Nachricht
- Authentifizierung jeder Nachricht mit zusätzlicher Verschlüsselung
Ticket Granting Server
Der TGS ist dafür zuständig, dem Client, Tickets für Dienste, die er in Anspruch nehmen möchte, auszustellen. Um den TGS in Anspruch nehmen zu können, benötigt der Client vom zentralen Server ein Initialticket.
Zusätlich kennt der TGS die Private Keys aller Server.
Session Keys
Session Keys werden für die Verschlüsselung von Nachrichten zwischen zwei konkreten Parteien genutzt.
Ticket
Ein Ticket wird benötigt, um sich gegenüber eines Serices auszuweisen und seinen Dienst in Anspruch nehmen zu dürfen. Mit Hilfe des Tickets wird sichergestellt, dass der Client berechtigt ist, den geforderten Service zu nutzen. Jedes Ticket ist nur für einen begrenzten Zeitraum gültig und wie folgt aufgebaut:
- Name des Service der in Anspruch genommen werden soll
- Name des Clients
- Adresse des Clients
- einen Zeitstempel (timestamp)
- Lebenszeit des Tickets
- Session Key für Server (mit gefordertem Service) und Client
Das Ticket ist mit dem Privaten Schlüssel des Servers (mit gefordertem Service) kodiert.
Authenticator
Der Authenticator stellt sicher, dass der Client auch der ursprüngliche Empfänger des Tickets ist. Im Unterschied zum Ticket kann der Authenticator nur einmal verwendet werden. Dieser wird jedesmal vom Client erstellt, sobald er einen Service nutzen möchte.
Der Authenticator hat folgenden Aufbau:
- Name des Clients
- Adresse des Clients
- einen Zeitstempel (timestamp)
Der Authenticator wird mit dem Session Key vom Client und dem jeweiligen Server verschlüsselt. Da der Authenticator vom Client erstellt wird und nur dieser, sowie der angesprochene Server, den Session Key besitzen, ist sichergestellt, dass der Client authorisiert ist.
Protokolle
Kerberos verwendet die folgenden drei Protokolle während der Authentifizierung.
Initial Ticket
Zunächst muss der Nutzer seinen User-Namen eingeben, danach wird im Hintergrund automatisch eine Anfrage an den Zentralen Server(ZS) geschickt. Diese enthält den User-Namen und den den Service der in Anspruch genommen werden soll. In diesem ist das der Ticket Granting Service. Nach Erhalt dieser Anfrage wird geprüft ob der User-Name in der Datenbank vorkommt.
Wenn das der FAll ist, schickt der ZS dem Client ein Session Key für ihn und den TGS, sowie ein Ticket für den TGS. Das ganze wird mit dem privaten Schlüssel des Clients kodiert. Der Client wird nun aufgefordert sein Passwort einzugeben. Mit Hilfe dieses Passwortes wird die Nachricht vom ZS dekodiert und gespeichert. Somit hat der Client die Möglichkeit mit dem TGS zu kommunizieren.
Server Ticket
Um einen Service nutzen zu können, benötigt der Client ein Ticket vom TGS. Um dies zu erhalten, sendet der Client, wie in der Abbildung gezeigt, eine Anfrage an den TGS. Die Anfrage enthält:
- den Namen des Servic, den der Client nutzen möchte
- das Ticket
- den Authenticator
Der TGS entschlüsselt das Ticket mit seinem Private Key und erhält den Session Key. Mit Hilfe dieses Session Key kann er nun, den Authenticator entschlüsseln, die User-Daten mit denen im Ticket vergleichen und somit den Client verifizieren.
Wenn kein Fehler aufgetreten ist, sendet der TGS eine mit dem Session Key verschlüsselte Nachricht an den Client:
Die Nachricht enthält das angeforderte Ticket für den Service und einen Session Key für den entsprechenden Server und den Client. Wobei die Ticket-Lebenszeit das Minimum zwischen der verbleibenden TGS-Ticket-Lebenszeit und der Standard-Lebenszeit des Tickets für einen Service ist.
Der User ist nun in der Lage einen Service anzufordern.
Request Service
Um einen Service nutzen zu können, stellt der Client eine Anfrage an den entsprechenden Server:
Die Anfrage besteht aus dem Authenticator und dem Ticket. Der Server entschlüsselt das Ticket mit seinem Private Key. Anschließend verifiziert er den Client mit Hilfe des Authenticator. Der Server vergleicht zusätzlich den Zeitstempel im Authenticator mit seiner aktuellen Zeit. Ist die Differenz zu groß, wird die Anfrage verworfen. Erfolgreiche Anfragen können außerdem gespeichert werden um Replay-Attacken zu verhindern. Damit der Server sich gegenüber dem Client authentifizieren kann, schickt dieser ebenfalls eine Nachricht.
Diese Nachricht enthält den um eins erhöhten Zeitstempel des Authenticator, welcher mit dem Session Key verschlüsselt ist. Nun ist der Client in der Lage, die beiden Zeitstemple zu vergleichen. Ist der Empfangene um eins höher, ist der Server der Gewünschte.
Gesamtüberblick
Diese Abbildung beschreibt die komplette Kommunikation zwischen den einzelnen Parteien, die für die Nutzung eines Service nötig ist.
1 | Anfrage für TGS-Ticket |
2 | Ticket für TGS |
3 | Anfrage für Server-Ticket |
4 | Ticket für Server |
5 | Anfrage nach Service |
6 | Verifizierung des Servers |
Vorteile und Nachteile
Die Vorteile des Kerberos-Systems sind zum Einen die schon vorher erwähnten Vorteile eines SSO. Außerdem bietet Kerberos zusätzliche Sicherheit durch die Verwendung von Verschlüsselungsverfahren in der Datenübertragung. Kerberos ist des Weitern einfach zu implementieren, da es auf dem TCP/IP-Stack aufsetzt. Kerberos hat sich als Standard durchgesetzt und wird daher in gängigen Microsoft (NT-basierten) und Unix Netzwerken verwendet.
Der offensichtlichste Nachteil eines Kerberos-Systems ist sein hoher Traffic, wie man in der Gesamtübersicht sehen kann. Ein weiteres Problem ist, dass ein Ticket nur eine begrenzte Zeit gültig ist und demnach nach einer gewissen Zeit ein erneutes Einloggen des Users vorausgesetzt wird. Das Abschätzen der Lebensdauer eines Tickets ist schwierig, je länger sie ist, desto länger könnte ein Dritter mit einem abgefangenen Ticket Schaden anrichten. Ist sie zu kuz, ist ein häufiges Neuanmelden erforderlich, was den Vorteile des SSO schmälert. Als letzter Nachteil eergibt sich das sogenannte Proxy-Problem. Ein User kann einem Server, der evtl. Dienste auf anderen Servern für ihn ausführt nicht trauen oder hat zumindest keine Gewissheit über die Absichten des Servers.
CorSSO
CorSSO steht fur Cornell Single Sign On. Der Name leitet sich vom italienischen corso ab, was soviel bedeutet wie rennen. Im Übertragenden Sinne steht CorSSO also für Vortschritt oder Entwicklung. Im Unterschied zu Kerberos ist CorSSO ein verteilter Authentication Service, d.h es gibt nicht nur einen zentralen Server. Auf den verschiedenen Servern können verschiedene Regeln zur Anmeldung zum Tragen kommen (Policies) und diese Server können von verschiedenen Administratoren verwaltet werden. Weiterhin gibt es bei CorSSO keine begrenzte Laufzeit der Anmeldung, wie das durch die Lebenszeit des Tickets bei Kerberos der Fall ist.
Funktionsweise
Ein Nutzer, der einen Service in Anspruch nehmen möchte, muss sich gegenüber einem Subset von Authentication Servern authentifizieren, die in der Policy des Application Servers festgelegt sind. Hat der User sich gegenüber einer (Teil-)Menge dieser als vertrauenswürdig erwiesen, kann er den Service nutzen.