If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Transport Layer Security (TLS)

Komputery przesyłają pakiety danych za pośrednictwem Internetu. Pakiety danych są jak listy w kopercie: obserwator może łatwo przeczytać ich treść. Jeśli pakiet zawiera informacje publiczne, na przykład wiadomości ze świata, nie stanowi to dużego zagrożenia. Jeśli jednak w pakiecie znajduje się hasło, numer karty kredytowej lub poufny adres e-mail, sytuacja staje się bardzo ryzykowna.
Protokół TLS (skrót on ang. Transport Layer Security) zabezpiecza protokoły transportowe TCP/IP. Używa szyfrowania symetrycznego, klucza publicznego i dodatkowych funkcji takich jak uwierzytelnianie czy detekcja manipulacji w celu bezpiecznego przesyłania prywatnych danych.
TLS dodaje więcej kroków do procesu wysyłania danych przy użyciu TCP/IP, co prowadzi do zwiększenia
opóźnienie
komunikacji internetowej, jednakże korzyści jakie przynosi dla bezpieczeństwa są tego warte.
(Warto wiedzieć, że TLS zastąpił starszy protokół o nazwie SSL. Z tego powodu nazwy TLS i SSL są często używane zamiennie.)

Od początku do końca

Przyjrzyjmy się procesowi bezpiecznego przesyłu danych z jednego komputera do drugiego przy użyciu protokołu TLS. Będziemy nazywać klientem komputer, który wysyła dane, a serwerem komputer, który otrzymuje dane.

TCP handshake

Ponieważ TLS jest zbudowany na podstawie TCP/IP, klient musi najpierw wykonać procedurę 3-way TCP handshake z serwerem.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi z laptopa do serwera, a nad nią znajduje się pole "ClientHello, ProtocolVersion": TLS 1.3, CipherSuites: TLS_RSA_WITH_RC4_128_SHA".
  • Strzałka przechodzi z laptopa na serwer z etykietą "SYN".
  • Strzałka przechodzi z serwera do laptopa z etykietą "ACK SYN".
  • Strzałka przechodzi z laptopa do serwera z etykietą "ACK".

Inicjacja protokołu TLS

Klient musi powiadomić serwer, że chce połączenia TLS zamiast standardowego niezabezpieczonego połączenia, więc wysyła wiadomość opisującą, którą wersję protokołu TLS i techniki szyfrowania chciałby użyć.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po lewej stronie to laptop pokazujący ekran logowania do khanacademy.org. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi od laptopa do serwera, a nad nią znajduje się pole "ClientHello, ProtocolVersion: TLS 1.3, CipherSuites: TLS_RSA_WITH_RC4_128_SHA".

Potwierdzenie protokołu przez serwer

Jeśli serwer nie obsługuje żądanych przez klienta technologii, przerwie połączenie. Może się tak zdarzyć, jeśli współczesny klient próbuje komunikować się ze starszym serwerem.
Dopóki serwer obsługuje wymaganą wersję protokołu TLS i inne opcje, odpowiada potwierdzeniem oraz certyfikatem cyfrowym zawierającym klucz publiczny.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po lewej stronie to laptop pokazujący ekran logowania do khanacademy.org. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi z serwera do laptopa z ramką powyżej, która mówi "ServerHello, ProtocolVersion": TLS 1.3, CipherSuite: TLS_RSA_WITH_RC4_128_SHA, certyfikat, ServerHelloDone".

Weryfikacja certyfikatu

Cyfrowy certyfikat serwera to sposób, w jaki serwer mówi: "Tak, naprawdę jestem tym, za kogo mnie uważasz". Jeśli klient nie wierzy, że certyfikat jest legalny, przerwie połączenie, ponieważ nie chce wysyłać prywatnych danych do oszusta.
W przeciwnym razie, jeśli klient jest w stanie zweryfikować certyfikat, przechodzi do następnego kroku.
Schemat weryfikacji klienta. Z laptopa wychodzi dymek z napisem "Certificate = khanacademy.org?".

Tworzenie klucza współdzielonego

