Zabezpieczenia SMB/CIFS

1 Zabezpieczenia SMB/CIFSDariusz Baranowski ...
Author: Marta Łukasik
0 downloads 1 Views

1 Zabezpieczenia SMB/CIFSDariusz Baranowski

2 Wprowadzenie - SMB SMB (Server Message Block) jest protokołem dzielenia zasobów, który powstał dzięki firmom takim jak Xerox, 3Com oraz Microsoft. SMB obejmuje dzielenie zasobów takim jak: plików, drukarek, portów szeregowych oraz potoki i szczeliny pocztowe (mail slots) pomiędzy komputerami.

3 Krótka historia SMB- 1980r PC-DOS -1984 LAN Manager -1988Implementacja w Unix oraz innych systemach operacyjnych CIFS – 1996 Windows NT 4.0 – 1996 IETF draft 1997 Powrót do SMB 2000 Windows 2000/XP SMB 2.0 – Windows Vista SMB Windows 7 SMB Windows 8

4 SMB Protokół SMB jest protokołem warstwy aplikacji;Microsoft stał się głównym implementatorem SMB o największym udziale w rynku. Wraz z ukazaniem się Windows NT Microsoft rozwinął specyfikację SMB o kolejne możliwości.

5 CIFS Z powodu siły rynkowej SMB z pewnymi modyfikacjami został przedstawiony jako propozycja internetowego standardu CIFS (Common Internet Filesystem). W rozwijaniu protokołu CIFS brały udział Microsoft, Digital Equipment Corporation, Data General, SCO, Network Alliance Corp oraz wiele innych

6 CIFS Według firmy Microsoft, CIFS definiuje standardowy protokół dostępu do zdalnego systemu plików który przeznaczony jest do użycia w Internecie. Pozwala on użytkownikom na wspólne dzielenie dokumentów, zarówno w Internecie, jak w firmowych intranetach. CIFS jest oparty na standardowych protokołach wbudowanych w Windows i inne popularne systemy operacyjne dla komputerów osobistych. z UNIX (program SAMBA). Użytkownicy CIFS mogą otwierać i dzielić zdalne pliki na serwerach CIFS i SMB w Internecie bez potrzeby instalacji nowego oprogramowania lub zmiany sposobu pracy.

7 Podstawowe funkcje SMBŁączenie się do dzielenia zasobów Wykonywanie operacji na zasobach Odłączenie od dzielenia zasobów

8 SMB 1.0 W Windows Autoryzacja Kerberos Kopie w tle NTLMKopiowania z serwera do serwera MD5 Inne Systemy Ulepszenia proponowane i wdrażane przy użyciu CIFS / SMB w innych systemach Unix i MacOS nie były opisywane jako oficjalny standard

9 SMB 2.0 Pierwszy poważne przeprojektowanie SMB,Wzrosła skalowalność udostępniania plików, Została poprawiona wydajność, Operacje asynchroniczne, Czyta / zapisuje więcej danych w każdym pakiecie, Zmiany dotyczące bezpieczeństwa znacznie mniejszy zestaw poleceń z 75 do 19, Zamiast md5, do podpisywania zostaje użyty HMAC SHA-256,

10 SMB 3.0 Skalowanie serwera plików,Poprawa wydajność serwera plików z SMB Direct i SMB MultiChannel, Blok komunikatów serwera, czyli protokół SMB, Bezpieczne połączenia SMB.

11 Skalowanie serwera plikówpołączenia typu Active-Active – wszystkie węzły klastra mogą przyjmować i obsługiwać zadania klienta SMB, dzięki temu, że pliki udostępnione są na wszystkich węzłach jednocześnie, zwiększona przepustowość – maksymalna przepustowość to całkowita przepustowość wszystkich węzłów klastra, Check disk bez przestojów – w systemie Windows Server 2012 znacząco poprawiono CHKDSK w celu skrócenia niedostępności plików związanych z naprawą.

