wyjaśnij, jak mam 5 lat: Kerberos – co to jest Kerberos i dlaczego powinno mnie to obchodzić?

chociaż tego tematu prawdopodobnie nie da się wytłumaczyć 5-latkowi i zrozumieć, to jest to moja próba defragmentacji dokumentacji za pomocą niektórych pomocy wizualnych i strawnego języka.,

w skrócie

zasadniczo, Kerberos sprowadza się do tego:

  • protokół do uwierzytelniania
  • używa biletów do uwierzytelniania
  • unika przechowywania haseł lokalnie lub wysyłania ich przez internet
  • obejmuje zaufaną stronę trzecią
  • zbudowaną na kryptografii symetrycznej

masz bilet-dowód tożsamości zaszyfrowany za pomocą szyfrowania tajny klucz dla konkretnej żądanej usługi-na lokalnym komputerze (utworzenie biletu jest opisane poniżej); tak długo, jak jest ważny, możesz uzyskać dostęp do żądanej usługi, która znajduje się w serwerze Kerberos.,

zazwyczaj jest to używane w środowiskach korporacyjnych / wewnętrznych. Być może chcesz uzyskać dostęp do wewnętrznej strony płac, aby sprawdzić, jaki bonus dał ci szef. Zamiast ponownie wprowadzać poświadczenia użytkownika/hasła, bilet (buforowany w systemie) jest używany do uwierzytelniania, umożliwiając jednokrotne logowanie.

Twój bilet jest odświeżany po zalogowaniu się do komputera lub pokinit USER w terminalu.

dla miłośników ciekawostek imię Kerberosa pochodzi z mitologii greckiej, trzygłowego psa stróżującego z Hadesu., Jest to całkiem odpowiednie, ponieważ uwierzytelnienie między Klientem a usługą lub maszyną hosta wymaga uwierzytelnienia innej firmy (Centrum dystrybucji kluczy).

Wikipedia

Kerberos Realms

Administratorzy tworzą domeny – Kerberos realms – które obejmą wszystko, co jest dostępne. Przyznaję, że możesz nie mieć dostępu do niektórych usług lub maszyn hosta, które są zdefiniowane w zarządzaniu zasadami – programiści nie powinni mieć dostępu do niczego związanego z finansami, takich rzeczy. Ale realm określa, co Kerberos zarządza pod względem tego, kto może uzyskać dostęp do czego.,

twoja maszyna, Klient, mieszka w tym obszarze, jak również usługa lub host, o który chcesz poprosić i centrum dystrybucji kluczy, KDC(Nie, Nie KGB, chociaż zawsze o tym myślę). W poniższym przykładzie oddzielam serwer uwierzytelniania i serwer przyznawania biletów, ale oba są w KDC.

aby zachować spokój umysłu

możesz wrócić tutaj po przeczytaniu szczegółowych informacji na temat działania przykładu.,

w przypadku żądania dostępu do usługi lub hosta zachodzą trzy interakcje między Użytkownikiem a:

  • serwerem uwierzytelniania
  • serwerem przyznającym bilety
  • usługą lub maszyną hosta, do której chcesz uzyskać dostęp.

Inne ważne punkty:

  • przy każdej interakcji otrzymasz dwie wiadomości. Każda wiadomość jest taka, którą można odszyfrować i taka, której nie można.
  • usługa lub maszyna, do której żądasz dostępu, nigdy nie komunikuje się bezpośrednio z KDC.,
  • KDC przechowuje wszystkie tajne klucze dla maszyn użytkowników i usług w swojej bazie danych.
  • tajne klucze to hasła plus sól, które są haszowane – algorytm haszujący jest wybierany podczas implementacji konfiguracji Kerberos. W przypadku usług lub hostów nie ma haseł (kto by je wprowadził). Klucz jest generowany przez administratora podczas wstępnej konfiguracji i zapisywany na maszynie usługi/hosta.
  • ponownie, wszystkie te tajne klucze są przechowywane w bazie danych KDC; przypomnijmy, że Kerberos polegali na kryptografii klucza symetrycznego.,
  • samo KDC jest szyfrowane za pomocą klucza głównego, aby dodać warstwę trudności z kradzieżą kluczy z bazy danych.
  • istnieją konfiguracje i implementacje Kerberos, które używają kryptografii klucza publicznego zamiast szyfrowania klucza symetrycznego.

a na bok: kolejność komunikatów i ich zawartość omawiana tutaj nie odzwierciedla kolejności, w jakiej są wysyłane przez TCP lub UDP.

