TLS 1.3 od środka – jak naprawdę działa nowoczesne szyfrowanie HTTPS
Algorytmy

TLS 1.3 od środka – jak naprawdę działa nowoczesne szyfrowanie HTTPS

TLS 1.3 od środka – jak naprawdę działa nowoczesne szyfrowanie HTTPS

TLS 1.3 (Transport Layer Security 1.3) to obecny standard zabezpieczania połączeń internetowych. Chroni komunikację HTTPS, API, usługi chmurowe, VPN oraz wiele innych protokołów.

Najważniejsze cele TLS 1.3:

  • poufność (Confidentiality),
  • integralność (Integrity),
  • uwierzytelnienie (Authentication),
  • Forward Secrecy,
  • szybszy handshake.

Gdzie spotykamy TLS 1.3?

Praktycznie wszędzie:

HTTPS
HTTP/3
API REST
gRPC
SMTP STARTTLS
IMAPS
POP3S
MQTT

Schemat:

Browser
    |
 TLS 1.3
    |
Web Server

Architektura TLS 1.3

Cały protokół można podzielić na kilka etapów:

ClientHello
      |
      v
ServerHello
      |
      v
Key Exchange (X25519)
      |
      v
HKDF
      |
      v
Handshake Encryption
      |
      v
Certificate Verification
      |
      v
Application Traffic Keys
      |
      v
Encrypted HTTPS

Jak wygląda cały handshake?

Client                               Server

ClientHello ---------------------------->

                     ServerHello
                  Certificate
             CertificateVerify
                    Finished <-----------

Finished ------------------------------->

=========== Encrypted Application Data ============

Po zakończeniu handshake cała dalsza komunikacja jest już szyfrowana.


Krok 1 – ClientHello

Przeglądarka rozpoczyna połączenie.

Przykładowe informacje wysyłane do serwera:

Supported TLS Version

Cipher Suites

Supported Groups

Signature Algorithms

Random

Key Share (X25519)

Schemat:

ClientHello

TLS 1.3

AES-GCM

ChaCha20-Poly1305

X25519 Public Key

Najważniejsza zmiana względem TLS 1.2:

Klient od razu wysyła swój publiczny klucz X25519.


Supported Cipher Suites

TLS 1.3 znacznie uprościł listę szyfrów.

Najczęściej spotykane:

TLS_AES_128_GCM_SHA256

TLS_AES_256_GCM_SHA384

TLS_CHACHA20_POLY1305_SHA256

Nie znajdziemy już:

RC4

3DES

CBC Mode

MD5

SHA-1

Zostały całkowicie usunięte z TLS 1.3.


Krok 2 – ServerHello

Serwer odpowiada:

TLS Version

Selected Cipher

Random

X25519 Public Key

Schemat:

Client                          Server

Public Key A  ------------->

                    Public Key B
               <-------------

Obie strony mają już wszystko, czego potrzebują do wyliczenia wspólnego sekretu.


X25519 – wymiana klucza

Klient oblicza:

Private_A

+

Public_B

↓

Shared Secret

Serwer:

Private_B

+

Public_A

↓

Shared Secret

Obie strony uzyskują identyczny sekret.

Schemat:

Client                    Server

Private A              Private B

Public A               Public B

      \                /

       \              /

        Shared Secret

To właśnie mechanizm ECDH oparty na X25519.


Forward Secrecy

Jedna z największych zalet TLS 1.3.

Każde połączenie używa nowych efemerycznych kluczy:

Session 1

Key A1

Session 2

Key A2

Session 3

Key A3

Jeżeli za kilka lat wycieknie certyfikat serwera:

Server Certificate

↓

Private Key Leak

wcześniejsze sesje nadal pozostaną bezpieczne, ponieważ korzystały z jednorazowych kluczy wymiany.


HKDF – tworzenie kluczy

Shared Secret nie służy bezpośrednio do szyfrowania.

Najpierw trafia do:

Shared Secret

↓

HKDF

↓

Traffic Secrets

Następnie powstają kolejne klucze.


Drzewo kluczy

TLS 1.3 tworzy wiele kluczy:

Shared Secret

      |

     HKDF

      |

+-----+------+--------+

|

Handshake Secret

|

Application Secret

|

Traffic Keys

Każdy z nich ma inne zastosowanie.


Handshake Encryption

To ogromna zmiana względem TLS 1.2.

Po wygenerowaniu pierwszych kluczy:

Handshake Keys

↓

Encrypt Handshake

Oznacza to, że dalsze elementy handshake są już chronione.


Certyfikat

Serwer przesyła certyfikat.

Server

|

Certificate

|

Public Key

Klient sprawdza:

  • podpis CA,
  • datę ważności,
  • nazwę domeny,
  • łańcuch certyfikatów.

CertificateVerify

Serwer musi udowodnić, że naprawdę posiada odpowiadający certyfikatowi klucz prywatny.

Schemat:

Handshake Hash

↓

Server Private Key

↓

Digital Signature

Klient:

Signature

+

Server Public Key

↓

VALID

Najczęściej wykorzystywane są podpisy:

RSA-PSS

ECDSA

Ed25519 (jeżeli obsługiwane)

