Erkläre, wie ich 5 Jahre alt bin: Kerberos-was ist Kerberos und warum sollte es mich interessieren?

Obwohl dieses Thema einem 5-Jährigen wahrscheinlich nicht erklärt und verstanden werden kann, ist dies mein Versuch, die Dokumentation mit einigen visuellen Hilfsmitteln und einer verdaulichen Sprache zu defragmentieren.,

Auf den Punkt gebracht

Grundsätzlich kommt Kerberos auf Folgendes an:

  • Ein Authentifizierungsprotokoll
  • verwendet Tickets zur Authentifizierung
  • vermeidet das lokale Speichern von Passwörtern oder das Senden über das Internet
  • beinhaltet ein vertrauenswürdiges 3rd-Party
  • basierend auf symmetrischer Schlüsselkryptographie

Sie haben ein Ticket-Ihr Identitätsnachweis ist mit einem geheimen Schlüssel verschlüsselt für den angeforderten Dienst – auf Ihrem lokalen Computer (die Erstellung eines Tickets wird unten beschrieben); Solange es gültig ist, können Sie auf den angeforderten Dienst zugreifen, der sich in einem Kerberos – Bereich befindet.,

Normalerweise wird dies in unternehmens – / internen Umgebungen verwendet. Vielleicht möchten Sie auf Ihre interne Gehaltsabrechnungsseite zugreifen, um zu überprüfen, welchen kleinen Bonus Ihr Chef Ihnen gegeben hat. Anstatt Ihre Benutzer – / Kennwortanmeldeinformationen erneut einzugeben, wird Ihr Ticket (auf Ihrem System zwischengespeichert) zur Authentifizierung verwendet, sodass eine einmalige Anmeldung möglich ist.

Ihr Ticket wird aktualisiert,wenn Sie sich auf Ihrem Computer anmelden, oder wenn Sie kinit USER in Ihrem Terminal.

Für die Trivia-Liebenden stammt Kerberos ‚ Name aus der griechischen Mythologie, dem dreiköpfigen Wachhund des Hades., Es ist ziemlich passend, da es einen Drittanbieter (ein Schlüsselverteilungszentrum) benötigt, um sich zwischen einem Client und einem Dienst oder Hostcomputer zu authentifizieren.

Wikipedia

Kerberos-Realm

Admins erstellen realms – Kerberos-realms – das umfassen alles, was verfügbar ist, zugreifen. Zugegeben, Sie haben möglicherweise keinen Zugriff auf bestimmte Dienste oder Hostcomputer, die in der Richtlinienverwaltung definiert sind – Entwickler sollten auf nichts Finanzbezogenes zugreifen. Ein Realm definiert jedoch, was Kerberos verwaltet, und zwar in Bezug darauf, wer auf was zugreifen kann.,

Ihr Computer, der Client, lebt in diesem Bereich, ebenso wie der Dienst oder Host, den Sie anfordern möchten, und das Schlüsselverteilungszentrum KDC (nein, nicht der KGB, obwohl ich immer daran denke auch). Im folgenden Beispiel trenne ich den Authentifizierungsserver und den Ticket-Gewährungsserver, aber beide befinden sich innerhalb des KDC.

Um im Hinterkopf zu bleiben

Vielleicht möchten Sie hierher zurückkehren, nachdem Sie die groben Details zur Funktionsweise des Beispiels durchgelesen haben.,

Wenn Sie Zugriff auf einen Dienst oder Host anfordern, finden drei Interaktionen zwischen Ihnen und:

  • dem Authentifizierungsserver
  • dem Ticket Granting Server
  • dem Dienst oder Hostcomputer, auf den Sie zugreifen möchten.