poniższy przykład opisuje, co się dzieje, gdy żądasz czegoś z wewnętrznej usługi HTTP – np. informacji dotyczących płac w intranecie korporacyjnym.,

Ty i serwer uwierzytelniania

chcesz uzyskać dostęp do usługi HTTP, ale najpierw musisz przedstawić się serwerowi uwierzytelniania. Logując się do komputera lub kinit USERNAME, inicjuje to wprowadzenie za pomocą zwykłego tekstu żądania o bilet przyznający bilet (TGT)., Wiadomość tekstowa zawiera:

  • Twoje imię i nazwisko/identyfikator
  • nazwę/identyfikator żądanej usługi (w tym przypadku usługa jest serwerem przyznającym bilety),
  • Twój adres sieciowy (może być listą adresów IP dla wielu maszyn lub może być zerowy, jeśli chcesz użyć na dowolnym komputerze), i
  • żądany czas życia dla ważności TGT,

i jest wysyłany do serwera uwierzytelniania.

serwer uwierzytelniania sprawdzi, czy jesteś w bazie danych KDC. Ta kontrola jest tylko po to, aby sprawdzić, czy istniejesz; żadne poświadczenia nie są sprawdzane.,

Jeśli nie ma błędów (np. nie znaleziono użytkownika), wygeneruje on losowo klucz zwany kluczem sesji do użycia między tobą a serwerem przyznawania biletów (TGS).

serwer uwierzytelniania wyśle do ciebie dwie wiadomości., Jednym z komunikatów jest TGT, który zawiera:

  • Twoje imię i nazwisko/identyfikator,
  • nazwę/identyfikator TGS,
  • znacznik czasu,
  • Twój adres sieciowy (może być listą adresów IP dla wielu maszyn lub może być null, jeśli chcesz użyć na dowolnym komputerze)
  • żywotność TGT (może być tym, o co początkowo prosiłeś, niższym, jeśli ty lub tajne klucze TGS mają wygasnąć, lub innym limitem, który został zaimplementowany podczas konfiguracja Kerberos) oraz
  • klucz sesji TGS,

i jest szyfrowany tajnym kluczem TGS ., Druga wiadomość zawiera:

  • nazwę/ID TGS,
  • znacznik czasu,
  • lifetime (taki sam jak powyżej) i
  • klucz sesji TGS

i jest zaszyfrowany tajnym kluczem klienta. Pamiętaj, że klucz sesji TGS jest kluczem współdzielonym między tobą a TGS.

Twój tajny klucz klienta jest określany przez monit o podanie hasła, dodanie soli (składającej się z) I zahaszowanie całości. Teraz możesz go użyć do odszyfrowania drugiej wiadomości w celu uzyskania klucza sesji TGS., Jeśli hasło jest nieprawidłowe, nie będzie można odszyfrować wiadomości. Należy pamiętać, że jest to krok, w którym wprowadzone hasło jest domyślnie zatwierdzane.

nie możesz jednak odszyfrować TGT, ponieważ nie znasz tajnego klucza TGS. Zaszyfrowany TGT jest przechowywany w pamięci podręcznej poświadczeń.

Ty i serwer przyznający bilety

w tym momencie masz TGT, którego nie możesz odczytać, ponieważ nie masz tajnego klucza TGS, aby go odszyfrować. Masz jednak klucz sesji TGS.,

teraz twoja kolej na wysłanie dwóch wiadomości. Najpierw przygotowujesz Authenticator, zaszyfrowany kluczem sesji TGS, zawierający:

  • Twoje imię/identyfikator i
  • znacznik czasu.

wysyłasz niezaszyfrowaną wiadomość, która zawiera:

  • żądaną nazwę/ID usługi HTTP, do której chcesz uzyskać dostęp, oraz
  • żywotność biletu dla usługi HTTP,

wraz z zaszyfrowanym Authenticatorem i TGT na serwer przyznający bilety.

Serwer przyznający bilety najpierw sprawdzi bazę danych KDC, aby sprawdzić, czy usługa HTTP istnieje.,