12 Poprawa wydajność serwera plikówzwiększona przepustowość – serwer plików może jednoczenie przekazywać więcej danych za pomocą wielu adapterów kart sieciowych, tolerancja dla błędów sieci – podczas używania wielu połączeń sieciowych w tym samym czasie, klient może kontynuować pracę mimo utraty połączenia sieciowego, automatyczna konfiguracja – SMB Multichannel automatycznie wykrywa istnienie wielu ścieżek dostępowych do sieci i dynamicznie dodaje połączenia, zgodnie z wymaganiami.

13 Implementacje Apple EMC Microsoft NetApp Linux -Samba I wiele innych

14 Działanie SMB jest protokołem typu klient/serwerTypowe działanie SMB polega na tym, że klient wysyła żądania, a serwer na nie odpowiada. Jedynym wyjątkiem od zasady żądanie-odpowiedź jest sytuacja, w której klient poprosił o okazyjną blokadę pliku, a serwer musi następnie przerwać przyznaną już blokadę, ponieważ inny klient zażądał otwarcia pliku w niekompatybilnym z nią trybie. W takim przypadku serwer samodzielnie wysyła do klienta komunikat o przerwaniu blokady. Klienci SMB łączą się z serwerami przy użyciu TCP/IP, NetBEUI lub IPX/SPX Jeśli używany jest TCP/IP, w rzeczywistości jest to NetBIOS ponad TCP/IP, jak to opisują dokumenty RFC 1001 i RFC 1002.

15 Działanie W przypadku wykorzystywania SMB z TCP/IP lub NetBEUI konieczne jest używanie nazw NetBIOS jako nazw komputerów. Nazwy NetBIOS mogą mieć długość do 15 znaków. Microsoft i niektórzy inni implementatorzy SMB wymagają, żeby nazwy składały się wyłącznie z dużych liter. Po uzyskaniu połączenia klient może przesyłać do serwera polecenia umożliwiające mu dostęp do dzielonych zasobów, otwierania plików, czytania i zapisywania plików itd.

16 Działanie Każde połączenie/sesja jest uwierzytelnianeKerberos jest najlepszym wyborem, NTLM zapewnia zgodność wstecz W ramach jednej sesji klient może nawiązać wiele połączeń do drzew katalogowych Każde drzewo jest udziałem, które może być montowane Różni użytkownicy muszą nawiązywać oddzielne połączenia

17 Model bezpieczeństwa SMBModel SMB definiuje dwa poziomy bezpieczeństwa: poziom udostępnionych zasobów poziom użytkownika

18 Bezpieczeństwo poziomu udostępnionych zasobówW modelu bezpieczeństwa poziomu udostępnionych zasobów, zasoby chronione są na serwerze. Każdy zasób może być zabezpieczony hasłem, a klient znający to hasło ma dostęp do wszystkich plików zasobu. Był to pierwszy model bezpieczeństwa, w jaki wyposażono SMB.

19 W modelu bezpieczeństwa poziomu użytkownikaW modelu bezpieczeństwa poziomu użytkownika zabezpieczone są poszczególne pliki w każdym dzielonym zasobie, a ich używanie uzależnione jest od praw dostępu. Każdy użytkownik (klient) musi zalogować się na serwer, który sprawdza jego tożsamość. Kiedy to nastąpi, klient otrzymuje identyfikator użytkownika, który musi okazywać przy następnych dostępach do serwera.

20 Omówienie zabezpieczeń używanych w SMB/CIFSMD5 Kerberos HMAC SHA AES NTLM NTLMv2 SSL

21 MD5 - Message-Digest algorithm 5 Algorytm MD5 został opracowany przez Rona Rivesta w 1991r. W 2004r znaleziono sposób na generowanie kolizji MD5, co obniżyło jego bezpieczeństwo. Przetwarzanie komunikatu na skrót odbywa się w 4 krokach. Dane w każdym kroku przetwarza się w 512-bitowych blokach, podzielonych na 16 podbloków po 32 bity

22 Algorytm haszujący MD5 Krok 1Wiadomość dopełnia się dodatkowymi bitami, by jej długość była o 64 bity krótsza od wielokrotności 512 bitów. tzn. K ≡ 448 (mod 512), gdzie K oznacza pierwotną długość komunikatu. W takiej sytuacji dopełnienie ma długość od 1 do 512 bitów. Ustalono że uzupełniające bity rozpoczyna jedynka, po której następują same zera

