Proces uwierzytelniania w sieciowym systemie plików

Gdy klient chce rozmawiać z serwerem, generuje losowo klucz służący do szyfrowania datownika. Klucz ten jest nazywany kluczem konwersacji (Conversation Key - CK).

Klient szyfruje klucz konwersacji za pomocą klucza wspólnego DES (opisanego w sekcji Wymagania dotyczące uwierzytelniania) i wysyła go do serwera w pierwszej transakcji RPC. Proces ten ilustruje poniższy rysunek.

Rysunek 1. Proces uwierzytelniania. Ten rysunek przedstawia proces uwierzytelniania.
Ilustracja do comma9

Rysunek przedstawia połączenie klienta A z serwerem B. Litera K(CK) oznacza CK i jest szyfrowana kluczem wspólnym DES K. W pierwszym żądaniu referencje RPC klienta zawierają nazwę klienta (A), klucz konwersacji (CK) i zmienną nazywaną win (window - okno) szyfrowaną za pomocą CK. (Domyślna wielkość okna wynosi 30 minut). Weryfikacja klienta w pierwszym żądaniu zawiera szyfrowany datownik i szyfrowaną weryfikację podanego okna win + 1. Weryfikacja okna powoduje, że odgadywanie referencji jest znacznie utrudnione, dzięki czemu zwiększone zostaje bezpieczeństwo.

Po uwierzytelnieniu klienta serwer zapisuje w tabeli referencji następujące elementy:

  • nazwę klienta, A,
  • klucz konwersacji, CK,
  • okno,
  • datownik.

Serwer akceptuje datowniki tylko chronologicznie późniejsze od ostatnio widzianych, gwarantowane jest więc odrzucenie powtórzonych transakcji. Serwer podczas weryfikacji zwraca do klienta ID indeksu do tabeli referencji oraz datownik klienta pomniejszony o 1, wszystko szyfrowane kluczem CK. Klient wie, że tylko serwer może wysłać taką weryfikację, gdyż tylko serwer zna datownik wysłany przez klienta. Powodem pomniejszenia datownika o 1 jest zapewnienie, że nie będzie on poprawny i nie będzie mógł zostać wykorzystany ponownie jako weryfikacja klienta. Po tej pierwszej transakcji RPC klient wysyła po prostu do serwera własny identyfikator i szyfrowany datownik, a serwer odsyła datownik pomniejszony o 1, wszystko szyfrowane kluczem CK.