Transcript ppsx
Infrastruktura klucza Publicznego
Public Key Infrastructure (PKI)
Krzysztof Boryczko
Remigiusz Górecki
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.
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.
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.
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).
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)
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.
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.
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.
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.
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
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.
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
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ą.
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.
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.
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.
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.
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.
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
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 9594-8 (2006)
Protokoły i standardy wykorzystujące X.509: smartcard, SSH,
IPsec, TLS/SSL – HTTPS, IMAPS, LDAPS, itp.
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.
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
RSA PKCS – standardy PKI c.d.
◦ PKCS #8 – standard opisujący format zapisu klucza prywatnego –
RFC 5208.
◦ PKCS #10 – standard kodowania wniosku o certyfikat wysyłanego do
CA – RFC 2986.
◦ 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.
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
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
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.
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.
Przykład certyfikatu X.509 - suszi
Przykład certyfikatu X.509 - 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
CA/[email protected]
Validity
Not Before: Mar 24 00:00:00 2010 GMT
Not After : Mar 24 23:59:59 2011 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: ……
Przykład certyfikatu X.509 – c.d.
Exponent: 65537 (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-----
Certyfikat X.509 CA
Certyfikat CA od certyfikatu klucza publicznego różni się jedynie
wartością odpowiedniego pola rozszerzeń:
X509v3 Basic Constraints:
CA:TRUE
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.
Ś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:
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.
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ć.
Niezgodność DN z FQDN
Różnicy w adresie z polem DN certyfikatu – niewłaściwa
witryna:
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:
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.
Certyfikaty atrybutu uprawnień
Certyfikaty atrybutu uprawnień AC (ang. Attribute Certificate)
opisane są w RFC 3281.
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.
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.
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:
[franio@dns1 ~]$ openssl req -new -x509 -days 3650 -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.
Postać wygenerowanego CA
Wypisanie zawartości utworzonego certyfikatu CA
[franio@dns1 ~]$ openssl x509 -in ca.crt -text
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,
CN=krakow.wszib.edu.pl/[email protected]
Validity
Not Before: Apr 10 12:59:27 2010 GMT
Not After : Apr 7 12:59:27 2020 GMT
Subject: C=PL, ST=Malopolska, L=Krakow, O=Firma Frania z.o.o., OU=IT,
CN=krakow.wszib.edu.pl/[email protected]
Subject Public Key Info: …..
Wygenerowanie zgłoszenia
Utworzenie za pomocą openSSL zgłoszenia – plik serv.req i
klucza prywatnego – serv.key
[franio@dns1 ~]$ openssl req -new -out serv.req -keyout serv.key
Wypisanie zawartości zgłoszenia
[franio@dns1 ~]$ openssl req -in serv.req -text
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/emailAddress=
[email protected]
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: ……
Podpisanie zgłoszenia
Podpisanie zgłoszenia (utworzenie certyfikatu):
[franio@dns1 ~]$ 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:59 2010 GMT
Not After : Apr 9 13:57:59 2015 GMT
Subject:
countryName
= PL
stateOrProvinceName
= Malopolska
organizationName
= Firma Frania z.o.o.
organizationalUnitName
= IT-www
commonName
= secure.krakow.wszib.edu.pl
emailAddress
= [email protected]
…..
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:59 2015 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
Utworzony certyfikat
[franio@dns1 ~]$ openssl x509 -in serv.crt -text
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/emailAddress=
[email protected]
Validity
Not Before: Apr 10 14:02:30 2010 GMT
Not After : Apr 9 14:02:30 2015 GMT
Subject: C=PL, ST=Malopolska, O=Firma Frania z.o.o., OU=IT-www,
CN=secure.krakow.wszib.edu.pl/[email protected]
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: ……
Cechy certyfikatu
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:
V
150409140230Z
01
unknown
/C=PL/ST=Malopolska/O=Firma Frania z.o.o./OU=ITwww/CN=secure.krakow.wszib.edu.pl/[email protected].
edu.pl
Bezpieczne przesyłanie danych
protokołów warstwy aplikacji
Protokół SSL/TLS
Krzysztof Boryczko
Remigiusz Górecki
Protokół SSL/TLS
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
Historia protokołu SSL/TLS
1994 r. – Netscape opracowuje SSL v1 – wersja wewnętrzna,
niedostępna publicznie.
1995 r. – SSL v2 pierwsza dostępna wersja protokołu.
1996 r. – SSL v3 poprawiona wersja 2, gdyż zawierała ona błędy
związane z bezpieczeństwem.
1999 r. – TLS v1.0 uaktualnienie SSL i uczynienie go bardziej
bezpiecznym. Zmiany na tyle duże, iż jest to nowa wersja.
2006 r. – TLS v1.1 dodane zabezpieczenie przed pewnymi
atakami na szyfry blokowe CBC.
2008 r. – TLS v1.2 kilka istotnych zmian dotyczących algorytmów
szyfrowania.
TLS – zasada działania
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 Record Protocol
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 Handshake Protocol
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.
2.
3.
4.
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.
Serwer odpowiada wiadomością „Server hello”, w której wysyła
analogiczne informacje jak klient w swym powitaniu.
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”.
Punkt opcjonalny – klient wysyła swój certyfikat klucza publicznego jeśli
tego zażądał serwer.
TLS Handshake Protocol c.d.
Następnie jest ustalenie klucza sesji do szyfrowania transmisji:
1.
2.
3.
Klient wysyła wiadomość „Key exchange” , a w niej wygenerowany
losowo 48-bitowy (w przypadku RSA) premaster key zaszyfrowany
kluczem publicznym serwera.
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ę.
Klient posiadając wygenerowaną przez serwer liczbę generuje w
analogiczny sposób jak serwer klucz sesji.
TLS Handshake Protocol c.d.
Końcowa faza negocjacji to przełączenie się do warstwy
protokołu TLS Record Protocol umożliwiającej bezpieczne
wysyłanie danych:
1.
2.
3.
4.
5.
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.
Klient wysyła wiadomość „Client finished”, która jest pierwszą
zaszyfrowaną wiadomością. Zawarte są w niej: klucz sesji,
wynegocjowane algorytmy itp.
Serwer otrzymawszy pierwszą wiadomość od klienta przełącza się do
warstwy protokołu TLS Record Protocol.
Otrzymawszy wiadomość nr 2 weryfikuje ją i odsyła analogiczną „Server
finished” do klienta.
Obie strony gotowe są do szyfrowanej transmisji danych.
Użycie protokołu SSL/TLS do
zabezpieczenia HTTP
Konfiguracja serwera www z SSL/TLS
Krzysztof Boryczko
Remigiusz Górecki
Instalacja Apache z SSL – RH
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.
Konfiguracja serwera Apache
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 e-mail 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 Apache c.d.
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:
<IfModule mod_userdir.c>
UserDir public_html
</IfModule>
Strona taka będzie widoczna pod adresem
http://adres.serwera/~nazwa_uzytkownika
Wyłączenie takiej możliwości – ustawienie disabled jako wartości
atrybutu UserDir
Apache – Sekcja Directory
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ą:
<Directory ”/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
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.
Apache – hosty wirtualne
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 www.krakow.wszib.edu.pl
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.krakow.wszib.edu.pl
ServerAdmin [email protected]
ErrorLog logs/krakow.log
DocumentRoot /var/www/krakow
</Directory>
Konfiguracja SSL w Apache
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 c.d.
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.