23 MD5 Krok 2 Po wykonaniu 1 kroku, do uzupełnionego komunikatu dodaje sie 64 bity, bity reprezentują liczbę K, - pierwotna długość komunikatu M. Jeśli początkowa długość komunikatu jest większa od 264, to liczbę, określająca pierwotną długość komunikatu oblicza sie modulo 264. W rezultacie tej czynności otrzyma sie L 512-bitowych bloków Y0, Y1, , , YL−1, z których każdy można podzielić na 16 podbloków 32-bitowych, ponieważ 512=16 · 32.

24 MD5 Krok 3 Operacje, realizowane przez algorytm MD5, polegają na modyfikacji wartości czterech zmiennych A, B, C i D, zapamiętanych w 4 rejestrach 32-bitowych. W kroku 3. zmiennym tym nadaje sie następujące wartości początkowe, zapisane w kodzie szesnastkowym: A = , B = 89abcdef, C = fedcba98, D =

25 MD5 Krok 4 W kroku czwartym używa się czterech funkcji pomocniczych, których argumentami są trzy 32-bitowe słowa, a wyjściem jedno słowo 32-bitowe. Są to następujące funkcje: F(X, Y,Z) = (X and Y ) or (( not X) and Z), (1) G(X, Y,Z) = (X and Z) or (Y and ( not Z)), (2) H(X, Y,Z) = X xor Y xor Z, (3) I(X, Y,Z) = Y xor (X or ( not Z)). (4)

26 MD5 Krok 4 Funkcje te działają na odpowiadających sobie bitach bloków X, Y, Z . tablica:

27 MD5 Krok 4 W tym kroku stosuje sie również 64-elementowa tablice T[1..64], której elementy zawierają podane niżej liczby całkowite, przedstawione w zapisie szesnastkowym: T[ 1]=d76aa478 T[ 2]=e8c7b756 T[3]=242070db T[ 4]=c1bdceee T[ 5]=f57c0faf T[ 6]=4787c62a T[ 7]=a ….. T[64]……

28 MD5 Krok 4 Wartości elementów tablicy T wyznacza sie z wzoru:T[ i ] = 232· | sin(i) |= · | sin(i) |, gdzie argument i podany jest w radianach. Niech M[0, 1, , N −1] oznacza 32-bitowe słowa uzupełnionego komunikatu, składającego sie z L 512-bitowych bloków. Wobec tego N = 16 ·L, czyli każdy blok Yq składa sie z 16 słów M[j], j = 0, 1, , 15. Proces przetwarzania w tym kroku obejmuje każdy blok 16-słowowy

29 Md5 podsumowanie Wyjściem algorytmu jest 128-bitowy skrót komunikatu M, czyli zawartość rejestrów ABCD. Algorytm MD5 jest łatwy do zrealizowania na procesorach 32-bitowych, a obliczenia skrótu trwają bardzo krótko.

30 Wady MD5 Gdy podpis się zgadza, to istnieje prawdopodobieństwo że dane mogły ulec uszkodzeniu, na szczęście jest to prawdopodobieństwo bardzo małe. Gdy podejrzewamy, że dane mógł ktoś złośliwie podmienić, to algorytm MD5 z tego powodu że został złamany kompletnie nie nadaje się do podpisywania plików. Algorytm MD5 świetnie pełni rolę do weryfikacji czy dane nie uległy uszkodzeniu w trakcie transmisji albo przechowania, natomiast nie nadaje się do ochrony przed celową próbą podmiany danych.

31 Kerberos System uwiarygodnienia i autoryzacji opracowany w 1980 roku w laboratorium komputerowym instytutu MIT Kerberos umożliwia weryfikację tożsamości komunikujących się stron, zapewnia integralność przesyłanych danych, zapewnia poufność danych. integralność i poufność mogą, ale nie muszą być realizowane przez konkretne aplikacje współpracujące z systemem.