Klient zna teraz klucz publiczny serwera, więc teoretycznie może użyć szyfrowania kluczem publicznym do zaszyfrowania danych, które serwer może następnie odszyfrować odpowiednim kluczem prywatnym.
Jednak szyfrowanie przy użyciu klucza publicznego zajmuje znacznie więcej czasu niż szyfrowanie symetryczne ze względu na trudniejsze operacje arytmetyczne. Gdy jest to możliwe, komputery wolą używać szyfrowania symetrycznego, aby zaoszczędzić czas.
Na szczęście mogą! Komputery mogą najpierw użyć szyfrowania kluczem publicznym do prywatnego wygenerowania klucza współdzielonego, a następnie mogą użyć szyfrowania symetrycznego z tym kluczem w kolejnych wiadomościach.
Klient rozpoczyna ten proces od wysłania wiadomości do serwera zawierającą klucz wstępny (ang. pre-master). Wiadomość ta zaszyfrowana jest kluczem publicznym serwera. Klient oblicza klucz współdzielony na podstawie klucza wstępnego (jest to bezpieczniejsze niż wysyłanie klucza współdzielonego bezpośrednio) i zapamiętuje klucz współdzielony lokalnie.
Klient wysyła również wiadomość "Gotowe", której zawartość jest szyfrowana kluczem współdzielonym.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po lewej stronie to laptop pokazujący ekran logowania do khanacademy.org. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi z laptopa do serwera z ramką powyżej, która mówi "ClientKeyExchange (PreMasterSecret: c3ac534fd919a0e92b966795e), ChangeCipherSpec, Finished (21c124d28a548559f0f8abd4b)".

Potwierdzenie klucza współdzielonego przez serwer

Serwer może teraz obliczyć klucz współdzielony na podstawie klucza wstępnego i spróbować odszyfrować komunikat "Gotowe" tym kluczem. Jeśli się nie powiedzie, przerywa połączenie.
Tak długo, jak serwer może skutecznie odszyfrować wiadomość klienta za pomocą klucza współdzielonego, wysyła potwierdzenie i własną wiadomość "Gotowe" z zaszyfrowaną zawartością.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po lewej stronie to laptop pokazujący ekran logowania do khanacademy.org. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi z serwera do laptopa z ramką powyżej, która mówi "ChangeCipherSpec, Finished (c49fe482d338760807c3c278f)".

Bezpieczny przesył danych

Wreszcie, klient bezpiecznie przesyła dane prywatne do serwera, używając symetrycznego szyfrowania i klucza współdzielonego.
Schemat dwóch komputerów ze strzałkami pomiędzy. Komputer po lewej stronie to laptop pokazujący ekran logowania do khanacademy.org. Komputer po prawej stronie jest serwerem oznaczonym adresem IP khanacademy.org. Pojedyncza strzałka przechodzi od laptopa do serwera z ramką powyżej, która ma ciąg zaszyfrowanych danych.
Często ten sam klient musi wysyłać dane do serwera wielokrotnie, tak jak w przypadku gdy użytkownik wypełnia formularze na wielu stronach witryny internetowej. W takim przypadku, komputery mogą użyć skróconego procesu w celu ustanowienia bezpiecznej sesji.
Sprawdź swoją wiedzę
Jak widziałeś, oba komputery muszą wykonać wiele kroków, aby nawiązać bezpieczną komunikację z TLS.
Wypełnij poniższą listę kroków:
  1. Klient i serwer wykonują TCP handshake.
  2. Klient wysyła dane zaszyfrowane kluczem współdzielonym.

Wszyechobecność TLS

TLS zabezpiecza wiele form komunikacji w Internecie, takich jak wymiana wiadomości e-mail i przesył plików. Najbardziej znany jest jednak z zastosowania do bezpiecznego przeglądania stron internetowych (HTTPS).
TLS dodaje warstwę bezpieczeństwa do protokołu TCP/IP, dzięki wykorzystaniu klucza publicznego i szyfrowania symetrycznego. TLS staje się coraz bardziej niezbędny dla zabezpieczenia prywatnych danych, przemierzających brawurowo w sieci internetowej.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!