CompTIA Security+ SY0-701: Public key infrastructure (PL)

vilya.pl 1 dzień temu
Źródło: pixabay.com

Artykuł jest częścią serii opracowań zagadnień obowiązujących na egzaminie CompTIA Security+ SY0-701. Zapisz się na newsletter, jeżeli nie chcesz przegapić kolejnych publikacji.

Uwaga! Pojęcie infrastruktury klucza publicznego jest ściśle powiązane z certyfikatami cyfrowymi, jednakże w poniższym opracowaniu skupimy się na ogólnym wyjaśnieniu potrzeby istnienia takiej infrastruktury oraz na samych kluczach kryptograficznych. Certyfikaty zostaną omówione dokładniej w jednym z kolejnych opracowań.

PKI – definicja

Infrastruktura klucza publicznego (PKI, Public Key Infrastructure) to termin o szerokim znaczeniu, jednak najczęściej stosuje się go w odniesieniu do kompletnego systemu opartego na kryptografii klucza publicznego, którego celem jest weryfikacja tożsamości oraz wiarygodności użytkowników, systemów lub urządzeń poprzez cyfrowe certyfikaty (ang. digital certificates) wykorzystywane w komunikacji elektronicznej.

Pojęcie framework w tym kontekście obejmuje wszystkie środki oraz procesy umożliwiające zarządzanie certyfikatami elektronicznymi i komponentami związanymi z szyfrowaniem przy użyciu klucza publicznego (public key encryption). Do wspomnianych środków zalicza się takie elementy jak sprzęt, oprogramowanie oraz sformalizowane polityki (ang. policies) i procedury. Natomiast zarządzanie certyfikatami polega na ich tworzeniu, dystrybucji, przechowywaniu oraz unieważnianiu (ang. revocation), gdy zachodzi taka potrzeba.

Głównym zadaniem infrastruktury klucza publicznego jest zapewnienie poufności oraz wiarygodności komunikacji. W tym celu PKI łączy takie mechanizmy jak kryptografia symetryczna i asymetryczna, funkcje skrótu (hashing) oraz podpisy cyfrowe, a następnie opakowuje je w tzw. cyfrowe certyfikaty, o których powiemy sobie więcej w jednym z przyszłych opracowań.

PKI – poufność

Aby zrozumieć istotę PKI, trzeba najpierw przypomnieć sobie kilka podstawowych pojęć z zakresu kryptografii. Zacznijmy od szyfrowania, które zapewnia poufność komunikacji. Do szyfrowania (oraz odszyfrowywania) wiadomości używa się specjalnych algorytmów kryptograficznych, które opierają się na koncepcji kluczy (ang. keys). Klucz to pewna wartość, zwykle w postaci ciągu losowych znaków, która służy do pomieszania (szyfrowania) danych w taki sposób, aby nie dało się ich odczytać bez znajomości tego klucza.

Algorytmy szyfrowania dzielimy głównie na algorytmy symetryczne (ang. symmetric encryption) oraz asymetryczne (ang. asymmetric encryption):

  • Kryptografia symetryczna – ten sam tajny (ang. secret) i współdzielony (ang. shared) klucz jest wykorzystywany zarówno do zaszyfrowania wiadomości, jak i do jej odszyfrowania. Zaletą tych algorytmów jest duża szybkość działania, a ich główną wadą – trudność bezpiecznego przekazania klucza między uczestnikami komunikacji w taki sposób, aby nie trafił on w niepowołane ręce.
  • Kryptografia asymetryczna – nazywana również kryptografią klucza publicznego (ang. public key cryptography) – wykorzystuje parę matematycznie powiązanych kluczy: publiczny (ang. public key) oraz prywatny (ang. private key). Jej zasada działania opiera się na tym, iż wiadomość zaszyfrowana kluczem publicznym może zostać odszyfrowana wyłącznie przy użyciu powiązanego z nim klucza prywatnego.
    • Odbiorca może więc opublikować swój klucz publiczny (który – jak sama nazwa wskazuje – nie musi być tajny), a dowolny nadawca może go użyć do zaszyfrowania komunikatu. Tylko odbiorca, posiadający odpowiadający mu klucz prywatny (ten już musi pozostać tajny), będzie w stanie odczytać zaszyfrowaną wiadomość.
    • Największą zaletą kryptografii klucza publicznego jest możliwość zapewnienia poufności komunikacji pomiędzy stronami, które wcześniej się nie znały ani nie wymieniały kluczy. Wystarczy, iż klucze publiczne są ogólnodostępne. Wadą natomiast jest niższa wydajność w porównaniu do kryptografii symetrycznej.