32 Kerberos założenia W ramach Kerberosa działają klienci i usługi oraz Centrum Dystrybucji Kluczy (KDC). Dostęp do usług jest zapewniany klientom po ich uwierzytelnieniu w KDC Kerberos korzysta z systemu szyfrowanych komunikatów (biletów) do przedstawiania się klientów serwerom w systemie Serwery używają specjalnych komunikatów zwanych autentykatorami do potwierdzania biletów Szyfrowanie w Kerberosie 4 odbywa się przy użyciu DES'a, a w wersji 5 za pomocą wymiennych modułów

33 Kerberos uzyskanie biletu do usługiKlient buduje autentykator ze swoją nazwą, IP i obecnym czasem i szyfruje za pomocą klucza sesji z TGT Klient wysyła żądanie wydania biletu do danego serwera TGT i autentykator do serwera TGS -Ticket-granting Service- Serwer odczytuje TGT, następnie odkodowuje autentykator przy użyciu klucza sesji z TGT i sprawdza poprawność otrzymanych danych (TGT<-> autentykator, IP, obecny czas) Jeśli wszystko się zgadza, TGS generuje nowy losowy klucz sesji, który będzie używany w komunikacji klient-serwer. Następnie tworzy bilet dla klienta zapisując tam nazwę serwera usługi, nazwę klienta, IP klienta, stempel czasowy, czas życia biletu i nowy klucz sesji Bilet jest szyfrowany kluczem prywatnym serwera usługi (znanym tylko temu serwerowi i TGS) i odsyłany do klienta razem z nowym kluczem sesji zaszyfrowanym kluczem sesji dla TGT

34 Uzyskanie dostępu do usługiKlient buduje autentykator i szyfruje go za pomocą klucza sesji otrzymanego razem z biletem. Klient wysyła bilet i autentykator do serwera usługi. Serwer odkodowuje bilet swoim kluczem prywatnym, następnie odkodowuje autentykator przy użyciu klucza sesji z biletu i sprawdza poprawność otrzymanych danych (bilet<-> autentykator, IP, obecny czas) Jeśli wszystko się zgadza, oznacza to, że klient i serwer dysponują kluczem sesji znanym tylko sobie nawzajem. Klient otrzymuje dostęp do serwisu i może wysyłać dane szyfrując je symetrycznym kluczem sesji.

35 Autentykacja serwera  Po otrzymaniu dostępu do serwisu, klient może od serwera domagać się jego uwierzytelnienia.  Wtedy serwer zwiększa stempel czasowy z autentykatora o 1, szyfruje to przy pomocy klucza sesji i odsyła klientowi. To potwierdza, że serwer jest w posiadaniu klucza sesji, gdyż odszyfrował bilet (w którym był właśnie klucz sesji), który był zakodowany przez KDC hasłem zrozumiałym tylko dla niego. To oznacza również, że serwer odczytał autentykator, który był zakodowany kluczem sesji. Jest to nieco wtórne sprawdzenie znajomości klucza sesji, gdyż jest nim kodowana odpowiedź.

36 Kerberos działanie ZalogowanieKlient podaje nazwę użytkownika. Zostaje wysłane żądanie do Serwera Autentykacji (AS) AS tworzy TGT - bilet do komunikacji klienta z TGS z nazwą serwera TGS, nazwą klienta, IP klienta, stemplem czasowym, czasem życia dla biletu i kluczem sesji wygenerowanym losowo AS szyfruje TGT przy pomocy klucza wyliczonego z hasła użytkownika, które jest znane AS i następnie odsyła TGT do klienta Klient podaje hasło użytkownika. Na podstawie hasła jest generowany klucz do odszyfrowania TGT TGT i jego klucz sesji zostają zachowane do późniejszego użycia, a hasło użytkownika i wygenerowany z niego klucz zostają usunięte z pamięci dla bezpieczeństwa

37 Kerberos Wady System jest wrażliwy na rozszyfrowywania poza siecią. Włamywacz może przechwycić wiadomość z odpowiedzią serwera przesłaną do użytkownika - zawierającą bilet i zaszyfrowaną przy użyciu publicznego klucza wiadomość użytkownika. Następnie przy użyciu słownika może on próbować odszyfrować wiadomość poprzez odgadnięcie klucza prywatnego. Włamywacz może obserwować przesyłane wiadomości od dłuższego czasu i w celu zdobycia klucza prywatnego może zastosować metodę ataku czasowego. Jeśli mu się powiedzie i odczyta wiadomość (znacznik czasu lub adres sieciowy), wtedy może złamać klucz prywatny.

