Rozwiązanie trzecie - wprowadzamy klucz sesji

bajka

Wyobraźmy sobie że Sam(klient) i Frodo(serwer) posiadają wiedzę o pewnym magicznym przedmiocie(nie jest to magiczny pierścień). Tego przedmiotu nie widział nikt poza nimi i czarodziejem Gandalfem który go stworzył. Sam i Frodo mogą nawzajem zadawać sobie różne pytania dotyczące magicznego przedmiotu. Pytań tych jest nieskończenie wiele.
Jeśli do Frodo zgłosi się ktoś podający się za Sama, Frodo zada mu pytanie o magiczny przedmiot. Jeśli przybysz udzieli poprawnej odpowiedzi Frodo będzie wiedział że ma doczynienia z prawdziwym Samem. Jeśli nie będzie znał odpowiedzi Frodo będzie wiedział że najprwdopodobniej ma doczynienia ze sługą Saurona. Ten mechanizm możemy trochę zmodyfikować. Przybysz zgłaszający się do Frodo sam zadaje pytanie o magiczny przedmiot i udziela na nie odpowiedzi. Jeśli pytanie i odpowiedź okażą się prawidłowe Frodo wie że przybysz jest Samem. Choć wydaje się to mniej naturalne to dokładnie taki mechanizm użyty jest w systemie Kerberos.

Teraz wyobraźmy sobie że Gandalf to Kerberos który tworzy magiczne przedmioty czyli klucze sesji. Ponieważ w świecie komputerów wszystko jest reprezentowane przez liczby, jest nią również klucz sesji. Zadawanie pytań polega na szyfrowaniu za pomocą klucza sesji. Odpowiadanie na pytania polega na umiejętności ich deszyfrowania. Jeśli użytkownik(Sam) sam chce potwierdzić swoją autentyczność to koduje za pomocą klucza sesji swój identyfikator i aktualny czas i wysyła do serwera(Frodo). Taki komunikat nazywamy poświadczeniem. Serwer znając klucz sesji może rozkodować poświadczenie i sprawdzić czy rzeczywiście nadeszło od użytkownika i czy czas w poświadczeniu spełnia pewne warunki.
Jeśli poświadczenie jest w porządku serwer wie że otrzymał je od prawdziwego użytkownika.

Jak to działa naprawdę ?