Główna zawartość
Bezpieczeństwo w internecie
Kurs: Bezpieczeństwo w internecie > Rozdział 1
Lekcja 11: Bezpieczne protokoły internetoweCyfrowe certyfikaty
Protokół TLS (ang. Transport Layer Security) opiera się na [kryptografii klucza publicznengo](/a/public key-encryption). W celu zaszyfrowania danych, nadawca używa klucza publicznego udostępnionego przez odbiorcę. Zanim to nastąpi jednakże, TLS wymaga wykonania dodatkowej akcji, która jest istotna dla jego bezpieczeństwa: nadawca musi zweryfikować tożsamość posiadacza klucza publicznego.
Certyfikat cyfrowy, znany również jako certyfikat klucza publicznego, stanowi dowód posiadania klucza.
Niezbędność certyfikatów
Co by się stało, gdyby protokół TLS nie zawierał etapu weryfikacji certyfikatu?
Atakujący opracowali metody przechwytywania wiadomości przesyłanych pomiędzy komputerami w sieci internetowej, np. za pomocą fałszywych punktów dostępu (ang. rogue access points).
Gdy użytkownik łączy się do takiego punktu dostępu, może stać się on ofiarą ataku zwanego man-in-the-middle (MITM). Mimo, że nazwa zawiera słowo "man" (ang. mężczyzna), atakujący mogą być dowolnej płci i wieku.
W pierwszym kroku, podczas procesu bezpiecznego łączenia z użyciem protokołu TLS, atakujący wysyła swój klucz publiczny zamiast klucza publicznego serwera.
Następnie, klient szyfruje dane, jednakże zamiast klucza publicznego serwera używa otrzymanego klucza publicznego atakującego. Atakujący może więc odszyfrować wiadomość, zmodyfikować ją jakkolwiek chce i ponownie zaszyfrować ją kluczem publicznym serwera przed jej wysłaniem.
Aby zapobiec atakom MiTM, klient musi sprawdzić tożsamość klucza publicznego. Certyfikat cyfrowy stanowi dowód tożsamości klucza publicznego. Jeżeli jednak ktokolwiek może stworzyć taki certyfikat, dlaczego klient miałby mu zaufać? W TLS, klienci mogą zaufać certyfikatowi cyfrowemu jedynie w przypadku, gdy został on utworzony przez specialne instytucje: urzędy certyfikacji (ang. certificate authority).
Urzędy certifikacji
Serwer, który chce bezpiecznie komunikować się przy użyciu TLS, rejestruje się w urzędzie certyfikacji. Urząd ten weryfikuje własność danej domeny, podpisuje certyfikat używając jej nazwy i klucza publicznego i przekazuje podpisany certyfikat z powrotem do serwera.
Kiedy klient sprawdza certyfikat, widzi, że urząd ds. certyfikacji poświadcza autentyczność klucza publicznego. Ale nadal musi podjąć decyzję: czy ufam temu organowi certyfikacyjnemu?
Systemy zazwyczaj posiadają listę zaufanych certyfikatów. Na przykład iPhone z iOS 10 ufa tej liście urzędów certyfikacji.
Użytkownicy Apple muszą następnie zaufać Appleowi, aby stale monitorował tę listę, aby upewnić się, że każdy urząd certyfikacji prawidłowo weryfikuje domeny.
Możesz sobie wyobrazić łańcuch zaufania od użytkownika do serwera:
W każdym z tych punktów zaufanie może zostać naruszone. Jeśli użytkownik nie ufa klientowi, może nadpisać domyślną listę zaufanych urzędów certyfikacji klienta. Jeśli klient nie ufa już urzędowi certyfikacji, usunie go z listy. Jeśli urząd certyfikacji dostrzeże podejrzane zachowanie z serwera, może unieważnić swój certyfikat.
Pośrednie urzędy certyfikacji
W rzeczywistości istnieje wiele poziomów urzędów certyfikacji: główny (ang. root) urząd certyfikacji i pośrednie (ang. intermediate) urzędy certyfikacji.
Główny urząd certyfikacji (UC) nie przyznaje serwerom żadnych certyfikatów cyfrowych bezpośrednio. Przyznaje certyfikaty jedynie pośrednim UC, które działają w jego imieniu. Pośrednie UC mogą z kolei przyznawać certyfikaty cyfrowe innym pośrednim UC lub bezpośrednio serwerom.
Istnieje zatem dodatkowy łańcuch zaufania, zaczynający się od głównego UC a kończący na serwerze:
Wielowarstwowy system urzędów certyfikujących zwiększa bezpieczeństwo systemu. Jeśli główny UC wykryje, że pośredni UC został zaatakowany, może unieważnić jego certyfikaty ale jednocześnie nadal ufać certyfikatom pochodzącym od innych pośrednich UC.
🔍 Możesz samodzielnie zaobserwować łańcuch zaufania, sprawdzając certyfikat bezpiecznej strony internetowej w przeglądarce. Jeśli klikniesz ikonkę kłódki obok adresu URL, przeglądarka powinna zaoferować sposób na sprawdzenie certyfikatów.
🙋🏽🙋🏻♀️🙋🏿♂️Czy masz jakieś pytania na ten temat? Chętnie na nie odpowiemy — wystarczy, że zadasz pytanie w poniższym obszarze pytań!
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji