Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Public Key Infrastructure (PKI) Infrastruktura klucza Publicznego Krzysztof Boryczko Remigiusz Górecki.

Podobne prezentacje


Prezentacja na temat: "Public Key Infrastructure (PKI) Infrastruktura klucza Publicznego Krzysztof Boryczko Remigiusz Górecki."— Zapis prezentacji:

1 Public Key Infrastructure (PKI) Infrastruktura klucza Publicznego Krzysztof Boryczko Remigiusz Górecki

2 Bezpieczna komunikacja Poufność (ang. Confidentiality) Przesyłanie informacji w sposób tajny – tylko właściwy adresat może je odczytać. Autentyczność (ang. Authenticity) Potwierdzenie tożsamości osoby wysyłającej dane – wiadomo kim jest osoba wysyłająca informacje. Integralność (ang. Integrity) Dane pozostają niezmienione w czasie ich przesyłania. Niezaprzeczalność (ang. Nonrepudiation) Mamy pewność co do tożsamości osoby wysyłającej dane – nie wyprze się ona przesłanych informacji.

3 Definicja i role PKI Infrastruktura klucza publicznego – PKI (ang. Public Key Infrastructure): Jest to system kryptograficzny umożliwiający bezpieczną wymianę informacji pomiędzy jednostkami (podmiotami) biorącymi udział w transakcji elektronicznej w oparciu o certyfikaty cyfrowe, Sprawdza tożsamość podmiotów i wydaje im (na określony czas) odpowiednie certyfikaty cyfrowe potwierdzające ich wiarygodność, Zarządza certyfikatami cyfrowymi: wydaje, przechowuje, dystrybuuje oraz unieważnia je (przechowuje listę unieważnionych certyfikatów), Umożliwia szyfrowanie informacji w oparciu o klucze publiczne podmiotów biorących udział w wymianie informacji.

4 Relacje zaufania Każdy podmiot legitymuje się certyfikatem zawierającym jego klucz publiczny. Konieczna jest pewność że dany klucz należy do danego podmiotu. Przykładowo ktoś może się chcieć podszyć pod daną firmę dając nam certyfikat należący rzekomo do niej. Sposoby weryfikacji przynależności certyfikatu: Osobiście, Sieć zaufania (ang. Web of trust), Infrastruktura klucza publicznego PKI.

5 Osobiste sprawdzanie klucza Kontaktujemy się telefonicznie z przedstawicielem danego podmiotu (przykładowo firmy), który osobiście dyktuje nam np. odcisk klucza publicznego firmy Musimy mieć pewność, że po drugiej stronie jest faktycznie osoba posiadająca odpowiednie uprawnienia, Obdarzamy więc zaufaniem rozmówcę, co może być ryzykowne, Rozmówca może podać nam przykładowo swój klucz, a nie firmy. Udajemy się osobiście do siedziby firmy i sami potwierdzamy autentyczność certyfikatu podmiotu Najbezpieczniejszy sposób – nie ma żadnych osób pośrednich, którym musielibyśmy zaufać, Najmniej praktyczne – trudno udawać się osobiście do każdego podmiotu (czas i koszty).

6 Zaufanie typu web of trust Podobna idea jak osobistego sprawdzania. Nie sprawdzamy osobiście wszystkich, lecz część. Obdarzamy zaufaniem wybrany przez siebie podmiot, wierząc że on weryfikuje innych. Możemy wybrać dowolną ilość, dowolnych podmiotów, których obdarzamy zaufaniem. Przyjmujemy klucze podpisane przez zaufane podmioty. Budowana jest sieć zaufania – dany podmiot weryfikuje osobiście tych, którzy geograficznie są blisko niego. Praktyczniejsze niż osobiste sprawdzanie wszystkich. Nie mamy żadnych gwarancji prawnych, że wybrany podmiot jest uczciwy – sami obdarzamy go zaufaniem. Stosowane w PGP i podobnych (OpenPGP, GnuPG)

7 Zaufanie w PKI Istnieją urzędy certyfikacji CA, które obdarzone są zaufaniem przez wszystkie podmioty. CA są tak zwaną zaufaną trzecią stroną – TTP (ang. Trusted Third Party). Poświadczają one autentyczność podmiotów w PKI. Użytkownicy nie wybierają podmiotu, któremu ufają spośród użytkowników lecz obdarzają zaufaniem odpowiednią instytucje. Najwyżej w hierarchii są główne CA mające odpowiednie poświadczenia prawne. Kolejne CA są przez nie uwierzytelnione – sieć zaufania. Istnieją niepotwierdzone CA, których użytkownik sam obdarza zaufaniem.

8 Zaufana trzecia strona – TTP Instytucja rządowa – w Polsce Narodowe Centrum Certyfikacji prowadzone przez Departament Obrony Narodowego Banku Polskiego, Firma posiadająca stosowną akredytację – w Polsce: Krajowa Izba Rozliczeniowa S.A. – Szafir, Polska Wytwórnia Papierów Wartościowych S.A. – Sygillum Unizeto Technologies S.A – Certum. Wydzielona komórka organizacyjna w przedsiębiorstwie administrująca wewnętrzną hierarchią urzędów certyfikacji, które wysyłają certyfikaty odbiorcom końcowym (komputerom, usługom sieciowym lub osobom); nie koniecznie poświadczona przez inne CA.