Biorąc pod uwagę zalety i wady obu podejść, bardzo często stosuje się je łącznie. Podczas nawiązywania połączenia (ustanawiania kanału komunikacji) wykorzystuje się szyfrowanie asymetryczne. Ponieważ działa ono stosunkowo wolno i nie sprawdza się przy przesyłaniu dużych ilości danych, używa się go głównie do wymiany tajnego klucza pomiędzy stronami. Gdy obie strony posiadają już wspólny klucz, dalsza komunikacja odbywa się z wykorzystaniem szyfrowania symetrycznego, które działa znacznie szybciej.

Łącząc się z dowolną stroną internetową przez protokół HTTPS, mamy pewność, iż przesyłane dane są zaszyfrowane. choćby jeżeli ktoś podsłucha transmisję, bez odpowiedniego klucza prywatnego nie będzie w stanie zrozumieć jej treści. Jest to możliwe dzięki certyfikatom cyfrowym, które zawierają m.in. klucz publiczny właściciela witryny.

W uproszczeniu: przeglądarka, nawiązując połączenie z określoną witryną, pobiera przypisany do niej certyfikat i używa zawartego w nim klucza publicznego do utworzenia poufnego kanału komunikacyjnego. Serwer może odczytać zaszyfrowaną wiadomość, używając swojego klucza prywatnego, powiązanego z kluczem publicznym znajdującym się w certyfikacie.

Aby szyfrowanie asymetryczne działało w obie strony, serwer musiałby używać klucza publicznego klienta. Tu pojawia się jednak pewien problem. Po pierwsze – każdy klient musiałby posiadać własną parę kluczy. Po drugie – algorytmy asymetryczne są mało wydajne. Dlatego, korzystając z utworzonego już bezpiecznego kanału, generowany jest klucz sesji. Od tego momentu obie strony komunikują się z wykorzystaniem szyfrowania symetrycznego przy użyciu współdzielonego klucza sesji.

PKI – wiarygodność

Wiemy już, w jaki sposób PKI przyczynia się do zapewnienia dyskretnej komunikacji za pośrednictwem certyfikatów i kryptografii klucza publicznego. Jednakże samo szyfrowanie wiadomości może okazać się niewystarczające.

Wyobraźmy sobie następujący scenariusz: atakującemu udaje się podstawić ofierze swój klucz publiczny (np. w formie spreparowanego certyfikatu), do którego posiada sparowany klucz prywatny. Niczego niepodejrzewający nadawca używa fałszywego klucza publicznego, sądząc, iż należy on do prawowitego odbiorcy. Atakujący, po odczytaniu oryginalnej wiadomości, może później przekazać wiadomość do prawdziwego odbiorcy, szyfrując ją adekwatnym kluczem publicznym. W takim przypadku uczestnicy komunikacji nie będą mieli pojęcia, iż ktoś wciął się w komunikację. Taki atak określa się mianem Man-in-the-Middle.

Aby zapobiec opisanej sytuacji, certyfikaty cyfrowe służą również do potwierdzenia tożsamości i autentyczności ich właściciela. Infrastruktura klucza publicznego umożliwia także powiązanie certyfikatów cyfrowych, wydawanych przez organ CA (Certificate Authority), z konkretną osobą bądź urządzeniem. Dzięki temu jesteśmy w stanie, do pewnego stopnia, ufać, iż posiadacze takich certyfikatów są osobami, za które się podają. Jest to możliwe dzięki wykorzystaniu podpisów cyfrowych (ang. digital signatures). Każdy certyfikat powinien być podpisany cyfrowo przez organ wydający dany certyfikat (CA).

Jak dobrze pamiętamy, podpis cyfrowy to nic innego jak hash (skrót) wyliczony na podstawie treści wiadomości i zaszyfrowany dzięki klucza prywatnego osoby podpisującej się. Autentyczność podpisu jest natomiast weryfikowana z użyciem klucza publicznego tej osoby, czyli najpierw odszyfrowujemy hash dołączony do komunikatu, a następnie sprawdzamy, czy uzyskamy identyczny skrót z otrzymanej wiadomości (jeśli będzie inny, to znaczy, iż ktoś majstrował przy treści).

Zaufanie do autentyczności certyfikatów cyfrowych jest podstawą PKI, dlatego tak istotna jest rola zaufanych podmiotów certyfikacyjnych CA, potwierdzających tożsamość właścicieli, którym te certyfikaty wydano. Krótko mówiąc: gdy odwiedzamy stronę z certyfikatem, przeglądarka weryfikuje dołączony podpis cyfrowy zaufanego CA, żeby potwierdzić, iż tożsamość właściciela tego certyfikatu została odpowiednio zweryfikowana.