Jeśli tak, TGS odszyfruje TGT za pomocą tajnego klucza . Ponieważ obecnie niezaszyfrowany TGT zawiera klucz sesji TGS, TGS może odszyfrować wysłany Uwierzytelniacz.,dzięki:

  • porównaj identyfikator klienta z Authenticatora do TGT
  • porównaj znacznik czasu z Authenticatora do TGT (typowa tolerancja różnicy w systemie Kerberos wynosi 2 minuty, ale może być skonfigurowana w inny sposób)
  • sprawdź, czy TGT wygasł (element lifetime),
  • sprawdź, czy Authenticator nie znajduje się już w pamięci podręcznej TGS (aby uniknąć ataków replay), I
  • jeśli adres sieciowy w pierwotnym żądaniu nie jest null, porównuje adres IP źródła z Twoim adresem sieciowym (lub na żądanej liście) w TGT.,

Serwer przyznający bilety następnie losowo generuje klucz sesji usługi HTTP i przygotowuje dla Ciebie bilet usługi HTTP, który zawiera:

  • Twoje imię i nazwisko/identyfikator,
  • nazwa/identyfikator usługi HTTP,
  • Twój adres sieciowy (może być listą adresów IP dla wielu maszyn lub może być zerowy, jeśli chcesz użyć na dowolnym komputerze),
  • znacznik czasu,
  • okres ważności biletu i
  • klucz sesji usługi http,

i szyfruje go tajnym kluczem usługi http.

następnie TGS wysyła Ci dwie wiadomości., Jednym z nich jest zaszyfrowany bilet usługi HTTP; drugi zawiera:

  • nazwa/ID usługi HTTP,
  • znacznik czasu,
  • okres ważności biletu i
  • klucz sesji usługi HTTP,

który jest zaszyfrowany kluczem sesji TGS.

twoja maszyna odszyfrowuje tę ostatnią wiadomość za pomocą klucza sesji TGS, który był wcześniej buforowany, aby uzyskać klucz sesji usługi HTTP.

Twój komputer nie może jednak odszyfrować biletu usługi HTTP, ponieważ jest zaszyfrowany tajnym kluczem usługi HTTP.,

Ty i usługa HTTP

aby uzyskać dostęp do usługi HTTP, twoja maszyna przygotowuje kolejną wiadomość uwierzytelniającą, która zawiera:

  • Twoje imię i nazwisko/identyfikator,
  • znacznik czasu,

i jest szyfrowana za pomocą klucza sesji usługi HTTP. Następnie urządzenie wysyła Authenticator i wciąż zaszyfrowany bilet usługi HTTP otrzymany od TGS.

usługa HTTP odszyfruje bilet za pomocą tajnego klucza, aby uzyskać klucz sesji usługi HTTP., Następnie używa tego klucza sesji do odszyfrowania wysłanej wiadomości Authenticator.,es Twój identyfikator klienta z Authenticatora do identyfikatora biletu,

  • porównuje znacznik czasu z Authenticatora do identyfikatora biletu (typowa tolerancja systemu Kerberos wynosi 2 minuty, ale może być skonfigurowana w inny sposób),
  • sprawdza, czy bilet wygasł (element lifetime),
  • sprawdza, czy Authenticator nie jest już w pamięci podręcznej serwera HTTP (aby uniknąć ataków replay), i
  • jeśli adres sieciowy w pierwotnym żądaniu nie jest NULL, porównuje adres IP źródła z twoim adresem sieciowym (lub na żądanej liście) w paragonie.,
  • usługa HTTP wysyła wiadomość uwierzytelniającą zawierającą swój identyfikator i znacznik czasu w celu potwierdzenia tożsamości i jest szyfrowana kluczem sesji usługi HTTP.

    Twój komputer odczytuje wiadomość Authenticator, odszyfrowując ją za pomocą buforowanego klucza sesji usługi HTTP i wie, że musi otrzymać wiadomość z identyfikatorem usługi HTTP i znacznikiem czasu.

    a teraz zostałeś uwierzytelniony, aby korzystać z usługi HTTP., Przyszłe żądania używają buforowanego paragonu usługi HTTP, o ile nie wygasł on zgodnie z definicją w atrybucie lifetime.

    chociaż napiszę o tym później, sama usługa HTTP musi być w stanie obsługiwać Kerberos. Musisz również mieć przeglądarkę, która obsługuje SPNEGO / Negocjuj.,

    być może ponownie przeczytaj punkty wcześniej opisane; sprawdź tę lub obecną implementację, zwłaszcza tę, na której jestem opłacany za pracę, która komunikuje się z tą popularną implementacją; lub przejrzyj samouczek, przewodnik po zasobach, film, który został wysłany do mnie, gdy zacząłem uczyć się o Kerberos, lub samego RFC.

    powyższe obrazy zostały renderowane za pomocą Keynote z ikonami używanymi z font awesome i gliphicons i są dostępne w slideshare.

    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *