Ta strona używa plików Cookie. Korzystając z tej strony zgadzasz się na umieszczenie tych plików na twoim urządzeniu

Jak działa SSL na stronie i sklepie WWW?

15.04.2021 | Blog | Autor: Konrad Ogar

Zanim powiem Ci co myślę na temat burzy wokół protokołu SSL, która ma miejsce w Internecie już od jakiegoś czasu, pozwól, że zacznę od teorii i wiedzy czym są certyfikaty SSL i jak działa szyfrowanie SSL. Ta wiedza jest dla Ciebie niezwykle ważna do zrozumienia o jakim bezpieczeństwie mówimy.

Co to jest TLS/SSL?

TLS (Transport Layer Security):  przyjęte jako standard w Internecie, które jest nowszym i bezpieczniejszym rozwinięciem protokołu SSL (ang. Secure Socket Layer), zaprojektowanego pierwotnie przez Netscape Communications. TLS zapewnia poufność i integralność transmisji danych, a także uwierzytelnienie serwera, a niekiedy również klienta. Opiera się na szyfrowaniu asymetrycznym oraz certyfikatach X.509.  TSL to tak naprawdę wyższa wersja protokołu SSL tylko zmieniła się jego nazwa (TLS 1.0 = SSL 3.1). Obecnie kupując i instalując certyfikaty SSL na stronach WWW mamy do czynienia w rzeczywistości z certyfikatami TSL ale nazwa "certyfikaty SSL" pozostała w użyciu.

Zatem w tym artykule pisząc SSL będę miał na myśli najnowszą aktualną wersję protokołu TLS i mogę tych skrótów używać zamiennie.

Tak więc SSL jest to protokół, którego celem jest szyfrowanie danych przesyłanych w Internecie pomiędzy użytkownikiem a serwerem, na którym znajduje się na przykład strona lub sklep internetowy. Dzięki niemu mamy pewność, że przesyłane dane nie zostaną odczytane w Internecie przez nieupoważnione osoby.

SSL najczęściej kojarzymy z protokołem HTTPS, ale został on zaprojektowany w taki sposób, aby odpowiednio użyty mógł również szyfrować inne rodzaje połączń np: FTP, pocztę e-mail, VPN oraz wiele innych.

Każda witryna Internetowa wykorzystująca certyfikat SSL chroni wszystkie dane przesyłane pomiędzy dwoma urządzeniami. Za najbardziej wrażliwe dane wymagające szyfrowania uznaje się między innymi adresy dostaw i zamieszkania, loginy i hasła, wszelkie dane podawane w formularzach HTML lub nawet dane z kont bankowych w czasie ich transmisji przez Internet do użytkownika. Nie stosując protokołu na stronach internetowych narażamy się na ryzyko, że przesyłane od/do użytkowników dane przedostaną się w niepowołane ręce.

Jak rozpoznać, czy strona wykorzystuje szyfrowanie SSL?

Każda zabezpieczona strona Internetowa będzie posiadała protokół HTTPS (Hyper Text Transfer Protocol Secure), a nie HTTP (chodzi o tą końcówkę „s”, która oznacza secure czyli bezpieczny). Dzięki temu mamy pewność, że strona jest szyfrowana, a nasze dane wpisywane na stronie będą w sposób bezpieczny przesyłane z naszej przeglądarki do serwera oraz w drugą stronę. Jednocześnie z protokołem HTTPS tuż obok adresu URL powinna pokazać się zamknięta kłódka symbolizująca bezpieczne połączenie.

Jak rozpoznać czy strona WWW używa szyfrowania SSL

Ikonka kłódki (znajdującej się na początku adresu URL) zawiera informacje o bezpieczeństwie połączenia oraz ważności certyfikatu na stronie. Aby to sprawdzić, wystarczy najechać kursorem na kłódkę, a te informacje zostaną wyświetlone. Znajdują sie tam też dodatkowe informacje o tak zwanej weryfikacji (lub validacji) firmy, lecz o tym w dalszej części artykułu.

Ile kosztuje certyfikat?

W gruncie rzeczy za obsługę certyfikatów SSL odpowiedzialny jest darmowy ogólnoświatowy protokół SSL/TLS, który pozwala na całkowicie darmowe generowanie takich certyfikatów. Minusem darmowego rozwiązania jest przede wszystkim to, że albo trzeba sobie samodzielnie wygenerować certyfikat SSL, a do tego potrzebna jest już wiedza informatyczna, albo trzeba skorzystać z darmowych serwisów generujących certyfikat. Istnieje wiele serwisów internetowych, których oprogramowanie pozwala za darmo wygenerować w Internecie taki certyfikat SSL.

Zasadniczą wadą darmowego certyfikatu jest to, że instytucja, która go wystawia (za darmo) najczęściej nie jest zaufana. A dokładnie chodzi o to, aby taki samodzielnie lub darmowo wygenerowany certyfikat został podpisany cyfrowo przez tak zwaną jednostkę certyfikacji (CA). Sprytni wiedzą, że taką jednostkę CA można sobie samemu stworzyć, zainstalować i w niej podpisywać swoje własne certyfikaty i tak też robią darmowe serwisy SSL. Problem jednak jest taki, że takie samozwańcze jednostki certyfikacji nie są podpięte pod nadrzędne (root certificate), tak zwane zaufane centra certyfikacji, które są dostępne we wszystkich przeglądarkach. Stąd też skoro przeglądarka nie może zweryfikować wiarygodności certyfikatu, to będzie zgłaszać użytkownikowi błąd, że takie połączenie NIE jest bezpieczne, gdyż certyfikat nie został wystawiony przez "zaufane" centrum certyfikacji.

Kolejnym minusem certyfikatów jest jego czas ważności, który zazwyczaj jest krótki i trwa np. 3 miesiące. Związane jest to z tym, że twórcom tych serwerów zależy na powracających użytkownikach, którym wyświetlać się będą reklamy, na których taki serwer zarabia.

Darmowe certyfikaty też nie dają możliwości weryfikacji firmy (OV), dla której wystawiany jest certyfikat. Nie możemy więc być do końca pewni czy witryna WWW z darmowym certyfikatem SSL jest  bezpieczna na tyle, abyśmy mogli  na niej bez strachu podawać swoje dane.

Certyfikat z „validacją”.

Jak wcześniej wspomniałem certyfikaty powinny być wystawione przez zaufane centra certyfikacji (na przykład CERTUM ZETO) i takie certyfikaty dają możliwość wybrania jednego z trzech poziomów walidacji, rozumianej też jako weryfikacja podmiotu, dla którego wystawiany jest certyfikat. Oto trzy wspomniane rodzaje walidacji:

  • Domain Validaded (DV) – jest to podstawowy rodzaj certyfikatu SSL, którego można otrzymać już w kilkanaście minut. Warunkiem jest potwierdzenie prawa własności domeny, dla której ten certyfikat ma zostać wydany. Certyfikat DV jest akceptowany przez większość przeglądarek internetowych i gwarantuje pełne bezpieczeństwo, poufność oraz integralność przesyłu danych. Jest to szybka i najtańsza weryfikacja domeny na poziomie 100-200 zł rocznie – wystarczy do przeciętnego sklepu WWW.
    • Przeciętny koszt takiego certyfikatu to 100-200 zł rocznie – wystarczy do przeciętnego sklepu WWW.
    • Czas wystawienia to „moment” tzn. w kilkanaście minut od zakupu jesteśmy w stanie już wygenerować i pobrać certyfikat.
    • Ten rodzaj walidacji również dotyczy darmowych certyfikatów.

  • Organization Validation (OV) – w tym certyfikacie wyświetlane zostają informacje na temat nazwy domeny oraz organizacji. W porównaniu do poprzedniego rodzaju certyfikatu, tu weryfikowana jest również tożsamość oraz wiarygodność danej organizacji.
    • Tego typu weryfikacja firmy trwa dłużej i zwykle około 1 dnia.
    • Koszt certyfikatu z weryfikacją OV to średnio około 400-600 zł netto rocznie.

  • Extended Validation (EV) – jest to weryfikacja rozszerzona, która z reguły trwa około tygodnia, lecz daje najwyższy poziom zaufania i jest to jedyne słuszne rozwiązanie dla takich stron jak serwisy transakcyjne oraz bankowe. Każda firma chcąca uzyskać certyfikat SSL typu EV jest poddawana szczegółowej weryfikacji. Sprawdzana jest m.in., tożsamość osoby ubiegającej się o wydanie certyfikatu SSL, prawo własności domeny, dane rejestrowe firmy. Dzięki tym czynnościom nazwa firmy wyświetla się w przeglądarce internetowej, potwierdzając tym samym autentyczność strony.
    • Czas trwania takiej weryfikacji to około 1 tydzień.
    • Koszt takiego Certyfikatu to około 1300 zł netto rocznie.