Public key

Wyjaśniliśmy już sobie, iż klucze kryptograficzne to określone wartości, wykorzystywane przez odpowiednie algorytmy do szyfrowania i odszyfrowania danych. W szyfrowaniu asymetrycznym używamy dwóch różnych kluczy – jeden służy do szyfrowania (klucz publiczny), a drugi do odszyfrowania (klucz prywatny) wiadomości.

Jest to możliwe dzięki matematycznej relacji między dwoma kluczami, które są generowane w ramach tego samego procesu, w skład którego wchodzą m.in. losowość i operacje na dużych liczbach pierwszych. Warto również dodać, iż pomimo istnienia matematycznej relacji pomiędzy kluczami, nie da się uzyskać klucza prywatnego na podstawie klucza publicznego.

Uproszczony proces komunikacji z użyciem szyfrowania asymetrycznego:

  1. Generujemy parę kluczy (publiczny i prywatny). Prywatny zachowujemy dla siebie, a publicznym dzielimy się ze znajomymi.
  2. Znajomy, który chce wysłać nam wiadomość, używa naszego klucza publicznego do jej zaszyfrowania. Warto przy okazji zaznaczyć, iż jeżeli informacja zostanie zaszyfrowana kluczem publicznym odbiorcy, to bez jego klucza prywatnego odszyfrowanie tej informacji będzie niemożliwe i choćby nadawca nie będzie w stanie tego zrobić.
  3. Otrzymujemy zaszyfrowaną wiadomość (ciphertext).
  4. Używamy naszego klucza prywatnego, który jest powiązany z kluczem publicznym, celem odszyfrowania wiadomości i odczytania oryginalnego komunikatu.
  5. Jeśli chcemy odpowiedzieć znajomemu również w poufny sposób, będziemy oczywiście potrzebować należącego do niego klucza publicznego.

Systemy kryptograficzne oparte na szyfrowaniu asymetrycznym, czyli parze kluczy, skalują się dużo lepiej niż systemy symetryczne. Przyjmijmy, iż mamy n użytkowników systemu, którzy chcą się ze sobą komunikować w sposób poufny. W przypadku szyfrowania symetrycznego, każda para użytkowników powinna posiadać osobny klucz współdzielony do nawiązania poufnej komunikacji (chyba iż wszyscy używają tego samego klucza, ale wtedy komunikacja wewnątrz systemu przestaje być tajna), co powoduje, iż liczbę potrzebnych kluczy można opisać wzorem: n(n-1)/2. Przy większej liczbie użytkowników te wartości gwałtownie rosną (np. przy 100 użytkownikach potrzebujemy 4950 kluczy). Natomiast w szyfrowaniu asymetrycznym wystarczy, iż każdy z użytkowników posiada jedną parę kluczy (prywatny i publiczny), wtedy całkowita liczba wymaganych kluczy to 2n.

Oprócz szyfrowania wiadomości, klucze asymetryczne umożliwiają stosowanie podpisów cyfrowych, co zostało dokładniej opisane w opracowaniu CompTIA Security+ SY0-701: Digital signatures (PL).

Private key

Klucz prywatny (ang. private key), jak sama nazwa wskazuje, jest kluczem poufnym, który powinien być znany tylko jego właścicielowi. Termin klucz prywatny może mieć dwojakie znaczenie: w przypadku kryptografii symetrycznej oznacza klucz współdzielony (ang. shared), wykorzystywany zarówno do zaszyfrowania, jak i odszyfrowania wiadomości, a w przypadku kryptografii asymetrycznej wskazuje na tajny klucz będący w parze z kluczem publicznym.

Ochrona kluczy prywatnych jest sprawą najwyższej wagi w bezpiecznej komunikacji, ponieważ jeżeli trafią one w niepowołane ręce, choćby najbardziej wyrafinowany algorytm na nic się nie zda. O tym, jak istotna jest ochrona kluczy prywatnych, może zaświadczyć fakt, iż wiele osób zajmujących się kryptografią trzyma się zasady Kerckhoffsa, która mówi, iż algorytm kryptograficzny powinien być niemożliwy do złamania lub obejścia bez znajomości klucza, choćby jeżeli zasada jego działania jest powszechnie znana.

Trochę innym podejściem jest tzw. bezpieczeństwo poprzez niejawność (ang. security through obscurity), które głosi, iż dobrym zabezpieczeniem jest utajenie zasad działania samego algorytmu. To stanowisko jest jednak dziś szeroko krytykowane ze względu na duże ryzyko przeoczenia pomyłki projektowej lub błędu wynikającego z implementacji. Powszechnie znane algorytmy są poddawane nieustannej kryptoanalizie, zarówno przez badaczy, jak i przez cyberprzestępców – wiele par oczu przekłada się na mniej przeoczonych błędów.

