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 |