Połączenie ze stroną WWW bez szyfrowania.

Czas przejść do bardziej dokładnych rozważań na temat SSL. W gruncie rzeczy szyfrowanie SSL zabezpiecza tylko transmisję w Internecie pomiędzy dwoma komputerami (komputerem a serwerem). Oczywiście za komputer uznajemy wszystkie urządzenia podłączone do Internetu, takie jak smartfon, router, kamera IP, smart tv i wszelkie inne serwery.

Aby poprawnie zrozumieć na czym polega transmisja z szyfrowaniem najpierw przeanalizujmy standardową transmisje Internetową bez użycia szyfrowania. Jako przykład, który ma pobudzić Twoją wyobraźnię, przeanalizujmy klasyczne uruchomienie strony internetowej w przeglądarce na Twoim komputerze.

Na poniższych schematach kolorem czerwonym podpisane są niezabezpieczone elementy całego systemu, w których przetwarzane sa Twoje dane w sposób niezaszyfrowany. Używając pojęcia „warstwa” mam na myśli pewien logiczny schemat podziału transmisji internetowej na warstwy zwany modelem ISO/ OSI.

Schemat nieszyfrowanego połączenia ze stroną www

Etap 1. Przedawanie danych przez Twój komputer

W naszym przykładzie cała transmisja rozpoczyna się od uruchomienia strony internetowej w przeglądarce. Wyświetlona strona została pobrana z serwera i przesłana do Ciebie w sposób niezaszyfrowany. Jeżeli będzie to sklep internetowy, w którym robisz zakupy i w formularzach podajesz swoje dane, na przykład adres dostawy, to gdy klikniesz wyślij, te dane w formie czystego teksu zostaną przekazywane z przeglądarki do Twojego urządzenia wysyłającego je w sieć. Oczywiście w sytuacji braku SSL te dane w formie czystego tekstu są przekazywane przez twoja kartę sieciową do routera, a router przekazuje je do kolejnego i kolejnego i tak przez cały Internet.

Ogólnie rzecz ujmując Twój komputer i wszelkie uruchomione na nim programy korzystające z Internetu przetwarzają dane w sposób niezaszyfrowany, jawny po to, aby można było je wyświetlić na ekranie bądź też je zapisać na dysku.  

Etap 2. Transmisja danych przez Internet

Bez certyfikatu SSL wszelkie dane przekazywane są w formie czystego tekstu do Twojej karty sieciowej. Karta sieciowa przekazuje je do routera, a router przekazuje je do kolejnego i kolejnego i tak przez cały Internet.

Twoje dane krążą po Internecie tak długo, aż trafią do serwer docelowego, z którego przeglądasz stronę lub sklep internetowy.

Etap 3. Przetwarzanie danych przez serwer

Serwer odbiera te niezaszyfrowane dane i przekazuj je do swojej aplikacji, którą uruchomiłeś. Jeżeli jest to strona Internetowa, przez którą wysłałeś zamówienie, to najczęściej aplikacja po stronie serwer zapisuje Twoje dane w swojej, również niezaszyfrowanej bazie danych. W gruncie rzeczy to serwer robi dokładnie to samo co Twój komputer, jeżeli Ty wysyłasz do niego dane to on je odbiera i przetwarza przez swój program, a jeżeli to serwer wysyła dane do Ciebie, to twój program czyli przeglądarka je odbiera.