Ponieważ klucze są podstawą bezpieczeństwa systemów szyfrujących, należy poświęcić odpowiednią dozę uwagi na zarządzanie nimi. Kryptografia symetryczna stawia trochę inne wyzwania niż kryptografia asymetryczna, jeżeli chodzi o klucze prywatne. Przyjrzyjmy się więc głównym aspektom zarządzania tajnymi kluczami:

  • Bezpieczne przechowywanie – wymaganie w tej materii jest stosunkowo jasne: klucz prywatny jest zawsze poufny i nie może wpaść w niepowołane ręce. Aby zwiększyć poziom bezpieczeństwa, można zastosować się do następujących zasad:
    • W przypadku kryptografii asymetrycznej, podczas generowania pary kluczy, można dodatkowo zabezpieczyć dostęp do klucza prywatnego hasłem. Dzięki temu klucz nie będzie mógł zostać użyty do odszyfrowania danych bez znajomości hasła.
    • Dobrym pomysłem jest przechowywanie klucza prywatnego poza systemem, w którym znajdują się zaszyfrowane dane. W razie udanego ataku na system i uzyskania nieupoważnionego dostępu do danych, atakujący nie będzie miał łatwego dostępu do klucza, a zaszyfrowane dane pozostaną bezużyteczne.
    • W szczególnych sytuacjach można rozważyć podzielenie klucza na dwie części i przekazanie ich dwóm osobom z organizacji (każda z nich zna tylko swoją część), które muszą później współpracować, aby odtworzyć pełny klucz.
    • Może się również zdarzyć, iż klucz prywatny po prostu zaginie i dostęp do zaszyfrowanych danych zostanie utracony. Aby zapobiec takim sytuacjom, można przechowywać kopię klucza prywatnego w bezpiecznym miejscu (więcej informacji w sekcji key escrow poniżej).
  • Wymiana klucza (ang. key exchange) – ten problem dotyczy przede wszystkim kryptografii symetrycznej i staje się jeszcze bardziej uciążliwy, kiedy rośnie liczba użytkowników lub urządzeń, którym należy taki klucz wydać. Często stosowanym podejściem jest, wspomniane już wcześniej, nawiązanie bezpiecznego kanału komunikacji z użyciem kryptografii asymetrycznej w celu przekazania tajnego klucza współdzielonego.
  • Unieważnienie klucza – kiedy klucz prywatny zostanie ujawniony (przypadkowo bądź wskutek ataku), nie może być dalej używany. W przypadku szyfrowania symetrycznego, gdzie klucz jest współdzielony, problematyczne staje się choćby zwykłe odejście pracownika z organizacji. Zgodnie z zasadami bezpieczeństwa należy wygenerować nowy klucz i wszystkie dane zaszyfrować ponownie z jego użyciem. Przy stosowaniu szyfrowania asymetrycznego wystarczy wycofać z użycia klucz publiczny osoby, która odeszła z firmy (lub jej klucz prywatny wyciekł).

Key escrow

Silna kryptografia uniemożliwia odczytanie zaszyfrowanych informacji osobom nieupoważnionym, ale pamiętajmy, iż my również ich nie odzyskamy, jeżeli zgubimy klucz prywatny. Podobnie kłopotliwą sytuacją jest nagłe zniknięcie z organizacji osoby posiadającej jedyny tajny klucz niezbędny do odszyfrowania określonych danych.

Aby zapobiegać skutkom takich zdarzeń, stosuje się zewnętrzne (oferowane przez firmy trzecie) lub wewnętrzne systemy przechowywania kopii tajnych kluczy, które można odzyskać wyłącznie w sytuacjach alarmowych. Takie systemy noszą nazwę key escrow (angielskie słowo escrow w dosłownym tłumaczeniu oznacza depozyt, przechowanie lub powiernictwo).

Dostęp do kopii zapasowych kluczy powinien być ściśle chroniony. Dlatego firmy korzystające z takich rozwiązań powinny mieć jasno zdefiniowaną politykę odzyskiwania kluczy (ang. key recovery), która dokładnie opisuje, w jakich konkretnych sytuacjach klucz może zostać odzyskany z depozytu i przez kogo.

Podsumowując: key escrow to system przechowywania i odzyskiwania kluczy prywatnych, do których dostęp – w razie potrzeby – posiadają wyłącznie uprawnione osoby.

Materiały źródłowe

Idź do oryginalnego materiału