REKLAMA

Certyfikaty użytkownika SSL – jak to ugryźć?

"Technologia SSL znajduje swoje użycie w olbrzymiej ilości aplikacji i usług internetowych. Jednym z głównych celów jej zastosowania jest umożliwienie klientowi sprawdzenie, czy komunikuje się on z zaufanym serwerem. Istnieje jednak rozszerzenie, które pozwala dokonać zupełnie odwrotnej czynności, umożliwiając serwerowi sprawdzenie autentyczności klienta. Celem tego artykułu jest zatem omówienie i implementacja certyfikatów użytkownika na przykładzie aplikacji hostowanej w kontenerze Tomcat.

Najpopularniejszą metodą logowania w Internecie jest uwierzytelnianie za pomocą hasła. Metoda ta, choć jest jedną z najwygodniejszych, nie jest pozbawiona wad. W celach porównawczych na serwerze muszą być przechowywane hasła wszystkich użytkowników – najczęściej w formie hasha, np. z funkcji SHA1, bcrypt etc. W przypadku wycieku bazy danych będącego choćby następstwem włamania, atakujący może posłużyć się różnymi technikami, aby odzyskać oryginalne hasła, inwestując w to odpowiednią ilość mocy obliczeniowej. Istnieje też ryzyko wstawienia przez włamywacza backdoora w kodzie aplikacji, który zajmie się rejestrowaniem haseł przesyłanych na serwer otwartym tekstem podczas logowania (ruch HTTPS trafiający do aplikacji zostaje już wcześniej odszyfrowany przez serwer).

Odporność na tego typu zagrożenia wykazuje autoryzacja przy pomocy certyfikatu użytkownika SSL, podczas której na serwer nigdy nie jest wysyłany pełny certyfikat, a jedynie dowód na to, że użytkownik, który go prezentuje, jest równocześnie jego właścicielem. Jest to możliwe dzięki zastosowaniu kryptografii asymetrycznej. Po stronie serwera nie trzeba więc przechowywać żadnych wrażliwych danych logowania dotyczących konkretnych użytkowników. Bezpieczeństwo całego systemu przekłada się bezpośrednio na bezpieczeństwo klucza używanego do wystawiania certyfikatów." (...)

Artykuł pochodzi z magazynu Programista nr 10/2013 (17). Magazyn można zamówić w prenumeracie: formularz zamowienia

Programista 10/2013 (17)