Co do zasady infrastruktura klucza publicznego (Public Key Infrastructure, w skrócie PKI) stanowi zbiór osób, polityk, procedur i systemów komputerowych niezbędnych do świadczenia usług uwierzytelniania, szyfrowania, integralności i niezaprzeczalności za pośrednictwem kryptografii klucza publicznego, prywatnego i certyfikatów elektronicznych.

Termin ten (PKI) opisuje systemy i komponenty wykorzystywane do zabezpieczenia komunikacji i transakcji internetowych, a także uwidacznia podział różnych komponentów infrastruktury klucza publicznego i ich wpływu na cały ekosystem związany z przedmiotową infrastrukturą.

Chris 論 – Praca własna przy użyciu [1] and OpenCliparts.org

Początki i rozwój PKI

Konieczność znalezienia nowych bezpiecznych sposobów komunikacji wyniknęła z szybkiego rozwoju komunikacji elektronicznej. Stąd już w 1976 roku Bailey Whitfield „Whit” Diffie, Martin Hellman, Ronald Linn Rivest, Adi Szamir oraz Leonard Adleman opublikowali algorytmy bezpiecznej wymiany kluczy oraz algorytm asymetryczny, co całkowicie odmieniło sposoby bezpiecznej komunikacji. Natomiast dalszy rozwój Internetu, w tym usług takich jak e-handel, sieciowy i internetowy dostęp do prywatnych baz danych (np. banków) spowodował konieczność opracowania nowych metod bezpieczeństwa i uwierzytelniania uczestników komunikacji elektronicznej. Rozwiązaniem tego problemu okazało się zaprezentowanie przez Tahera Elgamala z Netscape protokołu SSL, który zawierał m.in. uwierzytelnianie serwera.

Dalszy rozwój komunikacji spowodował oparcie się PKI właśnie na protokole SSL (Secure Sokcets Layer) i jego następcy, czyli protokole TLS (Transport Layer Secure).

Co to jest SSL?

SSL i jego następca TLS, to protokoły służące do ustanawiania uwierzytelnionych i zaszyfrowanych połączeń pomiędzy hostami w sieci.

Jako ciekawostkę warto wskazać, że choć protokół SSL został wycofany wraz z wydaniem TLS 1.0 w 1999 r., to nadal określa się tą technologię jako „SSL” lub „SSL/TLS”. Najbardziej aktualna wersja tego protokołu, to TLS 1.3, które zostało zdefiniowane w RFC 8446.

Certyfikacja SSL oraz zainicjowanie szyfrowanej komunikacji

Certyfikat SSL (zwany również certyfikatem TLS lub certyfikatem SSL/TLS), to cyfrowy dokument, który wiąże tożsamość witryny internetowej z parą kluczy kryptograficznych, składającą się z klucza publicznego i prywatnego. Zawiera on także informacje identyfikujące daną witrynę internetową, w tym nazwę domeny oraz opcjonalnie informacje identyfikujące właściciela tej witryny.

Poprawna komunikacja pomiędzy przeglądarką a serwerem przechowującym witrynę z certyfikatem SSL może zachodzić jedynie, gdy taki certyfikat jest podpisany przez właściwy (publicznie zaufany) urząd certyfikacji (CA). Dzięki temu oprogramowanie klienckie, np. przeglądarki i systemy operacyjne użytkowników końcowych będą traktowały jako autentyczne podpisane cyfrowo treści pochodzące z tego serwera (witryny internetowej).

Urząd certyfikacji dołącza do certyfikatu klucz publiczny, który później można rozpowszechniać i stosować do nawiązania bezpiecznego połączenia. Klucz ten przekazywany jest każdej przeglądarce po dokonaniu przez strony uzgodnienia SSL (tzw. uścisku dłoni SSL, czyli SSL handshake), co umożliwia przeglądarce internetowej zainicjowanie szyfrowanej sesji komunikacyjnej z serwerem WWW za pośrednictwem protokołów TLS i HTTPS.

Przy dzisiejszej mocy obliczeniowej urządzeń, co do zasady, klucze publiczne mają rozmiar co najmniej 2048 bitów – takie klucze są najpopularniejsze.