38 HMAC HMAC (keyed-Hash Message Authentication Code) –jest to kod MAC z wmieszanym tajnym kluczem, zapewniającym zarówno ochronę integralności, jak i autentyczności danych. Standardowy kod MAC zapewnia ochronę integralności, ale może podlegać sfałszowaniu, dlatego też jest stosowany z dodatkowymi mechanizmami zabezpieczeń (np. podpisem cyfrowym). Dla ochrony integralności i autentyczności w rozwiązaniach wymagających wysokiej wydajności stworzono zmodyfikowany algorytm MAC, w którym podczas każdej operacji dodawany jest tajny klucz:

39 Tajny klucz HMAC wartości opad i ipad są ustalonymi wartościami dopełniającymi, m jest tekstem podlegającym ochronie, a K jest tajnym kluczem. Poprawny kod HMAC może stworzyć tylko osoba znająca tajny klucz K, co zapewnia autentyczność pochodzenia danych. Tylko osoba znająca klucz K może zweryfikować autentyczność danych zabezpieczonych kodem HMAC. Implementacje HMAC są oparte na standardowych kryptograficznych funkcjach skrótu takich jak SHA czy MD5. Kody HMAC są stosowane w szeregu protokołów sieciowych np. w Ipsec, gdzie klucze HMAC są niezależne od kluczy szyfrujących dane.

40 AES — Advanced Encryption StandardAlgorytm blokowy, który zaprojektowali Joan Daemen i Vincent Rijmen Standard powstał w 1997r. Zarówno długość bloku jak i klucza może być wybrana jako 128, 192 lub 256 bitów Liczba rund zależy od długości bloku

41 AES - Algorytm W każdej rundzie wykonywane są 4 operacje (macierzowe):– podstawienie w S-boksie – przesunięcie wierszy – mieszanie kolumn – xor z podkluczem Podklucze są generowane algorytmem, który zależy od rundy

42 AES - Algorytm Proces szyfrowania zaczyna się od wygenerowania listy kluczy cyklu oraz sumowania XOR pierwszego klucza cyklu RoundKey[0] wraz z macierzą State. Następnie N(R-1) razy wykonywane są kolejno cztery transformacje macierzy State. Ostatnia z nich stanowi sumę XOR tej macierzy i klucza cyklu o numerze określonym numerem iteracji. Po wykonaniu tego kroku wykonywana jest kolejna, ostatnia iteracja, różniąca się od pozostałych tym, że w jej trakcie macierz State nie podlega transformacji MixColumn.

43 AES - Algorytm SubByte jest transformacją, podstawiająca każdemu bajtowi macierzy stanów wartość określoną przez przekształcenie algebraiczne, które jest realizowane w dwóch krokach: - wyliczenia multiplikatywnej inwersji bajtu, reprezentowanego w postaci wielomianu, w ciele GF(2^8)

44 AES - Algorytm - dokonania przekształcenia powyższej wartości zgodnie z afiniczną transformacją w ciele GF(2), zdefiniowaną przez następujące równanie: bi’ = bi ⊕ b(i+4) mod 8 ⊕ b(i+5) mod 8 ⊕ b(i+6) mod 8 ⊕b(i+7) mod 8 ⊕ ci (1) dla 0 ≤ i < 8 gdzie bi jest i tym bitem bajtu b zaś ci jest i-tym bitem bajtu

45 Transformację tą wygodnie jest przedstawić w postaci macierzowej jako:

46 Możliwe jest zatem wyliczenie wcześniejszych przekształceń dla każdej z wartości bajtów i stworzenie odpowiedniej tablicy podstawień, określanej jako S-box

47 S-box

48 Podstawianie s-box Podstawienie odbywa się zgodnie z następującym schematem: - Każdy bajt można opisać w kodzie heksadecymalnym jako {xy}HEX. - Aby odczytać wartość bajtu po dokonaniu transformacji odczytujemy odpowiedni wiersz zdefiniowany przez x, oraz odpowiednia kolumnę zdefiniowaną przez y.