Obszary niebezpieczne bez szyfrowania SSL

Ze sposobu działania połączeń internetowych wynika, że są trzy niebezpieczne obszary, w których przesyłane dane pomogą zostać wykradzione i odczytane przez nieuprawnione osoby:

  • pierwszym obszarem jest Twój komputer oraz programy na nim zawarte,
  • drugim obszarem jest Internet czyli różne routery i serwery znajdujące się w Internecie, przez które przechodzi Twój sygnał (paczka danych), a które mogą zostać zainfekowane wirusem lub w którym mogło dość do włamania.
  • trzeci obszar to sam serwer, na którym znajduje się aplikacja webowa taka jak trona, sklep lub inny portal WWW. Takie aplikacji posiadają również bazę danych, w której dane zapisywane są w formie niezaszyfrowanej.

Połączenie ze stroną WWW z szyfrowaniem SSL.

A teraz omówmy jak wygląda sytuacja opisana wyżej, lecz tym razem z uruchomionym szyfrowaniem SSL.

Na poniższym schemacie zwróć uwagę na kilka istotnych elementów. Kolorem czerwonym podpisane są te obszary, w których nadal nie ma szyfrowania, a kolorem zielonym i podpisane są te obszary, w których jest szyfrowanie. Kolor zielony i niebieski oznaczają obszar szyfrowany, a użyłem dwóch odrębnych kolorów bo zależało mi na wyróżnieniu kierunku transmisji.

schemat-polaczenia-ze-strona-www-z-szyfrowaniem-ssl.jpg

Etap 1. Przetwarzanie danych przez Twój komputer

W przypadku transmisji z szyfrowaniem początek całej ścieżki Twoich danych jest podobny jak w przypadku przepływu danych bez szyfrowania. Otóż Twoja cały czas nie zabezpieczona aplikacja np. przeglądarka Internetowa przetwarza Twoje dane w sposób jawny i niezaszyfrowany. Jeżeli składasz w przeglądarce zamówienie i podajesz swoje dane adresowe do wysyłki, to dopiero próba wysłania danych na serwer uruchamia proces szyfrowania danych.

Etap 2. Zaszyfrowanie danych i przesłanie ich przez Internet.

Dowolna aplikacja korzystająca z Internetu, a łącząca się z użyciem SSL przekazuje dane (dane tekstowe, zdjęcia, pliki) do warstwy SSL, która je szyfruje (kluczem publicznym) i przekazuje je do dalszej części systemu, aby wysłał je dalej w sieć Internet. Te dane są pakowane w standardowy protokół TCP/IP, jednak zawartość ramki jest zaszyfrowana i niezrozumiała dla potencjalnego hakera, bądź też osoby, która by chciała te dane po prostu odczytać. Zatem Twoje dane krążą zaszyfrowane po Internecie przez wiele routerów i serwerów, aż trafią do serwer na którym to dopiero zostaną odszyfrowane.

Transmisja dany w każdym kierunku szyfrowana jest innym zestawem kluczy szyfrujących. Dlatego na schemacie wyodrębniłem na zielono i niebiesko dwa kierunki transmisji, które de facto ja rozróżniam jako dwie niezależne z punktu widzenia szyfrowania. Oznacza to, że ewentualne złamanie i odszyfrowanie jednej transmisji w jednym kierunku nie wpływa na bezpieczeństwo transmisji w drugim kierunku.

O szyfrowaniu i wymianie kluczy szyfrujących napisałem więcej poniżej w podpunkcie „wymiana kluczy szyfrujących”.

Etap 3. Przetwarzanie danych przez serwer

Serwer, który odbiera dane też nie potrafi (podobnie jak potencjalny haker) ich odczytać w taki sposób w jaki zostały dostarczone, dopóki ich nie odszyfruje. Zatem dane Twoje zostają odszyfrowane na serwerze (kluczem prywatnym), a następnie w sposób już jawny i niezaszyfrowany zostają przekazane do aplikacji (np. system CMS, Sklep e-commerce, system CRM, aplikacja bankowa).