Natomiast klucz prywatny jest przechowywany na serwerze WWW i służy do cyfrowego podpisywania stron internetowych i innych dokumentów, np. obrazów czy plików JavaScript. Warto zaznaczyć, że dostęp do klucza prywatnego mają jedynie wyznaczeni administratorzy zarządzający daną witryną internetową.

Warto dodać, że certyfikat SSL jest typem certyfikatu X.509, o którym jest mowa poniżej.

Na czym polega uzgadnianie SSL?

Uzgadnianie SSL jest ściśle związane z SSL/TLS handshake, które polega na negocjowaniu zaszyfrowanej i uwierzytelnionej sesji komunikacyjnej pomiędzy dwiema stronami w sieci, np. przeglądarką i serwerem WWW, w celu ustalenia szczegółów połączenia. Podczas przedmiotowego uzgadniania określa się:

– która wersja protokołu SSL/TLS będzie używana w sesji,

– jaki zestaw szyfrów zaszyfruje komunikację,

– weryfikację serwera, a czasem także klienta,

– ustanowienie bezpiecznego połączenia przed przesłaniem danych.

Co najważniejsze uzgadnianie SSL odbywa się w tle i ma na celu zabezpieczenie przesyłanych danych.

Warto zaznaczyć, że SSL/TLS handshake jest tylko preludium do ustanowienia właściwej, zabezpieczonej sesji, jednakże jest ono niezbędne do nawiązania bezpiecznego połączenia.

Szyfrowanie asymetryczne i symetryczne

SSL/TLS handshake używa szyfrowania asymetrycznego tylko podczas uzgadniania. W tym przypadku klucz publiczny służy do szyfrowania, a klucz prywatny służy do deszyfrowania, co pozwala obu stronom, np. przeglądarce i serwerowi WWW, na poufne skonfigurowanie i wymianę nowo utworzonego „klucza wspólnego”. Następnie sesja sama wykorzystuje ten „klucz wspólny” do wykonania szyfrowania symetrycznego podczas dalszej komunikacji, którego koszty są znacznie niższe w porównaniu do szyfrowania asymetrycznego.

Szyfrowanie wiadomości e-mail

Także za pomocą PKI można szyfrować wiadomości email. Odpowiadają za to certyfikaty S/MIME, które opierają się na opisanych powyżej zasadach. Dzięki istnieniu niniejszych certyfikatów możliwe jest wysyłanie zaszyfrowanych wiadomości e-mail do danej grupy, o ile członkowie tej grupy także mają stosowne certyfikaty S/MIME.

Warto zaznaczyć, że w ramach certyfikatów S/MIME rozróżniane jest szyfrowanie i uwierzytelnianie. Wiadomość zaszyfrowaną może odczytać odbiorca, który także posiada certyfikat S/MIME. W przypadku braku takiego certyfikatu odbiorca będzie widział, że wiadomość została zaszyfrowana za pomocą certyfikatu S/MIME, który powinien zawierać nazwę urzędu certyfikującego, nazwę nadawcy oraz zweryfikowane informacje. Natomiast certyfikat nie będzie zawierał informacji, których nie można zweryfikować.

Co to jest certyfikat X.509?

X.509 jest standardowym i podstawowym formatem dla certyfikatu SSL zawierającego klucz publiczny, ale także dla dokumentów cyfrowych kojarzących pary kluczy kryptograficznych z tożsamościami, takimi jak strony internetowe, osoby lub organizacje.

Typowe zastosowania certyfikatów X.509 obejmują:

– protokoły SSL/TLS oraz HTTPS do uwierzytelnionego i szyfrowanego przeglądania stron internetowych,

– podpisaną i zaszyfrowaną wiadomość e-mail za pośrednictwem certyfikatu S/MIME

– podpisywanie kodu,

– podpisywanie dokumentów,

– uwierzytelnianie klienta,

– uwierzytelnianie wydanego przez rząd elektronicznego identyfikatora.

Należy dodać, że certyfikat X.509 zawiera:

– nazwę zwyczajową (CN), która w przypadku certyfikatu SSL odnosi się do nazwy domeny. Nazwa ta musi zawierać obsługiwane globalnie rozszerzenia domen najwyższego poziomu, np.: .com, .net, .org, .pl, .eu, itp.

– organizację (O), czyli właściciela firmy lub strony internetowej,

– miejscowość (L), co do zasady nazwę miasta,