Finished

To ostatni etap handshake.

Obie strony wysyłają wiadomość:

Finished

która potwierdza:

  • poprawność wymiany kluczy,
  • integralność handshake,
  • gotowość do szyfrowania danych aplikacyjnych.

Application Traffic Keys

Po zakończeniu handshake powstają właściwe klucze sesyjne.

Traffic Secret

↓

Application Keys

↓

HTTPS

Od tej chwili wszystkie dane są szyfrowane.

 

TLS 1.3 od środka – jak naprawdę działa nowoczesne szyfrowanie HTTPS
TLS 1.3 od środka – jak naprawdę działa nowoczesne szyfrowanie HTTPS

AES-GCM lub ChaCha20-Poly1305

TLS 1.3 używa wyłącznie nowoczesnych konstrukcji AEAD.

Najczęściej:

AES-128-GCM

AES-256-GCM

ChaCha20-Poly1305

Schemat:

Plaintext

↓

AEAD

↓

Ciphertext

+

Authentication Tag

Rekord TLS

Każda wiadomość wygląda uproszczono tak:

TLS Record

Header

Nonce

Ciphertext

Authentication Tag

Jeżeli tag jest błędny:

INVALID TAG

↓

Connection Error

Dane nie są odszyfrowywane.


Rekeying

Podczas długich połączeń TLS może odświeżać materiał kluczowy.

Traffic Secret 1

↓

Traffic Secret 2

↓

Traffic Secret 3

Zmniejsza to skutki ewentualnego wycieku pojedynczego klucza sesyjnego.


TLS 1.3 a HTTP/3

HTTP/3 wykorzystuje protokół QUIC, który ma TLS 1.3 wbudowany.

HTTP/3

↓

QUIC

↓

TLS 1.3

↓

UDP

Nie istnieje HTTP/3 bez TLS 1.3.


TLS 1.3 a PQC

Obecnie handshake wygląda zwykle tak:

X25519

↓

Shared Secret

↓

HKDF

↓

AES-GCM

W przyszłości może wyglądać następująco:

X25519

+

ML-KEM

↓

Hybrid Secret

↓

HKDF

↓

AES-256-GCM

Takie podejście pozwala zachować kompatybilność z obecnymi systemami, a jednocześnie przygotować się na zagrożenia związane z komputerami kwantowymi.


Pełny przepływ TLS 1.3

                 TLS 1.3

ClientHello
      |
      v
ServerHello
      |
      v
X25519 Key Exchange
      |
      v
Shared Secret
      |
      v
HKDF
      |
      v
Handshake Keys
      |
      v
Certificate
      |
      v
CertificateVerify
      |
      v
Finished
      |
      v
Application Traffic Keys
      |
      v
AES-GCM / ChaCha20-Poly1305
      |
      v
Encrypted HTTPS Traffic

Jak łączy się to z poprzednimi tematami?

                 MODERN CRYPTOGRAPHY

                     Identity
                         |
                     Ed25519 / ECDSA
                         |
                 Certificate Verify
                         |
                         v
                  TLS Handshake
                         |
                  X25519 (ECDH)
                         |
                   Shared Secret
                         |
                        HKDF
                         |
          +--------------+--------------+
          |                             |
     AES-GCM                 ChaCha20-Poly1305
          |                             |
          +--------------+--------------+
                         |
                  HTTPS / HTTP3 / APIs

Najważniejsze elementy TLS 1.3

X25519
→ uzgadnia wspólny sekret

HKDF
→ wyprowadza bezpieczne klucze sesyjne

AES-GCM / ChaCha20-Poly1305
→ szyfrują i uwierzytelniają dane

Certificate + CertificateVerify
→ potwierdzają tożsamość serwera

Finished
→ kończy handshake i potwierdza jego integralność

TLS 1.3 jest obecnie jednym z najlepiej zaprojektowanych protokołów bezpieczeństwa. Łączy nowoczesną wymianę kluczy (X25519), silne funkcje wyprowadzania kluczy (HKDF), wydajne szyfrowanie AEAD (AES-GCM lub ChaCha20-Poly1305) oraz uwierzytelnianie certyfikatami, zapewniając szybkie, bezpieczne i odporne na wiele klas ataków połączenia internetowe.

Polecane wpisy
Bezpieczna komunikacja w zespołach zdalnych: narzędzia i konfiguracje z silnym szyfrowaniem
Bezpieczna komunikacja w zespołach zdalnych: narzędzia i konfiguracje z silnym szyfrowaniem

🔐 Bezpieczna komunikacja w zespołach zdalnych: narzędzia i konfiguracje z silnym szyfrowaniem W erze pracy zdalnej, komunikacja w zespołach rozproszonych Czytaj dalej

Krzywe eliptyczne parowania (Pairing-Based Cryptography): zaawansowane zastosowania
Krzywe eliptyczne parowania (Pairing-Based Cryptography): zaawansowane zastosowania

🔐 Krzywe eliptyczne parowania (Pairing-Based Cryptography): Zaawansowane zastosowania Krzywe eliptyczne parowania (Pairing-Based Cryptography, PBC) to jedna z najbardziej innowacyjnych i Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.