9 Struktura PKI W skład infrastruktury PKI wchodzą takie elementy jak CA, RA oraz użytkownicy Urząd rejestracji – RA (Registration Authority) Potwierdza tożsamość podmiotu ubiegającego się o certyfikat i zezwala (bądź nie) na wydanie certyfikatu dla niego, Urząd certyfikacji – CA (Certificate Authority) Jest to organizacja wydająca certyfikat cyfrowy w oparciu o klucz publiczny, potwierdzający tożsamość jego właściciela. Jest przykładem zaufanej trzeciej strony – TTP (Trusted Third Party) Użytkownicy Są to zarówno instytucje, jak i osoby czy systemy świadczące odpowiednie usługi (www, poczta, itp.) posiadające certyfikaty cyfrowe oraz ich klienci.

10 Przypomnienie pojęć związanych z szyfrowaniem Szyfrowanie – procedura przekształcania informacji nieszyfrowanej (jawnej) w informację zaszyfrowaną (tajną) za pomocą odpowiedniego klucza. Deszyfrowanie – procedura przekształcania informacji zaszyfrowanej w jawną z wykorzystaniem odpowiedniego klucza. Klucz – ciąg znaków o określonej długości, który umożliwia wykonywanie czynności kryptograficznych takich jak szyfrowanie lub deszyfrowanie. Szyfrogram – zaszyfrowana informacja, która nie jest możliwa do odczytania bez odpowiedniego klucza deszyfrującego.

11 Szyfrowanie symetryczne Ten sam klucz jest wykorzystywany do szyfrowania i deszyfrowania informacji. Klucz jest zazwyczaj przypisywany do danego kanału informacyjnego, a nie do posiadacza. Przykłady: DES, 3DES, AES, RC4, IDEA, Blowfish