49 S-box Przykładowo B={4F}, po transformacji SubByte przyjmie wartość równą B={84}. Efekt działania funkcji SubByte przedstawia

50 Podstawianie w s-boksie

51 Przesunięcie wierszy

52 Mieszanie kolumn

53 Operacja xor z kluczem

54 Działanie • Przed pierwszą rundą wykonywane jest przekształcenie AddRoundKey, a w ostatniej rundzie pomija się operację MixColumn. • Algorytm operujący na blokach 128 bitowych wykorzystuje 10 rund, przy dłuższych blokach i kluczach wykonywane są 12 lub 14 rundy

55 Deszyfrowanie Proces deszyfrowania polega na użyciu operacji odwrotnych do operacji szyfrowania, przy tych samych wartościach kluczy cyklu. Kolejność transformacji musi być również odwrotna.

56 Wady AES AES nie jest w pełni odporny na atak XSL, ale oszacowanie ilości koniecznych obliczeń obarczone jest dużą niepewnością, w związku z tym oceny, na ile skuteczny jest ten atak, są różne.

57 SHA Secure Hash AlgorithmAlgorytm SHA (ang. Secure hash algorithm) został stworzony przez Narodowy Instytut Standardów i Technologii USA (NIST) i opublikowany jako FIPS PUB 180 w 1993 roku   SHA-2 powstal w 1996 to zestaw kryptograficznych funkcji skrótu (SHA-224, SHA-256, SHA-384, SHA-512) SHA-256 jest wykożystwany w SMB W roku 2005 zostały zidentyfikowane luki w bezpieczeństwie SHA-1, stwierdzono że jest zbyt słaby. Mimo, iż SHA-2 wykazuje pewne podobieństwo do algorytmu SHA-1, ataki te nie zostały skutecznie rozszerzone na SHA-2.

58 Najważniejsze cechy SHA-256SHA-256 daje skrót w długości 256 bitów co podnosi znacznie bezpieczeństwo skrótu Dane wejściowe przetwarzane są w 512 bitowych blokach Generalna zasada działania SHA-256 jest bardzo podobna do MD5 i SHA Zastosowano inne funkcje na etapie przetwarzania pojedynczych 512-bitowych bloków

59 Generowanie wyciągu w SHADodawanie bitów dopełniających Dodanie długości komunikatu , długość musi być mniejsza niż 264 Inicjalizacja 160-bitowego bufora MD A= B=EFCDAB89 C=98BADCFE D= E=C3D2E1F0 Przetwarzanie komunikatu w blokach 512-bitowych Otrzymanie wyniku

60 Przetwarzanie komunikatu w 512-bitowych blokachPodstawowym elementem algorytmu jest przetwarzanie bloku 512 bitowego za pomocą 80 podobnych etapów W każdym etapie jest przetwarzany aktualny blok Yq oraz bufor ABCDE (MDq) Dodatkowo w każdym etapie korzysta się z zdefiniowanej stałej addytywnej Kt: 0t19

61 Bezpieczeństwo SHA Złożoność obliczeniowa ataku metodą brutalnej siły dla wykrycia kolizji (wykrycie dwóch wiadomości, których wynikiem jest ta sama funkcja skrótu) wynosi dla SHA 280 Kryptologom udało się opracować atak, którego złożoność obliczeniowa wynosi 269 W związku z tym pojawiły się wątpliwości co do bezpieczeństwa wielu systemów kryptograficznych używających SHA (np. system podpisu elektronicznego) Narodowy Instytut Standardów i Technologii (NIST) zaproponował zastąpienie szeroko używanej funkcji haszującej SHA-1 silniejszą i mocniejszą funkcją SHA-256 lub SHA-512

62 NTML NTLM jest to zestaw protokołów uwierzytelniania i sesji bezpieczeństwa stosowanych w różnych implementacjach protokołów sieciowych obsługiwanych przez Microsoft   NTLM zapewnia uwierzytelnianie, integralność i poufność Uwierzytelnianie NT LAN Manager (NTLM) jest wszechobecne w wielu sieciach komputerowych nawet, jeśli dostępne są bardziej bezpieczne protokoły uwierzytelniania Windows.

