« poprzedni punkt |
W procesie uwierzytelniania może być wykorzystywana zaufana strona trzecia (trusted third-party), która poświadcza tożsamość klienta i serwera. Jest nazywana serwerem bezpieczeństwa (security serwer). Jego zadaniem jest przechowywanie haseł wykorzystywanych podczas weryfikacji użytkowników i serwerów. Jest to jedyne miejsce przechowywania haseł.
Wymagania:
Przykładem systemu uwierzytelniania z udziałem strony trzeciej jest system Kerberos.
System Kerberos powstał w czasie realizacji projektu Athena na uniwersytecie MIT. Projekt miał na celu integrację komputerów uniwersyteckich. System weryfikacji autentyczności jest oparty na znajomości haseł zapisanych w serwerze Kerberosa. W procesie uwierzytelniania wykorzystuje się tajny dzielony klucz (shared secret), który pozwala na identyfikację użytkowników bez eksponowania informacji narażających bezpieczeństwo sieci. W systemie uwierzytelniania wyróżnić można cztery komponenty.
Konto w bazie zawiera dane dotyczące tożsamości oraz klucze główne (np. hasła) wszystkich klientów i serwerów z danego obszaru. Klucz główny serwera uwierzytelniajacego służy do szyfrowania wszystkich kluczy głównych klientów udaremniając nieautoryzowany dostęp do serwera.
Poważną wadą systemu jest jego dostęp do zaszyfrowanych haseł użytkowników. Powoduje to, że zawarte są w nim dane krytyczne dla bezpieczeństwa i powinien być on chroniony w sposób szczególny.
Serwer Kerberosa jest bezstanowy. Odpowiada po prostu na żądania użytkowników i wydaje przepustki (żetony, bilety). Ułatwia to tworzenie replikowanych serwerów zapasowych. Funkcjonowanie systemu z punktu widzenia użytkownika niczym nie różni się od systemu tradycyjnego. Idea systemu Kerberos została przedstawiona na rys. 5.
Wymiana informacji między klientem (C1) i serwerem uwierzytelniającym (AS)
Celem tej wymiany jest weryfikacja tożsamości użytkownika i nadanie mu prawa do otrzymywania biletu dostępu do usługi
C1>AS: C1, TGS, T2
Klient C1 wysyła niezaszyfrowany komunikat do AS prosząc o bilet (ticket) na komunikację z serwerem TGS. Komunikat zawiera identyfikator klienta (C1), identyfikator serwera przyznającego bilety i znacznik czasowy umożliwiający synchronizację zegarów C1 i AS. AS na podstawie przechowywanego u siebie hasła użytkownika tworzy klucz szyfrowania.
AS>C1: {TGS, KC1,TGS, T2, L2 , {TGT C1,TGS} K AS,TGS } KC1
AS odsyła do C1 komunikat zaszyfrowany kluczem wytworzonym na podstawi hasła klienta C1. Komunikat ten zawiera identyfikator serwera przyznającego bilety (TGS), klucz sesyjny (klucz znany klientowi C1 i TGS), znacznik czasu (T2), okres ważności biletu (L2).
Druga część komunikatu zawiera przepustkę udzielającą przepustki (Ticket Granting Ticket - TGT) zaszyfrowaną kluczem wspólnym AS i TGS. TGT nie jest odszyfrowywana przez klienta C1. Będzie wykorzystywana do otrzymywania zezwolenia uzyskania określonych usług wewnątrz obszaru odpowiedzialności Kerberosa. TGT eliminuje potrzebę ponawiania procesu identyfikacji przy każdej następnej prośbie.
TGT zawiera: identyfikator i adres klienta, identyfikator serwera TGS, klucz sesyjny (KC1,TGS), znacznik czasu (T2), okres ważności biletu (L2).
Klucze wykorzystywane przy szyfrowaniu mają długość 56 bitów i są uzyskiwane na podstawie hasła określonej jednostki.
Wymiana informacji między klientem (C1) i serwerem przepustek (TGS)
Po otrzymaniu przepustki udzielającej przepustki (TGT) użytkownik może wykonywać operacje wymagające uwierzytelnienia (np. dostęp do pliku). Kiedy użytkownik po raz pierwszy próbuje uzyskać dostęp do serwera aplikacji (S1) zabezpieczonego przez Kerberos, oprogramowanie jego stacji komunikuje się z serwerem przepustek (TGS) i prosi o przepustkę do serwera aplikacji.
C1>TGS: {S1, C1, T3 } KC1,TGS,
{TGT C1,TGS} K AS,TGS
Prośba jest zakodowana kluczem sesyjnym (KC1,TGS) otrzymanym poprzednio od AS. Zawiera nazwę serwera S1 i poświadczenie (authentikator) klienta (nazwę i adres klienta oraz znacznik czasu). Poświadczenie ma bardzo krótki okras ważności i nie może być wykorzystywane wielokrotnie. Klient przedstawia również TGT zakodowany kluczem wspólnym AS i TGS. Zawarty w TGT klucz sesyjny umożliwia rozszyfrowanie prośby.
TGS w odpowiedzi tworzy klucz sesyjny, którym będą się posługiwały C1 i S1 (KC1,S1). Tworzy też specjalną przepustkę (BC1,S1) uprawniającą do dostępu do serwera S1 i wysyła komunikat do klienta C1.
TGS>C1: { KC1,S1, S1, T4, {BC1,S1 }KS1,TGS }KC1,TGS
Uzyskany bilet jest przedstawiany serwerowi plików razem z żądaniem dostępu. Bilet ten zawiera sesyjny klucz szyfrowania KC1,S1, identyfikator i adres klienta, identyfikator serwera S1, znacznik czasu i okres ważności biletu. Jest zaszyfrowany kluczem współdzielonym przez TGS i S1.
Wymiana informacji między klientem (C1) i serwerem aplikacji (S1)
C1>S1: {BC1,S1 }KS1,TGS, { C1, T5 }KC1,S1
Bilet zawiera m.in. klucz sesyjny KC1,S1. Jest on odszyfrowywany przez serwer plików. W ten sposób serwer uzyskuje klucz sesyjny i może odczytać (odszyfrować dane identyfikacyjne klienta i znacznik czasu).
S1>C1: { T5 + 1} KC1,S1
Serwer koduje i wysyła oryginalny znacznik czasu klienta zwiększony o 1. C1 po odszyfrowaniu komunikatu uzyskuje pewność co do autentyczności serwera, gdyż tylko on mógł dokonać odszyfrowania biletu, uzyskać klucz sesyjny i użyć go do zakodowania znacznika czasu.
Wszystkie przesyłane żądania i przepustki są szyfrowane. Informacja o porze dnia (znacznik czasu) jest umieszczana w przepustce aby uniemożliwić atak przez powtarzanie (podsłuchanie, przechwycenie, ponowienie żądania w późniejszym czasie).
Serwer przepustek jest w stanie ustalić tożsamość użytkownika gdyż:
Serwer aplikacji może ustalić tożsamość użytkownika gdyż:
System Kerberos to system weryfikacji autentyczności, który może być wykorzystywany z wieloma schematami RPC. Może być również wykorzystywany do samej wymiany kluczy. Istnieje taka wersja polecenia telnet. Istnieje również taka, zmodyfikowana przez MIT, wersja NFS.
« poprzedni punkt |