12 Rodzaje szyfrowania symetrycznego Szyfrowanie strumieniowe Odbywa się na poziomie poszczególnych bitów strumienia danych Dane są na bieżąco szyfrowane przy użyciu tajnego klucza (np. operacja XOR, który może ulegać zmianie w czasie szyfrowania Najbardziej znany algorytm to RC4. Szyfrowanie blokowe Dane są dzielone na bloki o określonej długości i bloki te są szyfrowane. Tryb ECB (ang. Electronic CodeBook) – bloki szyfrowane są niezależnie tym samym kluczem. Te same bloki danych dadzą ten sam szyfrogram, a więc łatwiejszy atak na duże dane. Tryb CBC (ang. Cipher Block Chaining) – blok jawny jest przed szyfrowaniem sumowany (operacja XOR) z szyfrogramem bloku poprzedniego. Pierwszy blok z wektorem inicjalizacyjnym.

13 Szyfrowanie asymetryczne Klucz publiczny (jawny) adresata wiadomości – dostępny dla wszystkich, upubliczniony, użyty do szyfrowania. Klucz prywatny (tajny) unikatowy, znany jedynie właścicielowi, chroniony – tylko on może odkodować. Przykłady: RSA, DSA, ElGamal

14 Podpis cyfrowy Analogiczny mechanizm jak w przypadku szyfrowania asymetrycznego, lecz odwrotne zastosowanie kluczy. Stosowane te same algorytmy, jak np. RSA czy DSA. Klucz prywatny (podmiotu, który podpisuje) wykorzystywany jest przy składaniu podpisu cyfrowego. Odbiorca zna klucz publiczny nadawcy i weryfikuje nim podpis pod wiadomością.

15 Funkcja skrótu (hash) Podstawowe cechy funkcji skrótu: Skrót daje się utworzyć łatwo, natomiast odwrócenie operacji ma być niemożliwe (funkcja jednokierunkowa), Wynik generowany jest na podstawie całego wejścia, Zmiana jednego bajtu (znaku) – całkiem inny wynik, Niezależnie od długości wejścia wynik ma tę samą długość dla danego algorytmu. Przykłady algorytmów: DES, MD2, MD4, MD5, SHA1, SHA256, SHA512, itp.

16 Cechy szyfrowania symetrycznego Zalety: Bardzo szybkie (stosowane do dużych ilości danych), Zapewnia poufność informacji, Może (ale nie musi) zapewniać integralności, np. w trybie CBC odszyfrowanie całości gwarantuje, że dane nie zostały zmienione. Wady: Jest jeden wspólny klucz, który ma być znany tylko stronom wymieniającym informacje. Problem z przekazaniem klucza w sposób bezpieczny. Nie zapewnia autentyczności i niezaprzeczalności.

17 Cechy szyfrowania asymetrycznego Zalety: Zapewnia poufność informacji, Nie ma problemu z przekazywaniem kluczy, gdyż prywatny posiada jedynie jego właściciel, Wykorzystanie podpisu cyfrowego zapewnia integralność, autentyczność i niezaprzeczalność. Wady: Stosunkowo wolne (RSA wolniejsze około 1000 razy od DES) – nie nadaje się do szyfrowania większej ilości danych czy strumieni informacji jak w np. w VPN.

18 Realizacja bezpiecznej komunikacji Poufność – dane są szyfrowane i tylko podmiot znający odpowiedni klucz może je odszyfrować – dla osób trzecich są niemożliwe do odczytania Kryptografia symetryczna – obie strony posiadają ten sam klucz i tylko one mogą odczytywać przesyłane informacje, Kryptografia asymetryczna – informacje szyfrowane są kluczem publicznym adresata i tylko on może je odczytać, ponieważ posiada odpowiedni klucz prywatny. Autentyczność – podpis cyfrowy pod wiadomością potwierdza tożsamość jej autora. Podpis może złożyć tylko ten kto ma klucz prywatny, Autor udostępnia klucz publiczny, więc wszyscy którzy go otrzymają mogą weryfikować podpis.

19 Bezpieczna komunikacja c.d. Integralność – podpis cyfrowy zapewnia o niezmienności danych Podpis cyfrowy wykonywany jest pod całą wiadomością, Zmiana danych zmienia podpis cyfrowy, Najczęściej podpisuje się skrót wiadomości. Niezaprzeczalność – podpis cyfrowy określa jednoznacznie autora wiadomości – nie wyprze się on jej Nie ma dwóch takich samych kluczy prywatnych, Klucz prywatny potrzebny do podpisu znany jest tylko jego właścicielowi, Jak sprawdzić czy klucz prywatny należy do właściwej osoby? Klucz prywatny jest niczym dokument tożsamości – przyznawany jest jedynie właściwej osobie (po potwierdzeniu jej tożsamości). Wydaje go uprawniony organ – TTP.

20 Certyfikat klucza publicznego Dokument elektroniczny potwierdzający tożsamość podmiotu legitymującego się kluczem publicznym. Jest podpisany przez podmiot, któremu ufamy – TTP. Potwierdza autentyczność klucza publicznego. Zawiera takie informacje jak: Informacje o podmiocie – jego nazwa, umiejscowienie geograf. Itp. Informacje o wystawcy, który go podpisał, Czas ważności certyfikatu, Klucz publiczny podmiotu, Podpis elektroniczny wystawcy. Przykłady certyfikatów: X.509, PGP, SPKI/SDSI

21 Standard X.509 X.509 – standard ITU-T (International Telecommunication Union w Genewie) wywodzący się ze standardu X.500 Opisuje certyfikaty i sposób zarządzania nimi w PKI Umożliwiający stworzenie hierarchicznej struktury powiązanych z sobą CA - w odróżnieniu od Web of Trust. Określa schemat i normy dla: Certyfikatów kluczy publicznych, Odwołań certyfikatów – listy CRL, Certyfikatów atrybutu uprawnień. X.509v3 opisany w RFC 5280 i PN-ISO/IEC (2006) Protokoły i standardy wykorzystujące X.509: smartcard, SSH, IPsec, TLS/SSL – HTTPS, IMAPS, LDAPS, itp.

22 Standard X.509 a X.500 Standard X.509 wchodzi w skład grupy dotyczącej usług katalogowych i wywodzących się z protokołu X.500. W certyfikatach X.509 pojawia się nazwa podmiotu i wystawcy – obie jako nazwa wyróżniona w formacie X.500 Struktura nazwy wyróżnionej (ang. Distinguished Name) C (Country Name) – nazwa kraju, ST (State or Province Name) – nazwa stanu, prowincji, województwa, itp. L (Locality Name) – nazwa miejscowości, O (Organization Name) – nazwa organizacji, OU (Organization Unit Name) – nazwa jednostki, działu w ogranizacji, CN (Common Name) – nazwa identyfikująca podmiot.

23 RSA PKCS – standardy PKI PKCS (ang. Public-Key Cryptography Standards) – to standardy kryptograficzne publikowane przez RSA The Security Division of EMC. PKCS to normy przemysłowe dotyczące kryptografii z kluczem publicznym, czyli szyfrowania asymetrycznego. Najczęściej wykorzystywane to: PKCS #1 – definiuje matematyczne własności oraz format kluczy publicznych i prywatnych dla algorytmu RSA. Opisuje również podstawowe algorytmy wykorzystywane do szyfrowania i tworzenia podpisów z wykorzystaniem RSA. PKCS #7 – standard kryptograficznego kodowania wiadomości. Opisuje dane, które podlegają operacjom kryptograficznym. Wykorzystywany w przypadku przesyłania żądania odnowienia certyfikatu lub podczas jego eksportowania – RFC 2315

24 RSA PKCS – standardy PKI c.d. PKCS #8 – standard opisujący format zapisu klucza prywatnego – RFC PKCS #10 – standard kodowania wniosku o certyfikat wysyłanego do CA – RFC PKCS #11 – standard kodowania interfejsu tzw. żetonu kryptograficznego. Używany w celu realizacji modelu Single sign-on w Infrastrukturze klucza publicznego. Taki format mają certyfikaty cyfrowe umieszczane na kartach inteligentnych. PKCS #12 – standard kodowania informacji osobistych. Opisuje formaty zapisu danych kryptograficznych. Wykorzystywany przy przesyłaniu pary kluczy (prywatny, publiczny), które są dodatkowo chronione hasłem. Stosowany jest do przechowywania certyfikatów osób.

25 Certyfikat X.509 klucza publicznego Certyfikat X.509 v3 klucza publicznego składa się z następujących części: Certyfikat – zawiera standardowe pola opisujące certyfikat oraz opcjonalną część związaną z rozszerzeniami – od wersji 3 X.509 Algorytm sygnatury certyfikatu – najczęściej SHA1 z RSA Wartość sygnatury certyfikatu – podpis certyfikatu złożony przez CA w formacie DER w kodowaniu ASN.1

26 Certyfikat X.509 klucza publicznego c.d. Standardowe i obowiązkowe pola certyfikatu X.509 klucza publicznego zawiera pola – od wersji 2: Wersja – numer standardu X.509; aktualnie 3 – w polu wartość 2 Numer seryjny – unikalny w obrębie CA numer certyfikatu Algorytm sygnatury certyfikatu – najczęściej SHA1 z RSA Wystawca – nazwa wyróżniona CA, które podpisało certyfikat Ważność Nieważny przed – data od kiedy certyfikat jest ważny Nieważny po – data po której certyfikat traci ważność Podmiot – nazwa wyróżniona podmiotu, którego jest to certyfikat Informacje o kluczu publicznym Algorytm klucza publicznego – najczęściej RSA Klucz publiczny – zawartość klucza publicznego; z reguły już 2048 bitów

27 Certyfikat X.509 klucza publicznego c.d. Od wersji 3 X.509 certyfikat może zawierać rozszerzenia. Umożliwiają definiowanie dodatkowych atrybutów związanych z użytkownikami i zarządzaniem certyfikatami. Rozszerzenie posiada swe ID, wartość i pole logiczne określające czy jest ono krytyczne. Gdy jest ono krytyczne musi mieć wartość i być znane. Przykłady rozszerzeń: Podstawowe ograniczenia certyfikatu – wartością może być przykładowo Nie jest organem certyfikacji – krytyczne, Punkty dystrybucji CRL – zawiera URI miejsca z listą odwołań certyfikatów – niekrytyczne.

28 Postać DN w X.509 Nazwa wyróżniona – DN musi jednoznacznie (w obrębie CA) identyfikować podmiot. DN składa się z części opisującej położenie podmiotu (geograficzne i logistyczne w obrębie organizacji) oraz z nawy potocznej – CN. W praktyce nazwa potoczna – CN podmiotu powinna spełniać następujące reguły: W przypadku certyfikatu dla serwera usługi (poczta, www, itp.) jest jego adresem w postaci FQDN – np. poczta.wszib.edu.pl, W przypadku certyfikatu dla CA jest adresem domenowym organizacji – np. wszib.edu.pl, W przypadku certyfikatu wystawianego osobie jej imię i nazwisko.

29 Przykład certyfikatu X suszi

30 Przykład certyfikatu X tekst Certificate: Data: Version: 3 (0x2) Serial Number: 02:4a:7a:dc:f5:c3:61:7e:1a:d6:da:96:cc:69:7c:30 Signature Algorithm: sha1WithRSAEncryption Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server Validity Not Before: Mar 24 00:00: GMT Not After : Mar 24 23:59: GMT Subject: C=PL, ST=Małopolska, L=Kraków, O=Wyższa Szkoła Zarządzania i Bankowości, OU=suszi, CN=suszi.wszib.edu.pl Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:be:e7:16:8b:8c:79:1e:db:f0:9b:65:98:4e:13: …… Certificate: Data: Version: 3 (0x2) Serial Number: 02:4a:7a:dc:f5:c3:61:7e:1a:d6:da:96:cc:69:7c:30 Signature Algorithm: sha1WithRSAEncryption Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc, OU=Certification Services Division, CN=Thawte Premium Server Validity Not Before: Mar 24 00:00: GMT Not After : Mar 24 23:59: GMT Subject: C=PL, ST=Małopolska, L=Kraków, O=Wyższa Szkoła Zarządzania i Bankowości, OU=suszi, CN=suszi.wszib.edu.pl Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:be:e7:16:8b:8c:79:1e:db:f0:9b:65:98:4e:13: ……

31 Przykład certyfikatu X.509 – c.d. Exponent: (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE X509v3 CRL Distribution Points: Full Name: URI:http://crl.thawte.com/ThawteServerPremiumCA.crl X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication Authority Information Access: OCSP - URI:http://ocsp.thawte.com Signature Algorithm: sha1WithRSAEncryption 03:b6:a6:25:84:4b:28:36:72:27:43:20:58:19:2f:9c:a8:fa: … BEGIN CERTIFICATE----- MIIEFzCCA4CgAwIBAgIQAkp63PXDYX4a1tqWzGl8MDAN …… -----END CERTIFICATE----- Exponent: (0x10001) X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE X509v3 CRL Distribution Points: Full Name: URI:http://crl.thawte.com/ThawteServerPremiumCA.crl X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication Authority Information Access: OCSP - URI:http://ocsp.thawte.com Signature Algorithm: sha1WithRSAEncryption 03:b6:a6:25:84:4b:28:36:72:27:43:20:58:19:2f:9c:a8:fa: … BEGIN CERTIFICATE----- MIIEFzCCA4CgAwIBAgIQAkp63PXDYX4a1tqWzGl8MDAN …… -----END CERTIFICATE-----

32 Certyfikat X.509 CA Certyfikat CA od certyfikatu klucza publicznego różni się jedynie wartością odpowiedniego pola rozszerzeń: X509v3 Basic Constraints: CA:TRUE X509v3 Basic Constraints: CA:TRUE

33 Self signed certyfikat CA Z reguły certyfikaty CA są podpisywane przez inne CA będące wyżej w hierarchii poświadczające autentyczność. Najwyższe w hierarchii (root certificates) nie mają przez kogo być potwierdzone i podpisane są przez ich twórców (ang. self signed certificates). Jeśli certyfikat CA nie jest poświadczony przez zaufane CA, to musi być obdarzony zaufaniem przez podmiot korzystający z certyfikatów przez niego podpisanych. Każdy może utworzyć własne CA i podpisać go samemu – przykładowo CA w firmie – ufają mu wszyscy pracownicy. Certyfikat self signed ma zarówno w polu określającym podmiot jak i wystawcę tę samą nazwę wyróżniającą DN.

34 Ścieżka certyfikatów w X.509 Gdy certyfikat klucza publicznego podpisany jest przez CA, to przy prawidłowej konfiguracji powinna być widoczna hierarchia – dane uwierzytelniającego CA W przypadku certyfikatu CA self signed nie będzie nic ponad nim samym w hierarchii: Dla certyfikatu klucza publicznego podpisanego przez CA uwierzytelnione przez inne CA ścieżka certyfikacji:

35 Praktyczna realizacja PKI Najczęściej spotykane wykorzystanie PKI – bezpieczne www (protokół HTTPS) i poczta (POP3S, IMAPS). Proces potwierdzania tożsamości podczas bezpiecznego połączenia np. www czy poczta: Łączymy się z witryną, która przedstawia się certyfikatem klucza publicznego, Oprogramowanie klienckie (przeglądarka, program pocztowy) sprawdza podpis certyfikatu serwera: Jeśli podpisany jest przez jedno z głównych CA, których listę klient ma wbudowaną, to potwierdza to jego tożsamość, Jeśli podpisany jest przez nieznane CA, to użytkownik otrzyma stosowne ostrzeżenie i będzie musiał sam potwierdzić zaufanie do niego. Po uznaniu autentyczności serwera zostaje nawiązana sesja.

36 Ostrzeżenie – nieznane CA Nawiązanie połączenia z serwerem przedstawiającym się certyfikatem podpisanym przez nieznane CA Użytkownik musi sam podjąć decyzję czy zaakceptować certyfikat tymczasowo lub na stałe czy go odrzucić.

37 Niezgodność DN z FQDN Różnicy w adresie z polem DN certyfikatu – niewłaściwa witryna:

38 Import certyfikatu CA Możliwe jest zaimportowanie do systemu Windows czy Linux certyfikatu danego CA i obdarzenie go zaufaniem. Certyfikaty kluczy publicznych podpisane przez obdarzone zaufaniem CA będą miały potwierdzaną autentyczność. Zaimportowanie certyfikatu CA na potrzeby programu firefox:

39 Listy odwołań certyfikatów Lista odwołanych certyfikatów – CRL (ang. Certificate Revocation List) przechowywana jest w CA. Znajdują się w niej numery seryjne certyfikatów. Podmioty korzystające z PKI pobierają cyklicznie CRL i sprawdzają nie tylko ważność czasową certyfikatów, lecz także ich obecność na liście. Przykładowe przyczyny odwołania certyfikatu w czasie jego ważności: Zmiana nazwy podmiotu – konieczność zmiany pola DN, Ujawnienie klucza prywatnego podmiotu, Odejście pracownika z firmy legitymującego się certyfikatem, Niemożność wykorzystania klucza prywatnego użytkownika – zgubienie tokenu, zapomnienie hasła do klucza, itp.

40 Certyfikaty atrybutu uprawnień Certyfikaty atrybutu uprawnień AC (ang. Attribute Certificate) opisane są w RFC Wydawane są przez AA (ang. Attribute Authority). Zawierają atrybuty danego podmiotu określające jego uprawnienia – spełniają funkcję autoryzacji. Wydawane najczęściej na podstawie uprzedniego uwierzytelnienia podmiotu – sprawdzenia jego certyfikatu klucza publicznego. Podmiot może posiadać wiele certyfikatów AC nadających mu różne uprawnienia.

41 Sposób uzyskania certyfikatu 1. Użytkownik za pomocą odpowiedniego oprogramowania generuje, dla siebie lub usługi, żądanie certyfikatu. 2. Tworzony jest plik ze zgłoszeniem oraz klucz prywatny. 3. Plik zgłoszenia, zawierający klucz publiczny, wysyłany jest do urzędu certyfikacji – CA. 4. Urząd rejestracji – RA weryfikuje tożsamość zgłaszającego się podmiotu i po jej potwierdzeniu zezwala CA na wydanie certyfikatu klucza publicznego. 5. CA przyjmuje zgłoszenie i podpisuje je swoim kluczem prywatnym tworząc certyfikat. 6. Użytkownik otrzymuje podpisany przez CA certyfikat. 7. Może już udostępniać otrzymany certyfikat.

42 Utworzenie self signed CA Utworzenie CA za pomocą openSSL: Przygotowanie pustego pliku na bazę, Przygotowanie pliku na numery seryjne – na początek wartość 01 Wygenerowanie certyfikatu – plik ca.crt oraz klucza prywatnego – plik ca.key przykładowym poleceniem: ~]$ openssl req -new -x509 -days out ca.crt \ > -keyout ca.key ~]$ openssl req -new -x509 -days out ca.crt \ > -keyout ca.key Po podaniu hasła zabezpieczającego klucz prywatny wygenerowany zostanie klucz prywatny i certyfikat CA. Stworzony został certyfikat podpisany przez samego siebie – self signed CA. Wartości pól Issuer oraz Subject są takie same.

43 Postać wygenerowanego CA ~]$ openssl x509 -in ca.crt -text Wypisanie zawartości utworzonego certyfikatu CA Certificate: Data: Version: 3 (0x2) Serial Number: ee:14:78:2c:90:85:9e:d2 Signature Algorithm: sha1WithRSAEncryption Issuer: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, Validity Not Before: Apr 10 12:59: GMT Not After : Apr 7 12:59: GMT Subject: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, Subject Public Key Info: ….. Certificate: Data: Version: 3 (0x2) Serial Number: ee:14:78:2c:90:85:9e:d2 Signature Algorithm: sha1WithRSAEncryption Issuer: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, Validity Not Before: Apr 10 12:59: GMT Not After : Apr 7 12:59: GMT Subject: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, Subject Public Key Info: …..

44 Wygenerowanie zgłoszenia Utworzenie za pomocą openSSL zgłoszenia – plik serv.req i klucza prywatnego – serv.key ~]$ openssl req -new -out serv.req -keyout serv.key Certificate Request: Data: Version: 0 (0x0) Subject: C=PL, ST=Malopolska, L=Krakow, O=Fimrma Frania sp. z.o.o., OU=IT-www, CN=secure.krakow.wszib.edu.pl/ Address= Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c9:ec:0c:fc:3d:9d:01:51:27:52:29:6a:05:55: …… Certificate Request: Data: Version: 0 (0x0) Subject: C=PL, ST=Malopolska, L=Krakow, O=Fimrma Frania sp. z.o.o., OU=IT-www, CN=secure.krakow.wszib.edu.pl/ Address= Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:c9:ec:0c:fc:3d:9d:01:51:27:52:29:6a:05:55: …… ~]$ openssl req -in serv.req -text Wypisanie zawartości zgłoszenia