Pamiętaj, że aplikacje na serwerach takie jak sklep internetowy zapisują te dane w swojej bazie w formie niezaszyfrowane po to, aby móc je wyświetlić i odczytać w przyszłości.

Obszary niebezpieczne pomimo szyfrowania SSL

W transmisji, gdzie połączenie ze stroną Internetową jest szyfrowane przez SSL, nadal występują obszary niebezpieczne narażone na przechwycenie danych (podpisane kolorem czerwonym):

  • Twój komputer i aplikacje na nim uruchomione odczytują transmitowane dane w taki sposób, jakby nigdy nie były zaszyfrowane. Po prostu szyfrowanie i odszyfrowywanie wykonywane jest automatycznie poza samą aplikacją i tylko wtedy, gdy dane mają zostać przekazane przez Internet. Sama aplikacja odczytuje i przetwarza dane w ogóle nie zaszyfrowane.
  • Aplikacja po stronie serwera, tak jak wcześniej wspomniałem, działa tak samo jak aplikacje ma zwykłym komputerze (w końcu serwer to komputer). Aplikacja serwerowa również otrzymuje i przetwarza dane niezaszyfrowane bo sam proces szyfrowania jest dla niej jakby „transparentny” to znaczy automatyczny i niezauważalny.

Wniosek z powyższych schematów transmisji danych jest taki, że z trzech niebezpiecznych obszarów (komputer, Internet, serwer) protokół SSL zabezpiecza nam tylko jeden obszar i jest nim transmisja przez Internet. Dlatego mimo korzystania z szyfrowanego połączenia z certyfikatem SSL nie należy zaniedbywać innych zabezpieczeń.

Wymiana kluczy publicznych – czyli inicjalizacja szyfrowania SSL

Na sam koniec chciałbym wspomnieć jeszcze o samym procesie wymiany kluczy szyfrujących pomiędzy dwoma urządzeniami w sieci  (np.: pomiędzy Twoim komputerem a serwerem). Jest to genialne rozwiązanie, które zachwyca mnie do dzisiaj swoja prostotą, a jednocześnie skutecznością w szyfrowaniu danych.

Definicja Klucza

„Klucz” – to tak naprawdę długi ciąg znaków, coś na kształt hasła, które służy algorytmom szyfrującym i deszyfrującym do konfiguracji swoich parametrów. Klucze te są wymieniane dyskretnie i automatycznie pomiędzy komputerami i użytkownik komputera nie bierze w tym udziału. Klucze powodują, że mimo znajomości algorytmu szyfrowania i deszyfrowania bez znajomości samych kluczy odszyfrowanie danych jest nie możliwe (ponoć zajęło by to kilkanaście lat najlepszym komputerom).

Asymetryczny algorytm

Cały algorytm szyfrowania SSL jest algorytmem asymetrycznym – i w tym tkwi jego moc. Oznacza to, że za pomocą algorytmu, który wcześniej zaszyfrował dane, nie da się ich odszyfrować, bo służy do tego inny algorytm dedykowany tylko do ich deszyfrowania. Para komplementarnych kluczy.

Mało tego, klucze mają pewną niesamowitą właściwość, otóż do szyfrowania danych służy zupełnie inny klucz niż ten do ich odszyfrowania. Ponadto oba klucze ze sobą połączone w specyficzny sposób tworząc parę komplementarnych kluczy. Jest to tak sprytnie skonstruowany algorytm generujący parę kluczy, że jednemu kluczowi szyfrującemu dane odpowiada tylko jeden klucz, który potrafi je odkodować (deszyfrować).

  1. Klucz szyfrujący dane nazywany jest kluczemPUBLICZNYM dlatego, że każdy w Internecie może taki klucz poznać i nie jest on poufny. Serwer lub komputer, który wymaga szyfrowania SSL chętnie ten klucz przesyła do każdego innego urządzenia, które o to poprosi, po to, aby to urządzenie umiało prawidłowo zaszyfrować swoje dane, które chce wysłać. Tak jak wspomniałem za pomocą klucza PUBLICZNEGO da się tylko i wyłącznie zaszyfrować dane, ale już odszyfrować nie. Wniosek jest taki, że gdy potencjalny haker pozna klucz szyfrujący to jedynie co będzie mógł zrobić to zaszyfrować swoje własne dane.
  2. Klucz do odszyfrowywania danych nazywany jest kluczem PRYWATNYM ponieważ zna go tylko jeden komputer na całym świecie – jest to ten komputer, który wygenerował sobie tą parę kluczy. Jest to klucz poufny i nie jest on ujawniany, komputer odbierający dane zapisuje go u siebie w bezpiecznym miejscu. Ten Klucz służy tylko i wyłącznie do odszyfrowywania tych danych, które wcześniej zostały zaszyfrowane kluczem publicznym.