63 Uwierzytelnianie NTLMW środowisku sieciowym protokół NTLM jest używany do uwierzytelniania transakcji przeprowadzanych między dwoma komputerami. Protokół NTLM jest protokołem uwierzytelniania komputerów, które nie należą do domeny, takich jak serwery autonomiczne i grupy robocze.

64 NTLM działanie Usługodawca zabezpieczeń NTLM w celu uwierzytelniania korzysta z procedury „wyzwanie – odpowiedź”(challenge-response). Usługodawca zabezpieczeń (security provider) zna hasło danego użytkownika lub, ściślej mówiąc, wyciąg uzyskany za pomocą funkcji skrótu MD5(MD5 hash of the password). Za pomocą funkcji skrótu MD5 szyfruje losowo wygenerowany blok danych i odsyła go do klienta (wyzwanie — challenge). Następnie klient rozszyfrowuje blok danych i przesyła z powrotem do serwera. Jeśli klient również zna prawidłowe hasło, dane zostaną rozszyfrowane poprawnie i serwer zarejestruje danego klienta jako uwierzytelnionego. Z kolei usługodawca zabezpieczeń (security provider) generuje niepowtarzalny znacznik dostępu (access token), który jest przesyłany do klienta, aby korzystał z niego w przyszłości. Kolejne uwierzytelnienia klienta dokonywane są na podstawie tego znacznika (token) i usługodawca zabezpieczeń (security provider) NTLM nie musi powtarzać procedury uwierzytelniania „wyzwanie-odpowiedź” (challenge-response).

65 NTLM v2 NTLM w wersji 2 składa się z trzech nowych algorytmów odpowiedzi - NTLMv2, LMv2 i odpowiedzi sesji NTLM2, jak i nowego systemu zabezpieczającego podpisania sesji NTLM2. Zabezpieczenia sesji NTLM2 jest negocjowane przez "Negotiate NTLM2 key". Ustawienia rejestru na klienta i kontrolera domeny muszą być zgodne, aby doszło do uwierzytelniania.

66 SSL W 1994 roku firma Netscape stworzyła protokół, służący do bezpiecznej transmisji zaszyfrowanego strumienia danych. SSL zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera, a niekiedy również klienta. Opiera się na szyfrowaniu asymetrycznym oraz certyfikatach X.509

67 SSL – Algorytmy szyfrowaniaWykorzystuje on algorytmy szyfrowania: symetryczne – do szyfrowania i deszyfrowania danych używany jest ten sam klucz; znając klucz szyfrujący możemy dokonać również deszyfracji danych (wyznaczyć klucz deszyfrujący). asymetryczne (z kluczem publicznym) – do szyfrowania i deszyfrowania używane są różne klucze; znając klucz szyfrujący nie możemy odszyfrować wiadomości (klucza deszyfrującego nie da się w prosty sposób wyznaczyć z klucza szyfrującego); klucz służący do szyfrowania jest udostępniany publicznie (klucz publiczny), ale informację nim zaszyfrowaną może odczytać jedynie posiadacz klucza deszyfrującego (klucz prywatny), który nie jest nikomu ujawniany.

68 SSL SSL składa się z dwóch podprotokołów, gdzie SSL Handshake, SSL Alert Protocol i SSL Change Cipher stanowią pierwszy podprotokół natomiast SSL Record Protocol stanowi osobny podprotokół SSL: SSL Handshake – definiuje metody negocjowania parametrów bezpiecznej sesji, czyli algorytmów szyfrowania danych, algorytmów uwierzytelniania i integralności informacji SSL Change Cipher – protokół zmiany specyfikacji szyfru SSL SSL Alert Protocol – protokół alarmowy SSL SSL Record – definiuje format przesyłanych pakietów danych

