Kerberos () ist ein Authentifizierungsprotokoll für ein Computernetzwerk, das auf der Grundlage von -Tickets arbeitet, um Knoten, die über ein nicht sicheres Netzwerk kommunizieren, zu gestatten, ihre Identität einander in einem sichere Weise. Das Protokoll wurde nach der Figur Kerberos (oder Cerberus ) aus der griechischen Mythologie, dem wilden dreiköpfigen Wachhund von Hades, benannt. Seine Designer richteten sich in erster Linie auf ein Client-Server-Modell und bieten gegenseitige Authentifizierung. Sowohl der Benutzer als auch der Server überprüfen die Identität des jeweils anderen Benutzers. Kerberos-Protokollnachrichten sind vor Abhör- und Wiedergabeangriffen geschützt.
Kerberos baut auf der Verschlüsselung mit symmetrischen Schlüsseln auf und erfordert einen vertrauenswürdigen Drittanbieter und kann optional in bestimmten Authentifizierungsphasen die Verschlüsselung mit öffentlichen Schlüsseln verwenden. [1] Kerberos verwendet standardmäßig den UDP-Port 88.
Geschichte und Entwicklung [ edit ]
Das Massachusetts Institute of Technology (MIT) hat Kerberos entwickelt, um Netzwerkdienste des Projekts Athena zu schützen. Das Protokoll basiert auf dem früheren symmetrischen Protokoll von Needham-Schroeder. Es gibt mehrere Versionen des Protokolls; Die Versionen 1–3 traten nur intern am MIT auf.
Kerberos Version 4 wurde hauptsächlich von Steve Miller und Clifford Neuman entworfen. Die in den späten achtziger Jahren veröffentlichte Version 4 war auch auf Project Athena ausgerichtet.
Neuman und Kohl veröffentlichten 1993 die Version 5, um bestehende Einschränkungen und Sicherheitsprobleme zu überwinden. Version 5 erschien als RFC 1510 und wurde 2005 von RFC 4120 überholt.
Behörden in den Vereinigten Staaten stuften Kerberos als "Auxiliary Military Equipment" in die US Munitions List ein und verbot den Export, da der Verschlüsselungsalgorithmus des Data Encryption Standard (DES) (mit 56-Bit-Schlüsseln) verwendet wurde. KTH-KRB, eine nicht in den USA entwickelte Implementierung von Kerberos 4, die am Royal Institute of Technology in Schweden entwickelt wurde, stellte das System außerhalb der USA zur Verfügung, bevor die USA ihre Exportvorschriften für Kryptographie ( ca. 2000) änderten. Die schwedische Implementierung basierte auf einer eingeschränkten Version namens eBones. eBones basierte auf der exportierten MIT Bones-Version (ohne Verschlüsselungsfunktionen und Aufrufe an sie), basierend auf Version Kerberos 4 Patch-Level 9.
2005 hat die Kerberos-Arbeitsgruppe Internet Engineering Task Force (IETF) die Spezifikationen aktualisiert. Updates enthalten:
MIT stellt eine Kerberos-Implementierung unter Copyright-Berechtigungen, die denen für BSD ähnelt, frei zur Verfügung. Im Jahr 2007 gründete das MIT das Kerberos-Konsortium, um die weitere Entwicklung zu fördern. Zu den Gründungssponsoren zählen Anbieter wie Oracle, Apple Inc., Google, Microsoft, die Centrify Corporation und TeamF1 Inc. sowie akademische Einrichtungen wie das Royal Institute of Technology in Schweden, die Stanford University, das MIT und Anbieter wie CyberSafe, die kommerziell unterstützte Versionen anbieten .
Microsoft Windows [ edit ]
Windows 2000 und höher verwendet Kerberos als Standardauthentifizierungsmethode. [2] Einige Microsoft-Ergänzungen zur Kerberos-Protokollreihe sind in RFC 3244 "Microsoft Windows 2000 Kerberos - Kennwort ändern und Kennwortprotokolle festlegen" dokumentiert. RFC 4757 dokumentiert die Verwendung der RC4-Verschlüsselung durch Microsoft. Während Microsoft das Kerberos-Protokoll verwendet und erweitert, verwendet es nicht die MIT-Software.
Kerberos wird als bevorzugte Authentifizierungsmethode verwendet: Im Allgemeinen bedeutet der Beitritt eines Clients zu einer Windows-Domäne, dass Kerberos als Standardprotokoll für die Authentifizierung dieses Clients bei Diensten in der Windows-Domäne und allen Domänen mit Vertrauensbeziehungen zu dieser Domäne aktiviert wird. [2]
Wenn dagegen entweder Client oder Server oder beide keiner Domäne angehören (oder nicht Teil derselben vertrauenswürdigen Domänenumgebung), verwendet Windows stattdessen NTLM für die Authentifizierung zwischen Client und Server. [2]
Intranet-Webanwendungen können Kerberos als Authentifizierungsmethode für mit Domänen verbundene Clients mithilfe von APIs erzwingen, die unter SSPI bereitgestellt werden.
UNIX- und Unix-ähnliche Betriebssysteme [ edit ]
Viele UNIX- und UNIX-ähnliche Betriebssysteme, darunter FreeBSD, Mac OS X von Apple, Red Hat Enterprise Linux, Oracle Solaris, AIX und Z / OS von IBM, HP-UX und OpenVMS von HP und andere umfassen Software zur Kerberos-Authentifizierung von Benutzern oder Diensten. Die Embedded-Implementierung des Kerberos V-Authentifizierungsprotokolls für Client-Agenten und Netzwerkdienste, die auf Embedded-Plattformen ausgeführt werden, ist auch bei Unternehmen erhältlich.
Protokoll [ edit ]
Beschreibung [ edit ]
Der Client authentifiziert sich beim Authentication Server (AS) der den Benutzernamen an ein Schlüsselverteilungszentrum (KDC) weiterleitet. Das KDC gibt ein Ticket Granting Ticket (TGT) aus, das mit einem Zeitstempel versehen ist, und verschlüsselt es mit dem geheimen Schlüssel des Ticket Granting Service (TGS) und gibt das verschlüsselte Ergebnis an den Benutzer zurück Arbeitsplatz. Dies geschieht selten, normalerweise bei der Benutzeranmeldung. Das TGT läuft zu einem bestimmten Zeitpunkt ab, obwohl es vom Session Manager des Benutzers transparent erneuert werden kann, während er angemeldet ist.
Wenn der Client mit einem anderen Knoten ("Principal" in der Kerberos-Sprache) zu einem Dienst auf diesem Knoten kommunizieren muss, sendet der Client den TGT an den TGS, der normalerweise denselben Host wie das KDC verwendet. Der Dienst muss bei TGT mit einem SPN (Service Principal Name) registriert sein. Der Client verwendet den SPN, um den Zugriff auf diesen Dienst anzufordern. Nach der Überprüfung der Gültigkeit des TGT und der Berechtigung des Benutzers, auf den angeforderten Dienst zuzugreifen, gibt der TGS Ticket- und Sitzungsschlüssel an den Client aus. Der Client sendet dann das Ticket zusammen mit seiner Serviceanfrage an den Service-Server (SS) .
Das Protokoll wird nachstehend ausführlich beschrieben.
Benutzer-Client-basierte Anmeldung [ edit ]
- Ein Benutzer gibt auf den Client-Computern einen Benutzernamen und ein Kennwort ein. Andere Mechanismen wie Pkinit (RFC 4556) ermöglichen die Verwendung öffentlicher Schlüssel anstelle eines Kennworts.
- Der Client wandelt das Kennwort in den Schlüssel einer symmetrischen Chiffre um. Diese verwendet entweder die integrierte Schlüsselplanung oder einen One-Way-Hash, abhängig von der verwendeten Chiffre-Suite.
Client Authentication [ edit ]
- Der Client sendet einen Klartext Nachricht der Benutzer-ID an den AS (Authentication Server), der Dienste für den Benutzer anfordert. (Hinweis: Weder der Geheimschlüssel noch das Kennwort werden an die AS gesendet.)
- Die AS prüft, ob sich der Client in seiner Datenbank befindet. Wenn dies der Fall ist, generiert der AS den geheimen Schlüssel durch Hashing des Kennworts des in der Datenbank gefundenen Benutzers (z. B. Active Directory in Windows Server) und sendet die folgenden beiden Meldungen an den Client zurück:
- Nachricht A: Client / TGS-Sitzungsschlüssel verschlüsselt mit dem geheimen Schlüssel des Clients / Benutzers.
- Nachricht B: Ticket-Granting-Ticket (TGT, einschließlich die Client-ID, die Client-Netzwerkadresse, die Gültigkeitsdauer des Tickets und der -Client / TGS-Sitzungsschlüssel ), der mit dem geheimen Schlüssel des TGS verschlüsselt ist.
- Sobald der Client Nachrichten A empfängt und B versucht, die Nachricht A mit dem geheimen Schlüssel zu entschlüsseln, der aus dem vom Benutzer eingegebenen Passwort generiert wird. Wenn das vom Benutzer eingegebene Kennwort nicht mit dem Kennwort in der AS-Datenbank übereinstimmt, unterscheidet sich der geheime Schlüssel des Clients und kann daher die Nachricht A nicht entschlüsseln. Mit einem gültigen Kennwort und einem geheimen Schlüssel entschlüsselt der Client die Nachricht A, um den Client / zu erhalten. TGS-Sitzungsschlüssel . Dieser Sitzungsschlüssel wird für die weitere Kommunikation mit dem TGS verwendet. (Hinweis: Der Client kann die Nachricht B nicht entschlüsseln, da diese mit dem geheimen Schlüssel von TGS verschlüsselt wird.) An diesem Punkt verfügt der Client über ausreichende Informationen, um sich beim TGS zu authentifizieren.
Client Service Authorization [ edit ]
- Bei der Anforderung von Diensten sendet der Client die folgenden Nachrichten an das TGS:
- Nachricht C: Besteht aus dem TGT aus Nachricht B und der ID des angeforderten Dienstes.
- Nachricht D: Authentifikator (bestehend aus Client-ID und Zeitstempel), verschlüsselt mit dem Client / TGS Sitzungsschlüssel
- Beim Empfang der Nachrichten C und D ruft der TGS die Nachricht B aus der Nachricht C ab. Er entschlüsselt die Nachricht B mit dem geheimen TGS-Schlüssel. Dies gibt ihm den "Client / TGS-Sitzungsschlüssel". Mit diesem Schlüssel entschlüsselt der TGS die Nachricht D (Authenticator) und vergleicht die Client-ID aus den Nachrichten C und D, wenn sie übereinstimmen, und der Server sendet die folgenden zwei Nachrichten an den Client:
- Nachricht E: Client-zu-Server-Ticket (einschließlich Client-ID, Client-Netzwerkadresse, Gültigkeitszeitraum und Client / Server-Sitzungsschlüssel ), der mit dem geheimen Schlüssel des Diensts verschlüsselt wurde
- Nachricht F: Client / Server-Sitzungsschlüssel verschlüsselt mit dem Client / TGS-Sitzungsschlüssel .
Client Service Request [ edit ]
- Beim Empfang der Nachrichten E und F vom TGS verfügt der Client über genügend Informationen, um sich beim Service Server (SS) zu authentifizieren. Der Client stellt eine Verbindung zur SS her und sendet die folgenden zwei Nachrichten:
- Nachricht E: aus dem vorherigen Schritt (das Client-zu-Server-Ticket verschlüsselt mit dem geheimen Schlüssel des Dienstes).
- Nachricht G: ein neuer Authentifikator, der die Client-ID, den Zeitstempel und enthält wird verschlüsselt mit Client / Server-Sitzungsschlüssel .
- Die SS entschlüsselt das Ticket (Nachricht E) mit ihrem eigenen geheimen Schlüssel, um den Client / Server-Sitzungsschlüssel abzurufen. . Mit dem Sitzungsschlüssel entschlüsselt SS den Authenticator und vergleicht die Client-ID aus den Nachrichten E und G. Wenn sie übereinstimmen, sendet der Server die folgende Nachricht an den Client, um seine wahre Identität und die Bereitschaft, den Client zu bedienen, zu bestätigen:
- Nachricht H: Der im Authenticator des Clients gefundene Zeitstempel (plus 1 in Version 4, jedoch nicht in Version 5 [3][4]), verschlüsselt mit dem Client / Server-Sitzungsschlüssel .
] - Der Client entschlüsselt die Bestätigung (Nachricht H) mit dem Client / Server-Sitzungsschlüssel und prüft, ob der Zeitstempel korrekt ist. Wenn dies der Fall ist, kann der Client dem Server vertrauen und kann damit beginnen, Dienstanforderungen an den Server zu stellen.
- Der Server stellt die angeforderten Dienste für den Client bereit.
Nachteile und Einschränkungen [ edit
- Single Point of Failure: Voraussetzung ist die ständige Verfügbarkeit eines zentralen Servers. Wenn der Kerberos-Server ausgefallen ist, können sich keine neuen Benutzer anmelden. Dies kann durch die Verwendung mehrerer Kerberos-Server und Fallback-Authentifizierungsmechanismen gemindert werden.
- Kerberos hat strikte Zeitanforderungen, dh die Uhren der beteiligten Hosts müssen innerhalb der konfigurierten Grenzen synchronisiert werden . Die Tickets verfügen über eine Zeitverfügbarkeitszeit. Wenn die Hostuhr nicht mit der Kerberos-Serveruhr synchronisiert wird, schlägt die Authentifizierung fehl. Die Standardkonfiguration pro MIT erfordert, dass die Uhrzeit nicht mehr als fünf Minuten beträgt. In der Praxis werden Network Time Protocol-Daemons normalerweise verwendet, um die Hostuhren synchron zu halten. Beachten Sie, dass einige Server (die Implementierung von Microsoft ist einer von ihnen) ein KRB_AP_ERR_SKEW-Ergebnis mit der verschlüsselten Serverzeit zurückgeben können, falls beide Uhren einen Offset haben, der größer als der konfigurierte Maximalwert ist. In diesem Fall könnte der Client es erneut versuchen, indem er die Zeit anhand der angegebenen Serverzeit berechnet, um den Versatz zu ermitteln. Dieses Verhalten ist in RFC 4430 dokumentiert.
- Das Administrationsprotokoll ist nicht standardisiert und unterscheidet sich zwischen den Serverimplementierungen. Passwortänderungen werden in RFC 3244 beschrieben.
- Im Falle der Anwendung der symmetrischen Kryptographie (Kerberos kann mit symmetrischer oder asymmetrischer (öffentlicher) Verschlüsselung arbeiten), da alle Authentifizierungen von einem zentralen Schlüsselverteilungszentrum (KDC) gesteuert werden Diese Authentifizierungsinfrastruktur ermöglicht es einem Angreifer, sich als Benutzer auszugeben.
- Jeder Netzwerkdienst, der einen anderen Hostnamen benötigt, benötigt einen eigenen Satz von Kerberos-Schlüsseln. Dies erschwert virtuelles Hosting und Cluster.
- Kerberos erfordert, dass alle Benutzerkonten, Benutzerclients und die Dienste auf dem Server eine vertrauenswürdige Beziehung zum Kerberos-Token-Server haben (Alle müssen sich in derselben Kerberos-Domäne oder in Domänen befinden, die eine Vertrauensstellung haben Beziehung zueinander). Kerberos kann nicht in Szenarien verwendet werden, in denen Benutzer eine Verbindung zu Diensten von unbekannten / nicht vertrauenswürdigen Clients herstellen möchten, wie dies in einem typischen Internet- oder Cloud-Computerszenario der Fall ist, in dem der Authentifizierungsanbieter normalerweise kein Wissen über das Benutzersystem des Benutzers besitzt.
- Das Erstellen abgestufter Umgebungen (z. B. separate Domänen für Testumgebung, Produktionsumgebung und Produktionsumgebung) ist schwierig: Entweder müssen Domänenvertrauensstellungen erstellt werden, die eine strikte Trennung von Umgebungsdomänen verhindern, oder zusätzliche Benutzerclients müssen für jede Umgebung bereitgestellt werden
Schwachstellen [ edit ]
Die Verschlüsselung des Data Encryption Standard (DES) kann in Kombination mit Kerberos verwendet werden, ist jedoch kein Internetstandard mehr, da sie schwach ist. [19659071] In vielen älteren Produkten, die Kerberos implementieren, gibt es Sicherheitsanfälligkeiten, da sie nicht aktualisiert wurden, um neuere Verschlüsselungen wie AES anstelle von DES zu verwenden.
Im November 2014 veröffentlichte Microsoft einen Patch (MS14-068), um eine ausnutzbare Sicherheitsanfälligkeit in der Windows-Implementierung des Kerberos Key Distribution Center (KDC) zu beheben. [6] Die Sicherheitsanfälligkeit ermöglicht Benutzern angeblich das "Erhöhen" (und Missbrauch). ihre Privilegien bis auf Domänenebene.
Siehe auch [ edit ]
Referenzen [ edit
- RFC 4556, abstract
- ^
- ] a b c "Was ist die Kerberos-Authentifizierung?". Microsoft TechNet. Archiviert aus dem Original am 20.12.2016.
- ^ C., Neuman ,; J., Kohl ,. "Der Kerberos Network Authentication Service (V5)". Archiviert aus dem Original am 21.08.2016.
- ^ Clifford, Neuman ,; Sam, Hartman ,; Tom, Yu ,; Kenneth, Raeburn ,. "Der Kerberos Network Authentication Service (V5)". Archiviert aus dem Original am 21.08.2016.
- ^ Tom, Yu ,; Liebe, Astrand. Msgstr "DES, RC4-HMAC-EXP und andere schwache kryptographische Algorithmen in Kerberos verwerfen". Archiviert aus dem Original am 27.10.2015.
- ^ Seltzer, Larry. Msgstr "Details bezüglich der Windows Kerberos - Schwachstelle - ZDNet". Archiviert aus dem Original am 21.11.2014.
- General
- RFCs
- RFC 1510 Der Kerberos-Netzwerkauthentifizierungsdienst (V5) [Obsolete]
- RFC 1964 The Kerberos Version 5 GSS-API-Mechanismus
- RFC 3961-Verschlüsselungs- und Prüfsumenspezifikationen für Kerberos 5
- RFC 3962 AES-Verschlüsselung (Advanced Encryption Standard) für Kerberos 5
- RFC 4120 Der Kerberos-Netzwerkauthentifizierungsdienst (V5) [Current]
- RFC 4121 Der Kerberos Version 5-Generic Security Service-Anwendungsprogramm-Schnittstellenmechanismus (GSS-API): Version 2
- RFC 4537 Erweiterung des Kerberos-Kryptosystems
- RFC 4556-Kryptographie mit öffentlichem Schlüssel für die Erstauthentifizierung in Kerberos (PKINIT)
- RFC 4557 Online Certificate Status Protocol (OCSP) -Unterstützung für die Verschlüsselung mit öffentlichen Schlüsseln für die anfängliche Authentifizierung in Kerberos (PKINIT)
- RFC 4757 Die von Microsoft Windows verwendeten Kerberos-Verschlüsselungstypen RC4-HMAC [Obsolete]
- RFC 5021 Extend ed Kerberos Version 5-Schlüsselverteilungscenter (KDC) wird über TCP ausgetauscht
- RFC 5349 Elliptic Curve Cryptography (ECC) -Unterstützung für die Verschlüsselung mit öffentlichen Schlüsseln für die anfängliche Authentifizierung in Kerberos (PKINIT)
- RFC 5868 - Problemanweisung zum Cross-Realm-Vorgang von Kerberos
- Generisches RFC 5896-Anwendungsprogramm für Sicherheitsdienste (GSS-API): Delegieren, wenn durch Richtlinien genehmigt.
- RFC 6111 Weitere Kerberos-Namensbeschränkungen
- RFC 6112-Unterstützung für die Unterstützung von Kerberos
- RFC 6113 A Generalized Framework für die Kerberos-Vorauthentifizierung
- RFC 6251 Verwenden von Kerberos Version 5 über das Transport Layer Security (TLS) -Protokoll
- RFC 6448 Die unverschlüsselte Form der Kerberos 5-KRB-CRED-Nachricht
- RFC 6542 Generische Sicherheitsdienstanwendung Programmschnittstelle (GSS-API) Channel-Binding-Hash-Agility
- RFC 6560-Authentifizierung für Einmalpasswörter (OTP)
- RFC 6649 verwerfen DES, RC4-HMAC-EXP und andere schwache Krypta ographische Algorithmen in Kerberos
- RFC 6784 Kerberos-Optionen für DHCPv6
- RFC 6803 Kamelienverschlüsselung für Kerberos 5
- RFC 6806 Kerberos Principal Name Kanonisierung und bereichsübergreifende Verweise
- RFC 6880 Ein Informationsmodell für Kerberos Version 5 19659121] Weiterführende Literatur [ edit ]
Externe Links [ edit
Wikimedia Commons hat Medien im Zusammenhang mit Kerberos .
Không có nhận xét nào:
Đăng nhận xét