Z powyższej specyfiki wynika, że kluczem publicznym może szyfrować każdy, dowolny komputer (lub urządzenie) w Internecie bo jest ten klucz znany i swobodnie przesyłany w Internecie do każdego kto spróbuje się połączyć. Jednak odszyfrować te dane będzie umiał już tylko jeden komputer na całym świecie – właściciel klucza prywatnego.

Schemat wymiany kluczy SSL przez Internet.

Oto schemat wymiany kluczy publicznych pomiędzy dwoma komputerami łączącymi się ze sobą z użyciem szyfrowania SSL. Jest to procedura inicjująca szyfrowanie i odbywa się za każdym razem, gdy po raz pierwszy łączysz się z witryną korzystającą z HTTPS.

schemat-wymiana-kluczy-ssl.jpg

  1. Zaraz po pierwszej próbie nawiązania połączenia (sama próba nie jest szyfrowana) serwer żąda użycia połączenia szyfrowanego
  2. Sam serwer generuje sobie parę kluczy PUBLICZNY i PRYWATNY przy czym prywatny zapisuje tylko u siebie jako poufny.
  3. Serwer natychmiast wysyła klucz PUBLICZNY jawnie bez szyfrowania do Twojego komputera.
  4. Komputer odbiera klucz PUBLICZNY, którym będzie szyfrował dane wysyłane do serwera.

Komentarz: teraz mamy załatwione szyfrowanie tylko w jednym kierunku od komputera (za pomocą klucza publicznego) do serwera. Ale sam serwer też przekazuje dane poufne na przykład historię Twojego konta, wiec szyfrowanie w drugą stronę również musi być szyfrowane jednak już za pomocą innej pary kluczy. To dale tego na schemacie oznaczyłem dwoma kolorami odrębne kierunki transmisji, bo są one szyfrowane innymi kluczami.   

  1. Twój komputer również generuje sobie parę kluczy PUBLICZNY i PRYWATNY
  2. Podobnie jak serwer, Twój komputer zapisuje klucz prywatny tylko u siebie jako poufny.
  3. Klucz publiczny jest wysyłany do serwera i w ten sposób serwer jest zmuszony do szyfrowania swoich danych tym kluczem, który dostał od komputera „klienckiego”.

Od teraz każde z urządzeń szyfruje dane z użyciem nie swojego a otrzymanego klucza publicznego.

Z powyższego schematu wynika na przykład, że serwer ma zapisanych u siebie tyle kluczy prywatnych ile komputerów próbowało się z nim połączyć. Jeżeli na sklep internetowy weszło tysiąc klientów, to serwer każdemu z nich szyfruje swoje dane jego własnym kluczem publicznym, który dostał od klienta. Zatem zaszyfrowane dane przez serwer umie zawsze odczytać tylko jeden komputer na świecie (komputer, który posiada komplementarny klucz prywatny). Użytkownicy tej samej witryny nie są w stanie podglądać swoich danych, ani transmisji nawzajem, ponieważ posiadają tylko swój własny klucz prywatny, a nie mają cudzych kluczy.

Zdjęcie Konrad
Autor Artykułu:
Konrad Ogar

CEO w WEBimpuls.pl od 2010 roku, specjalista ds. marketingu w sieci oraz aplikacji WEB. Wspiera firmy w rozwoju w internecie.

email: konrad.ogar@webimpuls.pltel: +48 693 535 818

Napisz do autora!