TLS håndtryk
Hver HTTPS-forbindelse starter med et håndtryk: en kort udveksling af meddelelser, hvor klienten og serveren er enige om kryptografiske algoritmer, verificerer identiteter og udleder delte krypteringsnøgler. Det hele tager én rundtur i TLS 1.3 og er grundlaget for stort set al krypteret kommunikation på nettet.
Hele artiklens krop findes på engelsk nedenfor.
TLS-håndtryk er protokoludvekslingen, der etablerer en krypteret, autentificeret forbindelse mellem to endepunkter. Den kører i starten af hver HTTPS-anmodning, hver sikker SMTP-session, hvert moderne IMAP-login, hver HTTP/2- og HTTP/3-forbindelse. Den nuværende version, TLS 1.3 (RFC 8446, 2018), er dramatisk enklere og hurtigere end TLS 1.2.
Hvad håndtrykket opnår
Ved slutningen af håndtrykket har begge sider:
- verificeret via serverens certifikat
- Aftalt en TLS-version og chifferpakke
- Afledte delte symmetriske nøgler til sessionen
- Valgfrit udvekslet godkendelse for klienten (mTLS)
- Valgfrit signaleret applikations-, HTTPPN-lagdetaljer osv.)
Alle efterfølgende data bruger de symmetriske nøgler (typisk AES-GCM eller ChaCha20-Poly1305) til hurtig bulkkryptering.
TLS 1.3 håndtryk, trin for trin
er Minimum 1 håndtryk i TLC23XXPLZ24. tur-retur:
- ClientHello. Klient sender:
- Understøttede TLS-versioner
- Cipher-pakker den kan tale
- Understøttede nøgler,6-c51, 6-c51 osv.)
- Nøgleandel — dens flygtige offentlige nøgle til nøgleudvekslingen. Dette er TLS 1.3 speedup: i TLS 1.2 ventede nøgleudvekslingen på serverens parametre; TLS 1.3 tager et gæt og sender den offentlige nøgle med det samme.
- SNI (Server Name Indication) — hvilket værtsnavn klienten ønsker at tale med. Klartekst historisk; Encrypted Client Hello (ECH) ruller ud for at skjule det.
- ServerHello. Server sender:
- Selected TLS version and cipher suite XPLZ
- Its alting beskeden på PLZFZ51XIts nøgle server, der sender, er krypteret
- Dens certifikatkæde (krypteret under håndtryksnøglerne)
- A signatur, der beviser, at den har den private nøgle, der matcher certifikatet
- Finished-meddelelse, der bekræfter, at begge sider har samme håndtryk-transcript XXPL4ClXXZPL6cient sender Finished. Anerkender serverens meddelelser og skifter til at bruge de afledte applikationsnøgler.
- Application data. Den første HTTP-anmodning flyder.
Nettopris: 1 applikation tur/retur før første gang. Med 0-RTT (en TLS 1.3-funktion, der bruger cachelagrede sessionsnøgler fra en tidligere forbindelse), kan den første anmodning køre i selve ClientHello - nul rundrejser for genoptaget sessioner.
TLS 1.2 var langsommere
TLS 1.2's håndtryk tog 2 rundrejser:
- ClientHello (ingen nøgledeling endnu)
- ServerHello + Certificate + ServerKeyExchange + ServerHelloDone
- ClientKeyExchange + ChangeCipherSpec+ChangeCipherSpec8X4SpechangeCPLZCZ5X4SpechangeCPLZCZ5X4SpechangeCPLZCZ5 Færdig
- Applikationsdata
2-tur-tur-omkostningerne betød mest på netværk med høj latenstid. TLS 1.3's 1-RTT (eller 0-RTT) håndtryk har været en af de større brugeropfattelige forbedringer af webydeevnen i det sidste årti.
Hvad bliver forhandlet
De vigtigste felter:
- XXLS version. 1.3 i praksis. SSL 3.0, TLS 1.0, 1.1 er forældet.
- Cipher suite. Specificerer den symmetriske chiffer (AES-128-GCM, AES-256-GCM, ChaCha20-Poly136,S), the-HA250-funktionen (S) SHA-384), og (i TLS 1.2) nøgleudvekslingsmekanismen. TLS 1.3 adskiller disse.
- Nøgleudvekslingsgruppe. X25519, secp256r1, secp384r1 osv. ECC er standard; RSA-nøgleudveksling er fjernet i 1.3.
- Signaturalgorithm. RSA-PSS, ECDSA, Ed25519. Serverens certifikatsignatur bruger en af disse.
- Extensions. SNI, ALPN, Early Data, supported_versions, key_share, padding, og mange flere.
Forward secrecyXPLZ10 mandates111XXLSPLZ10 kortvarig nøgleudveksling — hver session udleder nøgler fra friske flygtige nøgler, der kasseres umiddelbart efter. Hvis serverens langsigtede private nøgle lækker i morgen, er trafik, der fanges i dag, stadig beskyttet (forudsat at lækagen ikke inkluderer de flygtige nøgler, som typisk aldrig vedvarer).
TLS 1.2 gjorde dette valgfrit via DHE/ECDHE-cifre; mange servere aktiverede det, men nogle gjorde det ikke. TLS 1.3 gør det ikke-omsætteligt.
Certifikatvalidering
Serveren beviser sin identitet ved at sende en certifikatkæde. Klienten kontrollerer:
- Bladcertifikatets navn svarer til den vært, der er forbundet til
- Certifikatet er i dato
- Hvert certifikat i kæden er underskrevet af den næste
- Roden er i den lokale tillidsbutik
- Certifikat Gennemsigtighedslogfiler inkluderer certifikatet (moderne browsercertifikat)ZPLZ0XXn tilbagekaldt (CRL, OCSP eller moderne ækvivalenter som CRLite)
Hvis en kontrol mislykkes, viser browseren en advarsel. Se vores CA-artikel for det bredere billede.
0-RTT og genafspil risk
TLS 1.3's 0-RTT-tilstand lader en tilbagevendende klient sende applikationsdata i sin første pakke ved hjælp af nøgler, der stammer fra en tidligere session. Afvejningen: en angriber, der fanger 0-RTT-dataene, kan afspille dem igen senere. For idempotente operationer (GET-anmodninger om cachebart indhold) er dette fint. For ikke-idempotente operationer (tilstandsændrende POST'er) er 0-RTT usikker. De fleste browsere og CDN'er håndterer dette med omhu; servere kan afvise 0-RTT for specifikke operationer.
Ofte stillede spørgsmål
- Hvor lang tid tager et TLS-håndtryk egentlig?
- På en typisk forbindelse: TLS 1.3 tilføjer ca. 100 ms (én rundtur) oven på TCP-håndtrykket. TLS 1.2 tilføjer omkring 200 ms (to rundrejser). 0-RTT tilføjer 0 ms, når det er relevant. Efterfølgende anmodninger på den samme forbindelse gentager ikke håndtrykket.
- Hvorfor bruger TLS nogle gange ChaCha20 i stedet for AES?
- ChaCha20-Poly1305 er hurtigere end AES på hardware uden AES-NI-acceleration (ældre mobile CPU'er, simple ARM-kerner, IoT-enheder). Når klienten signalerer, at den ikke understøtter AES-acceleration effektivt, foretrækker serveren ChaCha20. På moderne x86 og ARM med AES-NI er AES normalt lidt hurtigere.
- Hvad er gensidig TLS (mTLS)?
- Standard TLS-håndtryk godkender kun serveren. I mTLS præsenterer klienten også et certifikat, og serveren verificerer det. Bruges til API-sikkerhed, service-to-service-godkendelse, Zero Trust-arkitekturer. Tilføjer operationel kompleksitet, men giver kryptografisk klientidentitet.
- Krypterer TLS destinationsværtsnavnet?
- Indtil for nylig, nej - SNI-feltet var klartekst, synligt for enhver observatør på vej. Encrypted Client Hello (ECH) skjuler SNI ved at kryptere ClientHello til en nøgle offentliggjort i DNS. ECH understøttes af Chrome, Firefox og Cloudflare; bredere adoption ruller ud gennem 2025-2026.
- Hvad sker der, hvis en server ikke understøtter TLS 1.3?
- Håndtrykket falder tilbage til TLS 1.2. Moderne browsere nægter TLS 1.0 og 1.1 helt fra 2020-2021. TLS 1.2 er acceptabel, men langsommere; 1.3 foretrækkes og nu er størstedelen af nye håndtryk.