– stan (ST), czyli lokalizację regionalną,

– kraj (C), czyli kod danego kraju,

– alternatywną nazwę podmiotu (SAN), które jest rozszerzeniem dla formatu X.509 służącym do identyfikacji tych nazw hostów, które zostały zabezpieczone jednym certyfikatem SSL.

Co istotne, na podstawie głosowania SC47V2, od 01.09.2022 r. z formatu X.509 zostało wycofane pole jednostki organizacyjnej (OU).

Ekosystem PKI

Ekosystem PKI obejmuje wszystkie strony zaangażowane w wydanie oraz używanie danego certyfikatu. Dzięki właściwemu przypisaniu funkcji każdej ze stron sam mechanizm wydawania certyfikatu, jak później bezpieczna szyfrowana komunikacja mogą odbywać się sprawnie i szybko.

Składnikami ekosystemu PKI są:

– urząd certyfikacji (CA), czyli firma, która wydaje zaufane certyfikaty zatwierdzone na różnych platformach, najczęściej przeglądarkach, np. Google Chrome, Safari, Firefox, Opera, 360,

– urząd rejestracji (RA) – firma, aplikacja lub komponent odpowiedzialny za przeprowadzenie walidacji, w ramach której wykonuje prace przygotowawcze, a po ich zakończeniu wysyła prośbę do urzędu certyfikacji o wydanie certyfikatu,

– dostawca, czyli przeglądarka,

– subskrybent, czyli właściciel serwisu, który kupuje certyfikat, np. firma, która kupuje certyfikat dla swoich pracowników,

– strona ufająca – końcowy użytkownik korzystający z certyfikatu.

Taka struktura ekosystemu PKI umożliwia realizację podstawowych funkcji, do których mona zaliczyć:

– weryfikację tożsamości subskrybentów,

– wymianę kluczy kryptograficznych,

– wystawianie certyfikatów,

– podpisywanie przekazu (danych),

– szyfrowanie przekazu,

– potwierdzenie tożsamości,

– znakowanie czasem.

Dodatkowo, w zależności od konfiguracji PKI, możliwe jest odzyskiwanie kluczy prywatnych.

Prywatny PKI – czy jest to możliwe?

Tak, można ustanowić prywatną szyfrowaną komunikację PKI pomiędzy hostami w ramach wewnętrznej sieci. Jako przykład mogą posłużyć urządzenia IoT (Internetu rzeczy) pracujące w zamkniętym środowisku, np. komunikujące się ze sobą w ramach domowej sieci sprzęty takie jak, telefony, telewizory i wieże stereo. W takim przypadku PKI może zabronić tym urządzeniom komunikacji z innymi urządzeniami niepochodzącymi z sieci lokalnej. W środowiskach korporacyjnych można spotkać prywatne sieci, opierające szyfrowaną komunikację na PKI, składające się od dziesiątek do milionów urządzeń.

Bezpieczne przeglądanie stron internetowych

Wracając jeszcze do protokołów SSL/TLS, to najszersze zastosowanie znajdują one podczas bezpiecznego przeglądania stron internetowych za pośrednictwem protokołu HTTPS, działającego na porcie 443.

Prawidłowo skonfigurowana publiczna witryna internetowa, działająca za pośrednictwem protokołu HTTPS posiada certyfikat SSL podpisany przez publicznie zaufany urząd certyfikacji, wobec czego użytkownicy odwiedzający taką stronę mogą być pewni jej:

– autentyczności, gdyż serwer prezentujący certyfikat jest w posiadaniu klucza prywatnego, który pasuje do klucza publicznego zamieszczonego w certyfikacie,

– integralności – poprzez zapewnienie, że dokumenty podpisane certyfikatem (np. strona internetowa) nie zostały zamienione w tranzycie poprzez atak typu Man in the middle (człowiek po środku),

– szyfrowania, ponieważ komunikacja pomiędzy klientem i serwerem jest zaszyfrowana.

Wobec powyższego, certyfikacja oraz użycie szyfrowanej komunikacji pozwalają użytkownikom na bezpieczne przesyłanie poufnych informacji, takich jak numery kart kredytowych, numery ubezpieczenia nażycie, czy danych do logowania.