45 Podpisanie zgłoszenia Podpisanie zgłoszenia (utworzenie certyfikatu): ~]$ openssl ca -cert ca.crt -keyfile ca.key -in serv.req \ > -out serv.crt -days 1825 ~]$ openssl ca -cert ca.crt -keyfile ca.key -in serv.req \ > -out serv.crt -days 1825 Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Apr 10 13:57: GMT Not After : Apr 9 13:57: GMT Subject: countryName= PL stateOrProvinceName= Malopolska organizationName= Firma Frania z.o.o. organizationalUnitName= IT-www commonName= secure.krakow.wszib.edu.pl Address= ….. Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: Apr 10 13:57: GMT Not After : Apr 9 13:57: GMT Subject: countryName= PL stateOrProvinceName= Malopolska organizationName= Firma Frania z.o.o. organizationalUnitName= IT-www commonName= secure.krakow.wszib.edu.pl Address= …..

46 Podpisanie zgłoszenia c.d. …… X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CA:58:4D:C7:DD:DF:6A:AC:68:DC:12:99:03:07:F9:3A:1F:13:A8:2F X509v3 Authority Key Identifier: keyid:CA:7F:2A:99:71:D5:E8:BF:AE:34:37:04:A5:C5:B6:51:04:53:7D:93 Certificate is to be certified until Apr 9 13:57: GMT (1825 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated …… X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: CA:58:4D:C7:DD:DF:6A:AC:68:DC:12:99:03:07:F9:3A:1F:13:A8:2F X509v3 Authority Key Identifier: keyid:CA:7F:2A:99:71:D5:E8:BF:AE:34:37:04:A5:C5:B6:51:04:53:7D:93 Certificate is to be certified until Apr 9 13:57: GMT (1825 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated

47 Utworzony certyfikat Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, CN=krakow.wszib.edu.pl/ Address= Validity Not Before: Apr 10 14:02: GMT Not After : Apr 9 14:02: GMT Subject: C=PL, ST=Malopolska, O=Firma Frania z.o.o., OU=IT-www, Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:a6:5f:6f:8d:fa:52:7d:19:e6:e1:28:d5:d8:a2: …… Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT, CN=krakow.wszib.edu.pl/ Address= Validity Not Before: Apr 10 14:02: GMT Not After : Apr 9 14:02: GMT Subject: C=PL, ST=Malopolska, O=Firma Frania z.o.o., OU=IT-www, Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:a6:5f:6f:8d:fa:52:7d:19:e6:e1:28:d5:d8:a2: …… ~]$ openssl x509 -in serv.crt -text

48 Cechy certyfikatu V Z01unknown /C=PL/ST=Malopolska/O=Firma Frania z.o.o./OU=IT- edu.pl Ważność certyfikatu została ustalona przez CA podczas podpisywania zgłoszenia i wpisana do certyfikatu. W polu Subject znalazła się nazwa wyróżniona podmiotu pobrana ze zgłoszenia. W polu Issuer jest nazwa wyróżniająca podpisującego CA. Certyfikat otrzymuje kolejny numer seryjny. Numery seryjne i przyporządkowane im certyfikaty przechowywane są w bazie CA – jeden certyfikat, to jedna linia:

49 Protokół SSL/TLS Bezpieczne przesyłanie danych protokołów warstwy aplikacji Krzysztof Boryczko Remigiusz Górecki

50 Protokół TLS (ang. Transport Layer Security) jest rozwinięciem protokołu SSL (ang. Secure Socket Layer). Ma za zadanie zapewnić poufność i integralność przesyłanych danych. Wykorzystuje certyfikaty X.509 i PKI co umożliwia potwierdzenie autentyczności serwera jak i klienta. Jest protokołem warstwy transportowej i prezentacji – umożliwia enkapsulację i szyfrowanie protokołów warstwy aplikacji; takich jak: HTTP, POP3, IMAP, SMTP, NNTP, itp. Protokoły wykorzystujące TLS z reguły posiadają przydzielony oddzielny port i otrzymują nazwę z literą s na końcu – HTTPS, POP3S, itp. Wykorzystywany jest również przez OpenVPN i SSL VPN Protokół SSL/TLS

51 1994 r. – Netscape opracowuje SSL v1 – wersja wewnętrzna, niedostępna publicznie r. – SSL v2 pierwsza dostępna wersja protokołu r. – SSL v3 poprawiona wersja 2, gdyż zawierała ona błędy związane z bezpieczeństwem r. – TLS v1.0 uaktualnienie SSL i uczynienie go bardziej bezpiecznym. Zmiany na tyle duże, iż jest to nowa wersja r. – TLS v1.1 dodane zabezpieczenie przed pewnymi atakami na szyfry blokowe CBC r. – TLS v1.2 kilka istotnych zmian dotyczących algorytmów szyfrowania. Historia protokołu SSL/TLS

52 Protokół klient / serwer. Jest to protokół połączeniowy. Protokół TLS składa się z dwóch warstw: TLS Record Protocol – umiejscowiony w warstwie transportowej – ma za zadanie przesyłanie danych w sposób zapewniający poufność i integralność. Wykorzystane jest tu szyfrowanie symetryczne – np. 3DES. TLS Handshake Protocol – umiejscowiony ponad warstwą transportową (w warstwie prezentacji) – jego zadaniem jest wynegocjowanie parametrów połączenia, potwierdzenie tożsamości serwera i klienta (jeśli wymagane) oraz ustalenie klucza sesji. Wykorzystane jest tu szyfrowanie asymetryczne – głównie RSA. TLS – zasada działania

53 TLS Record Protocol zapewnia bezpieczne połączenie posiadające następujące cechy: Prywatność – przesyłane dane są szyfrowane w sposób symetryczny (RC4, DES, 3DES, itp) z wykorzystaniem unikalnego klucza. Klucz jest generowany dla danej sesji w czasie fazy negocjacji – prookół TLS Handshake Protocol, Autentyczność – dane zawierają MAC (ang. Message Authentication Code) co potwierdza ich autentyczności. Jest to swego rodzaju podpis pod danymi wykorzystujący odpowiedni klucz. Integralność jest zapewniona przez wykorzystanie funkcji skrótu takich jak MD5 czy SHA. TLS Record Protocol

54 TLS Handshake Protocol zapewnia przede wszystkim nawiązanie sesji i wynegocjowanie jej parametrów. Wpierw następuje przedstawienie się podmiotów i ustalenie wstępnych parametrów: 1.Klient wysyła wiadomość Client hello a w niej listę obsługiwanych algorytmów szyfrowania, ID sesji oraz pewną liczbę losową służącą później do ustalenia klucza sesji. 2.Serwer odpowiada wiadomością Server hello, w której wysyła analogiczne informacje jak klient w swym powitaniu. 3.Serwer przedstawia swą tożsamość wysyłając swój certyfikat klucza publicznego w formacie X.509. Może też zażądać potwierdzenia tożsamości klienta. Na koniec wysyła wiadomość Server hello done. 4.Punkt opcjonalny – klient wysyła swój certyfikat klucza publicznego jeśli tego zażądał serwer. TLS Handshake Protocol

55 Następnie jest ustalenie klucza sesji do szyfrowania transmisji: 1.Klient wysyła wiadomość Key exchange, a w niej wygenerowany losowo 48-bitowy (w przypadku RSA) premaster key zaszyfrowany kluczem publicznym serwera. 2.Serwer otrzymawszy wiadomość odszyfrowuje ją swoim kluczem prywatnym i generuje klucz sesji – do otrzymanego klucza dodaje jako sól otrzymaną uprzednio losową liczbę od klienta oraz wygenerowaną wcześniej przez siebie losową liczbę. 3.Klient posiadając wygenerowaną przez serwer liczbę generuje w analogiczny sposób jak serwer klucz sesji. TLS Handshake Protocol c.d.

56 Końcowa faza negocjacji to przełączenie się do warstwy protokołu TLS Record Protocol umożliwiającej bezpieczne wysyłanie danych: 1.Klient wysyła wiadomość Change cipher spec, która informuje serwer, że klient jest gotów do szyfrowania danych za pomocą klucza sesji i wynegocjowanego wcześniej algorytmu. Klient przełącza się do warstwy protokołu TLS Record Protocol. 2.Klient wysyła wiadomość Client finished, która jest pierwszą zaszyfrowaną wiadomością. Zawarte są w niej: klucz sesji, wynegocjowane algorytmy itp. 3.Serwer otrzymawszy pierwszą wiadomość od klienta przełącza się do warstwy protokołu TLS Record Protocol. 4.Otrzymawszy wiadomość nr 2 weryfikuje ją i odsyła analogiczną Server finished do klienta. 5.Obie strony gotowe są do szyfrowanej transmisji danych. TLS Handshake Protocol c.d.

57 Konfiguracja serwera www z SSL/TLS Użycie protokołu SSL/TLS do zabezpieczenia HTTP Krzysztof Boryczko Remigiusz Górecki

58 Instalacja serwera www Apache w dystrybucjach z rodziny Red Hat – pakiet httpd. Wykorzystanie protokołu SSL/TLS przez serwer Apache – instalacja pakietu mod_ssl. Główny katalog konfiguracyjny serwera www to /etc/httpd. Znajdują się w nim katalogi: conf – katalog z plikami konfiguracyjnymi serwera Apache – znajduje się w nim główny plik konfiguryjny serwera httpd.conf, conf.d – katalog z plikami konfiguracyjnymi rozszerzeń serwera – znajduje się w nim między innymi plik ssl.conf, dotyczący konfiguracji protokłu SSL/TLS. logs – katalog z dziennikami (logami) serwera, modules – katalog z modułami roszerzeń serwrera httpd, run – katalog z plikiem httpd.pid zawierającym PID procesu httpd. Instalacja Apache z SSL – RH

59 Plik konfiguracyjny serwera – /etc/httpd/conf/httpd.conf. W pliku znajdują się definicje atrybutów w postaci nazwa_atrybutu wartość_atrybutu. Plik zawiera bardzo dużą liczbę atrybutów; najważniejsze: User – nazwa użytkownika w kontekście którego będzie uruchomiony serwer httpd (domyślnie – apache), ServerName – adres FQDN serwera (ewentualnie adres IP), ServerAdmin – adres administratora serwera, DocumentRoot – główny katalog strony www serwra, Listen – adres i numer portu na jakim nasłuchuje serwer, AccessFileName – nazwa pliku z dalszymi ustawieniami konfiguracyjnymi serwera – domyślnie.htaccess LogLevel – poziom szczegółowości zapisywania informacji (logów) – domyślnie warn. Konfiguracja serwera Apache

60 Plik zawiera również definicje sekcji takich jak IfModule, Directory, Files, Proxy czy VirtualHost. Sekcja IfModule zawiera ustawienia dotyczące danego modułu; przykładowo umożliwienie użytkownikom wystawiania ich własnych stron w katalogu public_html: Konfiguracja Apache c.d. UserDir public_html UserDir public_html Strona taka będzie widoczna pod adresem Wyłączenie takiej możliwości – ustawienie disabled jako wartości atrybutu UserDir

61 Sekcja Directory umożliwia zdefiniowanie własności i parametrów dostępu związanych z danym katalogiem. Standardowe ustawienie głównego katalogu ze stroną: Apache – Sekcja Directory Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Ustawienie to oznacza: Zwrócenie indeksu (listy) plików z katalogu, gdy nie ma w nim pliku strony, podążanie za dowiązaniami symbolicznymi, Zabronienie nadpisywania atrybutów wartościami z.htaccess Pozwolenie wszystkim na dostęp do zawartości tego katalogu.

62 W przypadku gdy serwer www ma obsługiwać więcej niż jeden adres FQDN stosuje się hosty wirtualne. Konfiguracja hosta wirtualnego może zawierać prawie wszystkie ustawienia jakie definiowane są dla serwera. Stosuje się aktualnie definicje hostów oparte o ich nazwy FQDN, a nie jak dawniej o adresy IP. Przykład włączenia obsługi hostów wirtualnych i definicja przykładowego hosta Apache – hosty wirtualne NameVirtualHost *:80 ServerName ServerAdmin ErrorLog logs/krakow.log DocumentRoot /var/www/krakow NameVirtualHost *:80 ServerName ServerAdmin ErrorLog logs/krakow.log DocumentRoot /var/www/krakow

63 W celu udostępnienia serwera www za pośrednictwem protokołu HTTPS konieczna jest instalacja i konfiguracja modułu mod_ssl. Należy przygotować również następujące certyfikaty w formacie X.509: Certyfikat klucza publicznego serwera podpisany przez odpowiednie CA, Certyfikat klucza publicznego CA, które podpisało certyfikat serwera – powinien zostać udostępniony przez CA, Plik z kluczem prywatnym serwera http – musi zostać umieszczony w takim miejscu i z takimi prawami, aby dostęp do niego miał tylko serwer Apache. Konfiguracja SSL w Apache

64 Konfiguracja modułu mod_ssl znajduje się standardowo w pliku /etc/httpd/conf.d/ssl.conf Składnia jest analogiczna jak konfiguracyjnego serwera. Najważniejsze atrybuty: Listen – numer portu na którym nasłuchuje serwer na szyfrowane połączenia za pomocą protokołu HTTPS (standardowo 443) SSLCertificateFile – ścieżka do certyfikatu serwera, SSLCertificateKeyFile – ścieżka do pliku z kluczem prywatnym serwera – odpowiadającemu kluczowi publicznemu z certyfikatu, SSLCAAertificateFile – ścieżka do certyfikatu CA – dzięki temu we własnościach certyfikatu widzianych w przeglądarce będzie widoczny certyfikat CA, które go podpisało, SSLVerifyClient – umożliwia wymuszenie weryfikacji klienta – będzie musiał wylegitymować się odpowiednim certyfikatem. Konfiguracja SSL w Apache c.d.


Pobierz ppt "Public Key Infrastructure (PKI) Infrastruktura klucza Publicznego Krzysztof Boryczko Remigiusz Górecki."

Podobne prezentacje


Reklamy Google