Weitere wichtige Punkte:

  • Bei jeder Interaktion erhalten Sie zwei Nachrichten. Jede Nachricht ist eine, die Sie entschlüsseln können, und eine, die Sie nicht können.
  • Der Dienst oder die Maschine, auf die Sie Zugriff anfordern, kommuniziert niemals direkt mit dem KDC.,
  • Das KDC speichert alle geheimen Schlüssel für Benutzermaschinen und-dienste in seiner Datenbank.
  • Geheime Schlüssel sind Passwörter plus ein Salz, das gehashte werden – der Hash-Algorithmus wird während der Implementierung des Kerberos Setup gewählt. Für Dienste oder Hostcomputer gibt es keine Kennwörter (wer würde sie eingeben). Ein Schlüssel wird während der Ersteinrichtung tatsächlich von einem Administrator generiert und auf dem Dienst – /Hostcomputer gespeichert.
  • Auch hier werden diese geheimen Schlüssel alle in der KDC-Datenbank gespeichert. Erinnere dich an die Abhängigkeit der Kerberos von symmetrischer Schlüsselkryptographie.,
  • Das KDC selbst ist mit einem Masterschlüssel verschlüsselt, um eine Ebene von Schwierigkeiten beim Stehlen von Schlüsseln aus der Datenbank hinzuzufügen.
  • Es gibt Kerberos-Konfigurationen und-Implementierungen, die Public-Key-Kryptographie anstelle der symmetrischen Schlüsselverschlüsselung verwenden.

Beiseite: Die Reihenfolge der hier diskutierten Nachrichten und deren Inhalt spiegelt nicht die Reihenfolge wider, in der sie über TCP oder UDP gesendet werden.

Das folgende Beispiel beschreibt, was passiert, wenn Sie etwas von einem internen HTTP – Dienst anfordern-ähnliche Informationen zur Gehaltsabrechnung in Ihrem Unternehmensintranet.,

Sie und der Authentifizierungsserver

Sie möchten auf einen HTTP-Dienst zugreifen, aber zuerst müssen Sie sich dem Authentifizierungsserver vorstellen. Wenn Sie sich bei Ihrem Computer anmelden oder kinit USERNAME, wird diese Einführung über eine Klartextanforderung für ein Ticket Granting Ticket (TGT) initiiert., Die Klartext-Nachricht enthält:

  • Ihr name/ID
  • den Namen/die ID des angeforderten Dienstes (in diesem Fall die service-der Ticket-Granting-Server),
  • Sie Ihre Netzwerk-Adresse (kann eine Liste von IP-Adressen für mehrere Maschinen, oder kann null sein, wenn verwenden möchten auf einem Computer), und
  • ersuchten Lebenszeit für die Gültigkeit des TGT,

und an den Authentifizierungs-Server.

Der Authentifizierungsserver prüft, ob Sie sich in der KDC-Datenbank befinden. Diese Prüfung dient nur dazu, festzustellen, ob Sie vorhanden sind; Es werden keine Anmeldeinformationen überprüft.,

Wenn keine Fehler vorliegen (z. B. Benutzer nicht gefunden wird), wird zufällig ein Schlüssel generiert, der als Sitzungsschlüssel bezeichnet wird für die Verwendung zwischen Ihnen und dem Ticket Granting Server (TGS).

Der Authentifizierungsserver sendet dann zwei Nachrichten an Sie zurück., Eine Nachricht ist der TGT, der Folgendes enthält:

  • Ihr Name/ID,
  • der TGS-Name/ID,
  • Zeitstempel,
  • Ihre Netzwerkadresse (kann eine Liste von IP-Adressen für mehrere Computer sein oder null sein, wenn Sie sie auf einem beliebigen Computer verwenden möchten)
  • Lebensdauer des TGT (könnte das sein, was Sie ursprünglich angefordert haben, niedriger, wenn Sie oder die geheimen Schlüssel des TGS ablaufen, oder ein anderes Limit, das während des Kerberos Setup) und
  • TGS Session Key,

und wird mit dem TGS Secret Key verschlüsselt ., Die andere Nachricht enthält:

  • den TGS-Namen / die TGS-ID,
  • – Zeitstempel,
  • – Lebensdauer (wie oben beschrieben) und
  • TGS-Sitzungsschlüssel