Gdyby nie istniały przedmiotowe mechanizmy, komunikacja musiałaby odbywać się za pośrednictwem protokołu HTTP, który przesyła dane jawnym tekstem, a użytkownicy nie mieliby żadnej pewności, że odwiedzana witryna jest tą, za którą się podaje.

PKI, SSL, TLS a problemy z bezpieczeństwem

Niestety cały proces certyfikacji i szyfrowania nie daje gwarancji pełnego bezpieczeństwa. Składa się na to kilka istotnych czynników.

Po pierwsze już w 2008 roku grupie naukowców udało się przeprowadzić udany atak na centrum (urząd) certyfikacji (CA), używające w podpisie certyfikatu skrótu kryptograficznego MD5. Efektem tego ataku było otrzymanie certyfikatu CA z poprawnym podpisem, pomimo złożenia wniosku o certyfikat kliencki. Otrzymany certyfikat umożliwiał podpisywanie certyfikatów klienckich, którym ufa większość popularnych przeglądarek internetowych, co umożliwiło efektywne podszycie się pod dowolną stronę internetową używającą certyfikatów.

Po drugie TLS w wersji 1.0 i 1.1 jest obarczony dużą liczbą luk w zabezpieczeniach protokołów i implementacji, które zostały opublikowane przez badaczy bezpieczeństwa w ciągu ostatniego dwudziestolecia. Ataki takie jak ROBOT wpłynęły na algorytm wymiany klucza RSA, natomiast ataki LogJam i WeakDH pokazały, że można oszukać serwery TLS poprzez użycie niewłaściwych parametrów dla innych metod wymiany kluczy. Gwoli wyjaśnienia, naruszenie wymiany kluczy pozwala atakującym skompromitować sieć i odszyfrować komunikację.

Natomiast ataki na szyfry symetryczne, takie jak BEAST czy Lucky13, wykazały, że różne szyfry obsługiwane przez TLS w wersji 1.2 i wcześniejszych, np. szyfry RC4 lub CBC, nie są bezpieczne.

Warto dodać, że w ramach przeprowadzonych ataków na algorytm RSA dokonano nawet naruszenia sygnatur poprzez ich sfałszowanie.

Należy jednak podkreślić, że w TLS w wersji 1.2 jest w znacznej mierze odporny na opisane powyżej ataki, pod warunkiem, że jest prawidłowo skonfigurowany. Jednakże dokonane zmiany nie uodporniły protokołu TLS w tej wersji na dalsze podatności i ataki, takie jak POODLE, FREAK, czy CurveSwap. Wynika to z faktu, że protokół TLS w wersjach wcześniejszych niż 1.3 nie chroni negocjacji uzgadniania (SSL/TLS handshake), podczas której strony uzgadniają jaka wersja protokołu będzie używana podczas komunikacji.

Podsumowanie

Należy zaznaczyć, że współczesny rozwój Internetu, a w szczególności komunikacji elektronicznej i usług internetowych z e-handlem na czele, byłby niemożliwy bez znaczącego rozwoju kryptografii oraz szyfrowania komunikacji.

Stare protokoły, takie jak HTTP czy TELNET przesyłają dane jawnym tekstem, co niezwykle ogranicza możliwość ich zastosowania w coraz bardziej cyfrowym i przechodzącym do Internetu współczesnym świecie.

Konieczność rozwoju kryptografii cyfrowej została dostrzeżona już w latach ’70 ubiegłego wieku i od tamtego czasu poczyniła znaczące postępy. Przykładem tego może być omawiane PKI, które korzystając z algorytmów symetrycznych i asymetrycznych, oparło się na certyfikacji, umożliwiając współcześnie bezpieczną komunikację sieciową pomiędzy różnymi hostami. To właśnie dzięki PKI możemy na co dzień bezpiecznie korzystać z bankowości elektronicznej, dokonywać zakupów przez Internet, czy załatwiać sprawy w e-urzędach. Także PKI odpowiada za bezpieczne przeglądanie stron internetowych, gdzie dzięki zastosowaniu odpowiednich certyfikatów jesteśmy pewni ich autentyczności.

Autor: Michał Mamica

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

ZOBACZ RÓWNIEŻ

CO TO JEST „CVE” I Z CZYM JEST ZWIĄZANE?

Co do zasady CVE wiąże się z podatnościami