69 SSL – Certyfikaty Certyfikaty używane w protokole SSL zawierają m.in. nazwę domeny, dla której zostały wystawione. Ponieważ każda osoba może stworzyć dowolny certyfikat, utworzono tzw. Infrastrukturę Klucza Publicznego. Na jej szczycie znajdują się Urzędy Certyfikacji (Certificate Authority - CA). Są to zaufane instytucje weryfikujące prawo do posługiwania się domeną. Osoba uprawniona wysyła do wybranego urzędu swój klucz publiczny, nazwę domeny i inne dane niezbędne do wygenerowania certyfikatu w postaci żądania podpisania certyfikatu (Certificate Signing Request - CSR). Po przejściu procedury sprawdzającej, certyfikat jest podpisywany. Jeśli serwer przedstawi certyfikat niepodpisany przez CA, w większości przeglądarek i klientów pocztowych w czasie próby połączenia użytkownik zobaczy odpowiednie ostrzeżenie.

70 SSL - klucze Krytycznym parametrem określającym siłę szyfrowania SSL jest długość użytych kluczy. Im dłuższy klucz, tym trudniej jest go złamać, a przez to odszyfrować transmisję. Dla kluczy asymetrycznych, zgodnie z zaleceniami organizacji NIST, długością sugerowaną jest obecnie 2048 bitów. Powszechnie używane są wyrażenia „SSL 128 bitów” oraz „SSL 40 bitów” określające długość użytego klucza symetrycznego.

71 Zasada działania SSL Schemat działania protokołu wygląda następująco (jako K oznaczamy klienta, a jako S – serwer): K → S ClientHello Klient wysyła do serwera zgłoszenie zawierające m.in. obsługiwaną wersję protokołu SSL, dozwolone sposoby szyfrowania i kompresji danych oraz identyfikator sesji. Komunikat ten zawiera również liczbę losową używaną potem przy generowaniu kluczy. K ← S ServerHello Serwer odpowiada podobnym komunikatem, w którym zwraca klientowi wybrane parametry połączenia: wersję protokołu SSL, rodzaj szyfrowania i kompresji, oraz podobną liczbę losową. K ← S Certificate Serwer wysyła swój certyfikat pozwalając klientowi na sprawdzenie swojej tożsamości (ten etap jest opcjonalny, ale w większości przypadków występuje) K ← S ServerKeyExchange Serwer wysyła informację o swoim kluczu publicznym. Rodzaj i długość tego klucza jest określony przez typ algorytmu przesłany w poprzednim komunikacie.

72 Zasada działania SSL K ← S ServerHelloDone Serwer zawiadamia, że klient może przejść do następnej fazy zestawiania połączenia. K → S ClientKeyExchange Klient wysyła serwerowi wstępny klucz sesji, zaszyfrowany za pomocą klucza publicznego serwera. Na podstawie ustalonych w poprzednich komunikatach dwóch liczb losowych (klienta i serwera) oraz ustalonego przez klienta wstępnego klucza sesji obie strony generują klucz sesji używany do faktycznej wymiany danych.  K → S ChangeCipherSpec Klient zawiadamia, że serwer może przełączyć się na komunikację szyfrowaną. K → S Finished Klient zawiadamia że jest gotowy do odbierania danych zaszyfrowanych K ← S ChangeCipherSpec Serwer zawiadamia, że wykonał polecenie – od tej pory wysyłał będzie tylko zaszyfrowane informacje... K ← S Finished Koniec.

73 Uwierzytelnianie klienta SSLJak widać na schemacie z poprzedniego punktu, w protokole SSL domyślna sytuacja zakłada tylko uwierzytelnianie serwera. Istnieją jednak metody pozwalające na uwierzytelnienie klienta. W tym celu korzysta się z trzech dodatkowych komunikatów: K ← S CertificateRequest Po przesłaniu swojego certyfikatu serwer zawiadamia, że chciałby otrzymać certyfikat klienta K → S Certificate Po otrzymaniu komunikatu ServerHelloDone klient odsyła swój certyfikat K → S CertificateVerify Klient musi potwierdzić, że faktycznie posiada klucz prywatny odpowiadający wysłanemu certyfikatowi. W tym celu klient podpisuje swoim kluczem prywatnym skrót wszystkich dotychczas ustalonych danych o połączeniu i wysyła go korzystając z tego komunikatu.

74 Dziękuje za uwagę