und ist mit Ihrem geheimen Clientschlüssel verschlüsselt. Beachten Sie, dass der TGS-Sitzungsschlüssel der gemeinsame Schlüssel zwischen Ihnen und der TGS ist.

Ihr geheimer Clientschlüssel wird bestimmt, indem Sie nach Ihrem Passwort gefragt werden, ein salt anhängen (bestehend aus ) und das Ganze Hashing. Jetzt können Sie es zum Entschlüsseln der zweiten Nachricht verwenden, um den TGS-Sitzungsschlüssel zu erhalten., Wenn das Passwort falsch ist, können Sie die Nachricht nicht entschlüsseln. Bitte beachten Sie, dass dies der Schritt ist, in dem das eingegebene Passwort implizit validiert wird.

Sie können den TGT jedoch nicht entschlüsseln, da Sie den geheimen TGS-Schlüssel nicht kennen. Das verschlüsselte TGT wird in Ihrem Anmeldeinformationscache gespeichert.

Sie und der Ticket Granting Server

Zu diesem Zeitpunkt haben Sie den TGT, den Sie nicht lesen können, da Sie nicht über den geheimen TGS-Schlüssel verfügen, um ihn zu entschlüsseln. Sie haben jedoch den TGS-Sitzungsschlüssel.,

Jetzt sind Sie dran, zwei Nachrichten zu senden. Sie bereiten zuerst den Authentifikator vor, der mit dem TGS-Sitzungsschlüssel verschlüsselt ist und Folgendes enthält:

  • Ihren Namen / Ihre ID und
  • Zeitstempel.

Sie senden eine unverschlüsselte Nachricht, die Folgendes enthält:

  • der angeforderte HTTP-Dienstname / – ID, auf die Sie zugreifen möchten, und
  • Lebensdauer des Tickets für den HTTP-Dienst,

zusammen mit dem verschlüsselten Authentifikator und TGT an den Ticket-Zuteilungsserver.

Der Ticket Granting Server überprüft zunächst die KDC-Datenbank, ob der HTTP-Dienst vorhanden ist.,

Wenn ja, entschlüsselt der TGS den TGT mit seinem geheimen Schlüssel . Da der jetzt unverschlüsselte TGT den TGS-Sitzungsschlüssel enthält, kann der TGS den von Ihnen gesendeten Authentifikator entschlüsseln.,beispiel:

  • Vergleichen Sie Ihre Client-ID vom Authenticator mit der des TGT
  • Vergleichen Sie den Zeitstempel vom Authenticator mit dem des TGT (typische Kerberos-Systemtoleranz beträgt 2 Minuten, kann aber anders konfiguriert werden)
  • Überprüfen Sie, ob der TGT abgelaufen ist (das Lifetime-Element),
  • Überprüfen Sie, ob sich der Authenticator nicht bereits im Cache des TGS befindet (um Wiederholungsangriffe zu vermeiden), und
  • wenn die Netzwerkadresse in der ursprünglichen Anforderung nicht null ist, vergleicht sie die IP-Adresse der Quelle mit Ihrer Netzwerkadresse (oder innerhalb der angeforderten Liste) innerhalb des TGT.,

Der Ticket-Granting-Server dann nach dem Zufallsprinzip erzeugt den HTTP-Service Session Key und bereitet den HTTP-Service-ticket für Sie enthält:

  • Ihr name/ID,
  • HTTP-Service-name/ID,
  • Sie Ihre Netzwerk-Adresse (kann eine Liste von IP-Adressen für mehrere Maschinen, oder kann null sein, wenn verwenden möchten auf einem Computer),
  • timestamp
  • Lebensdauer der Gültigkeit des Tickets, und
  • HTTP-Service Session Key,

und verschlüsselt es mit dem HTTP-Service Geheimen Schlüssel.

Dann sendet Ihnen die TGS zwei Nachrichten., Das eine ist das verschlüsselte HTTP-Dienstticket; das andere enthält:

  • HTTP-Dienstname / – ID,
  • Zeitstempel,
  • Lebensdauer der Gültigkeit des Tickets und
  • HTTP-Dienstsitzungsschlüssel,

, der mit dem TGS-Sitzungsschlüssel verschlüsselt ist.

Ihr Computer entschlüsselt die letztere Nachricht mit dem zuvor zwischengespeicherten TGS-Sitzungsschlüssel, um den HTTP-Dienstsitzungsschlüssel abzurufen.

Ihr Computer kann das HTTP-Dienstticket jedoch nicht entschlüsseln, da es mit dem geheimen HTTP-Dienstschlüssel verschlüsselt ist.,

Sie und der HTTP-Dienst

Um jetzt auf den HTTP-Dienst zuzugreifen, bereitet Ihr Computer eine weitere Authentifizierungsnachricht vor, die Folgendes enthält:

  • Ihr Name/ID,
  • Zeitstempel,

und ist mit dem HTTP-Dienstsitzung Schlüssel verschlüsselt. Ihr Computer sendet dann den Authentifikator und das noch verschlüsselte HTTP-Dienstticket, das von der TGS empfangen wurde.

Der HTTP-Dienst entschlüsselt dann das Ticket mit seinem geheimen Schlüssel, um den HTTP-Dienst-Sitzungsschlüssel zu erhalten., Anschließend wird dieser Sitzungsschlüssel verwendet, um die von Ihnen gesendete Authentifizierungsnachricht zu entschlüsseln.,wenn Sie Ihre Client-ID vom Authentifikator mit der des Tickets vergleichen, vergleicht

  • den Zeitstempel vom Authentifikator mit dem des Tickets (typische Kerberos-Systemdifferenztoleranz beträgt 2 Minuten, kann aber anders konfiguriert werden),
  • überprüft, ob das Ticket abgelaufen ist (das Lifetime-Element),
  • überprüft, ob sich der Authentifikator nicht bereits im Cache des HTTP-Servers befindet (um Wiederholungsangriffe zu vermeiden), und
  • wenn die Netzwerkadresse in der ursprünglichen Anforderung nicht ist nicht null, vergleicht die IP-Adresse der Quelle mit Ihrer Netzwerkadresse (oder innerhalb der angeforderten Liste) innerhalb des Tickets.,
  • Der HTTP-Dienst sendet dann eine Authentifizierungsnachricht mit seiner ID und seinem Zeitstempel, um seine Identität zu bestätigen, und wird mit dem HTTP-Dienstsitzungsschlüssel verschlüsselt.

    Ihr Computer liest die Authentifizierungsnachricht durch Entschlüsseln mit dem zwischengespeicherten HTTP-Dienstsitzungsschlüssel und weiß, dass er eine Nachricht mit der ID und dem Zeitstempel des HTTP-Dienstes empfangen muss.

    Und jetzt wurden Sie authentifiziert, um den HTTP-Dienst zu verwenden., Zukünftige Anforderungen verwenden das zwischengespeicherte HTTP-Dienstticket, solange es nicht wie im lifetime-Attribut definiert abgelaufen ist.

    Während ich später darauf schreiben werde, muss der HTTP-Dienst selbst Kerberos unterstützen können. Außerdem müssen Sie über einen Browser verfügen, der SPNEGO/Negotiate unterstützt.,

    Lesen Sie vielleicht die zuvor skizzierten Punkte erneut.Schauen Sie sich diese oder diese aktuelle Implementierung an, insbesondere diejenige, für die ich bezahlt werde, die mit dieser beliebten Implementierung kommuniziert; oder überprüfen Sie ein Tutorial, einen Ressourcenführer, das Go-to-Video, das mir gesendet wurde, als ich anfing, etwas über Kerberos oder den RFC selbst zu lernen.

    Die obigen Bilder wurden mit Keynote mit Symbolen aus font awesome und Glyphicons gerendert und sind auf Slideshare verfügbar.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.