Kerberos: Rozdzielanie AS i TGS

9

W Kerberos, serwer uwierzytelniania (AS) i serwer przyznawania biletów (TGS) są zazwyczaj zaimplementowane na tym samym serwerze. To urządzenie nazywa się Centrum dystrybucji kluczy (KDC).

Z pewnością sensowne jest wdrożenie tych usług na tej samej maszynie fizycznej, ponieważ w małych i średnich sieciach rozdzielenie tych dwóch usług byłoby nadmierną przesadą. Dodatkowo mam stosunkowo wiarygodne źródło, które mówi (przetłumaczone):

TGS i AS muszą mieć dostęp do tego samego DB => nie ma sensu wdrażanie TGS i AS na różnych komputerach

Jednak nie widzę, która baza danych musi być dzielona między nimi.

Oto mój pomysł, jak oddzielić AS i TGS, nie ma wspólnych baz danych:

  • Ponieważ AS i TGS są oddzielone, mają one inny Master Secret
  • AS ma bazę danych ze wszystkimi użytkownikami z ich głównym kluczem tajnym (używanym, gdy Użytkownik loguje się, do szyfrowania klucza sesji), a także kluczem głównym TGS (do szyfrowania żądanych TGT).
  • TGS ma bazę danych, która pozwala określić, który użytkownik może korzystać z której usługi (ACL, lista odwołania, ...), a także bazę danych ze wszystkimi usługami z ich odpowiednimi tajnymi kluczami głównymi (do szyfrowania Biletów).

Gdy użytkownik chce skorzystać z usługi (uproszczonej):

  • Uwierzytelnij w AS
  • Uzyskaj bilet przyznający bilet (TGT), zaszyfrowany przy użyciu głównego klucza tajnego TGS, a także klucz sesji zaszyfrowany przy użyciu głównego klucza tajnego użytkownika.
  • Skontaktuj się z TGS z TGT
  • Zdobądź bilet, zaszyfrowany głównym sekretem serwisu
  • Skontaktuj się z obsługą z biletem

Czy coś mi brakuje, czy naprawdę nie ma żadnego problemu z oddzieleniem AS i TGS?

Misch
źródło
1
Wygląda na to, że jesteś zbyt głęboko osadzony w Kerberos. Zwykłym sposobem skalowania jest po prostu dodanie kolejnych KDC, więc nie jestem pewien, co próbujesz osiągnąć.
Michael Hampton
1
Zgadza się - z jakim problemem faktycznie się zmagasz, który próbujesz rozwiązać?
mfinni
1
Nie próbuję rozwiązać żadnego konkretnego problemu. Próbuję po prostu zrozumieć wewnętrzne elementy Kerberos (do egzaminu), ale w tej chwili nie chcę ich używać. Pytanie jest czysto teoretyczne, chcę tylko wiedzieć, czy zrozumiałem coś złego, czy też cytat w moim pytaniu nie jest całkowicie poprawny.
Misch

Odpowiedzi:

4

Twoje pytanie to cała teoria. Więc odpowiem w naturze. AS i TGS są serwerami logicznymi i jako takie można je teoretycznie rozdzielić. Ale w praktyce nie ma dobrego powodu, aby wdrażać je na osobnych maszynach, więc nikt nie robi tego w prawdziwym życiu. Nawet największe, najbardziej obciążone sieci na świecie pod względem uwierzytelniania Kerberos nie muszą rozdzielać logicznych komponentów KDC. W rzeczywistych implementacjach Kerberos wszystkie dane potrzebne AS i wszystkie dane TGS są przechowywane w tej samej bazie danych. To mogłoby teoretycznie być oddzielone, ale po prostu nie ma dobry powód, aby to zrobić i zrobi nic, ale niepotrzebnie skomplikować realizację.

Ryan Ries
źródło
1
Właśnie znalazłem inny problem podczas oddzielania AS i TGS: Nie tylko można uzyskać TGT z AS, ale możesz również poprosić o bilet na inną usługę (np. Jeśli wiesz, że będziesz potrzebować tylko tego jednego biletu, więc nie ma potrzeby objazdu przez TGT). Oznacza to, że AS dodatkowo potrzebuje wszystkich danych, które, jak zakładałem, tylko TGS.
Misch