TLS-versioner, cipher suites og perfect forward secrecy
Konfigurér TLS 1.2/1.3, vælg stærke cipher suites, og aktivér perfect forward secrecy, så opsnappet trafik ikke kan dekrypteres efterfølgende.
TLS-versioner, cipher suites og perfect forward secrecy er en gratis Security+ Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Security+ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Security+ Academy-kurset indeholder 4 lektioner i alt.
Oversigt over TLS-protokollen
TLS (Transport Layer Security) er den kryptografiske protokol, der sikrer størstedelen af internetkommunikationen — HTTPS, SMTPS, IMAPS, LDAPS og VPN'er er alle afhængige af TLS. TLS leverer tre sikkerhedsegenskaber: fortrolighed (kryptering forhindrer aflytning), integritet (MAC forhindrer manipulation) og godkendelse (certifikater bekræfter serverens identitet). TLS udviklede sig fra SSL (Secure Sockets Layer), som nu er forældet. De aktuelle versioner er TLS 1.2 (udbredt) og TLS 1.3 (hurtigere og mere sikker, anbefales til alle nye implementeringer).
Historik over TLS-versioner og udfasninger
TLS har gennemgået flere versioner, hvor de ældre indeholdt kritiske sårbarheder. SSL 2.0/3.0: udfaset og sårbar over for angrebene POODLE og DROWN. TLS 1.0: udfaset af NIST og PCI-DSS i 2020 (sårbar over for BEAST og POODLE på blokchifre). TLS 1.1: udfaset sammen med TLS 1.0. TLS 1.2: den aktuelle minimumsstandard; sikker, når den er konfigureret korrekt med stærke chiffreringspakker. TLS 1.3: udgivet i 2018; fjerner alle svage algoritmer, kræver fremadrettet hemmeligholdelse, har et betydeligt hurtigere håndtryk (1-RTT i stedet for 2-RTT) og forhindrer nedgraderingsangreb. PCI-DSS 4.0 kræver mindst TLS 1.2 og anbefaler TLS 1.3.
# TLS version timeline
SSL 2.0 1995 DEPRECATED (DROWN)
SSL 3.0 1996 DEPRECATED (POODLE)
TLS 1.0 1999 DEPRECATED 2020 (BEAST, POODLE)
TLS 1.1 2006 DEPRECATED 2020 (no improvements over 1.0)
TLS 1.2 2008 MINIMUM STANDARD (strong ciphers required)
TLS 1.3 2018 RECOMMENDED (mandatory PFS, faster, secure)
# Check which TLS versions a server supports
nmap --script ssl-enum-ciphers -p 443 example.com
# Or:
openssl s_client -connect example.com:443 -tls1_2
openssl s_client -connect example.com:443 -tls1_3Chiffreringspakker
En chiffreringspakke er et sæt kryptografiske algoritmer, der bruges sammen i en TLS-session. Hver chiffreringspakke angiver: en nøgleudvekslingsalgoritme (hvordan sessionsnøgler etableres), en godkendelsesalgoritme (hvordan serveren verificeres), en bulk-krypteringsalgoritme (hvad der krypterer dataene) og en algoritme til meddelelsesgodkendelseskode (MAC) (hvordan integriteten verificeres). Klienten og serveren forhandler om, hvilken chiffreringspakke der skal bruges, under TLS-håndtrykket — serveren vælger den stærkeste pakke, som begge parter understøtter.
# TLS cipher suite naming format (TLS 1.2)
# TLS_[KeyExchange]_WITH_[Cipher]_[MAC]
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
ECDHE = Elliptic Curve Diffie-Hellman Ephemeral
RSA = Server certificate authentication
AES_256_GCM = 256-bit AES in Galois/Counter Mode
SHA384 = HMAC with SHA-384 for integrity
# TLS 1.3 simplified format (fewer components)
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256Nøgleudvekslingsalgoritmer
Nøgleudvekslingsfasen etablerer sessionsnøglen uden at overføre den. RSA-nøgleudveksling (TLS 1.2): Klienten krypterer en premaster-hemmelighed med serverens offentlige nøgle — hvis den private nøgle senere kompromitteres, kan alle tidligere sessioner dekrypteres. DHE (Diffie-Hellman Ephemeral): genererer et nyt nøglepar for hver session; giver fremadrettet hemmeligholdelse, men er langsom. ECDHE (Elliptic Curve DHE): opnår samme fremadrettede hemmeligholdelse som DHE, men med mindre nøglestørrelser og bedre ydeevne — dette er den foretrukne nøgleudveksling i både TLS 1.2 og TLS 1.3. TLS 1.3 kræver ECDHE eller DHE og fjerner RSA-nøgleudveksling helt.
Perfekt fremadrettet hemmeligholdelse (PFS)
Perfekt fremadrettet hemmeligholdelse (PFS) sikrer, at tidligere optagede sessioner ikke kan dekrypteres, selv hvis serverens langsigtede private nøgle senere kompromitteres. PFS opnås ved at bruge efemær nøgleudveksling (ECDHE eller DHE), hvor et nyt midlertidigt nøglepar genereres for hver session og kasseres efter brug. Uden PFS (RSA-nøgleudveksling) kan en angriber optage alle krypterede TLS-sessioner i dag og derefter dekryptere dem bagudrettet, når angriberen på et tidspunkt får fat i den private nøgle. NSA's overvågningsstrategi med »indsaml nu, dekryptér senere« forudsætter, at mål på et tidspunkt opgraderer til stærkere nøgler, eller at kvantecomputere vil bryde de nuværende.
# Cipher suites WITH perfect forward secrecy
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 # Good
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 # Good
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 # OK (slower)
# Cipher suites WITHOUT perfect forward secrecy
TLS_RSA_WITH_AES_256_CBC_SHA256 # NO PFS - avoid
TLS_RSA_WITH_3DES_EDE_CBC_SHA # NO PFS + weak
# Key: look for ECDHE or DHE prefix
# RSA alone as key exchange = no forward secrecySvage chiffreringsalgoritmer, der skal undgås
Flere ældre chifferkomponenter er kryptografisk brudte og skal deaktiveres. NULL-chifre: ingen kryptering overhovedet. Chifre i eksportklassen (FREAK-angrebet): med vilje svækket for at overholde amerikanske eksportregler fra 1990'erne. RC4: strømchiffer med statistiske skævheder, der udnyttes i angreb. DES og 3DES: blokchifre med for små blokstørrelser (SWEET32-angrebet) eller utilstrækkelige nøglelængder. MD5 og SHA-1 til MAC'er: kollisionssårbarheder. Anonyme chifre (aNULL): ingen servergodkendelse. Moderne TLS-konfigurationer bør kun tillade AES-GCM, ChaCha20-Poly1305, AES-CCM som bulk-chifre.
# nginx: disable weak ciphers, enforce strong only
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:
ECDHE-RSA-CHACHA20-POLY1305:
ECDHE-ECDSA-AES128-GCM-SHA256:
ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
# Explicitly disable weak ciphers in Apache
SSLCipherSuite 'HIGH:!aNULL:!MD5:!3DES:!RC4:!EXPORT'Forbedringer i TLS 1.3
TLS 1.3 indeholder flere betydelige sikkerhedsforbedringer sammenlignet med 1.2. Obligatorisk PFS: RSA-nøgleudveksling er fjernet — alle sessioner bruger ECDHE eller DHE. Færre chiffreringspakker: kun 5 AEAD-chiffreringspakker er tilladt; det er ikke muligt at forhandle svag kryptering. Hurtigere håndtryk: 1 rundrejse (1-RTT) mod 2-RTT i TLS 1.2 og 0-RTT ved genoptagelse af sessioner (selvom 0-RTT indebærer overvejelser om gentagelsesangreb). Krypteret håndtryk: servercertifikatet er krypteret i håndtrykket, så passive observatører ikke kan identificere, hvilket certifikat (og dermed hvilket websted) klienten opretter forbindelse til.
# TLS 1.3 handshake (simplified)
Client -> Server: ClientHello (supported ciphers, key shares)
Server -> Client: ServerHello (chosen cipher, key share)
{EncryptedExtensions}
{Certificate}
{CertificateVerify}
{Finished}
Client -> Server: {Finished}
# Both sides now have session keys
# Total: 1 round-trip before application data
# (TLS 1.2 required 2 round trips)
# Note: {} = encrypted (cert is hidden from observers)Nedgraderingsangreb og POODLE
Nedgraderingsangreb narrer en TLS-server og -klient til at bruge en ældre, svagere TLS-version eller chiffreringspakke end den, de begge understøtter. POODLE (Padding Oracle On Downgraded Legacy Encryption) udnyttede, at TLS-implementeringer faldt tilbage til SSL 3.0 ved forbindelsesfejl. Modforanstaltningen var at deaktivere SSL 3.0. FREAK og Logjam udnyttede chifre i eksportklassen. TLS_FALLBACK_SCSV er en pseudochiffreringspakke, som klienter inkluderer for at signalere »dette er ikke min foretrukne version« — hvis en server ser den og understøtter en højere version, afbryder den nedgraderingsforsøget.
Certifikatverifikation og -fastlåsning
TLS-servergodkendelse er baseret på, at klienten verificerer serverens certifikatkæde tilbage til en betroet rod-CA. Kritiske kontroller: udløb (certifikatet skal være inden for gyldighedsperioden), tilbagekaldelse (CRL- eller OCSP-kontrol bekræfter, at certifikatet ikke er tilbagekaldt), værtsnavn (SAN eller CN skal matche det domæne, der oprettes forbindelse til) og signaturkæde (signaturerne fra den mellemliggende CA og rod-CA'en er gyldige). Certificate Transparency (CT) kræver, at alle offentligt betroede certifikater logges i CT-logge, hvor der kun kan tilføjes poster. Det gør det muligt at opdage forkert udstedte certifikater inden for få minutter efter udstedelsen.
# Check TLS certificate details
openssl s_client -connect example.com:443 \
-showcerts 2>/dev/null | openssl x509 -noout \
-text | grep -E 'Subject:|Issuer:|Not After:|SAN'
# Verify certificate chain
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt \
server.crt
# Check OCSP status
openssl ocsp -issuer intermediate.crt \
-cert server.crt \
-url http://ocsp.ca.example.com \
-text -noverifySSL Labs og konfigurationstest
Qualys SSL Labs (ssllabs.com/ssltest) er det førende værktøj til evaluering af en webservers TLS-konfiguration. Det bedømmer servere fra A+ (fremragende) til F (kritiske problemer) baseret på: understøttede TLS-versioner, chiffreringspakkernes styrke, certifikatets gyldighed, HSTS-konfiguration, understøttelse af fremadrettet hemmeligholdelse og modstandsdygtighed over for kendte angreb. En A+-bedømmelse kræver: kun TLS 1.2+, alle ECDHE-chifre, et gyldigt certifikat og HSTS med preload. Organisationer bør køre SSL Labs-test efter den indledende konfiguration og igen efter alle ændringer i TLS-stakken. Mange compliance-rammer (PCI-DSS) kræver regelmæssige vurderinger af TLS-konfigurationen.
Bedste praksis for håndtering af TLS-certifikater
Udløbne TLS-certifikater medfører driftsafbrydelser og advarsler, der svækker brugernes tillid, og som angribere kan udnytte. Håndtering af certifikatets livscyklus omfatter: registrering af alle certifikater i et certifikatlager, konfiguration af udløbsadvarsler mindst 30 dage før udløb, automatisering af fornyelse med ACME-protokollen (Let's Encrypt, Certbot), brug af korte certifikatlevetider (90 dage for offentlige certifikater) for at reducere risikovinduet ved kompromittering og forsigtig brug af wildcard-certifikater (*.example.com), eftersom et kompromitteret wildcard-certifikat påvirker alle underdomæner. Platforme til certifikathåndtering (Venafi, DigiCert CertCentral) automatiserer opdagelse og livscyklus på tværs af store certifikatlager.
# Auto-renew Let's Encrypt cert with Certbot
# Install Certbot
apt install certbot python3-certbot-nginx
# Issue certificate
certbot --nginx -d example.com -d www.example.com
# Certbot auto-renewal (runs twice daily via systemd timer)
systemctl status certbot.timer
# Test renewal without actually renewing
certbot renew --dry-run
# Verify cert expiry date
openssl x509 -enddate -noout -in /etc/ssl/certs/example.crt
# Output: notAfter=Feb 20 12:00:00 2025 GMTHurtigt tjek
Test din forståelse af CompTIA Security+ (SY0-701)-begreberne fra denne lektion.
Opsummering af lektionen
I denne lektion lærte du: TLS 1.0/1.1 er udfaset, og TLS 1.2 er minimumsstandarden, mens TLS 1.3 foretrækkes med obligatorisk PFS og krypterede håndtryk, chiffreringspakker angiver nøgleudveksling (ECDHE foretrækkes), bulk-kryptering (AES-GCM, ChaCha20) og MAC-algoritmer, og perfekt fremadrettet hemmeligholdelse kræver efemær nøgleudveksling (DHE/ECDHE), så tidligere sessioner ikke kan dekrypteres, selv efter kompromittering af nøglen. Dernæst undersøger vi sikker DNS: DNSSEC og DNS over HTTPS.
Lær Security+ Academy med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “TLS-versioner, cipher suites og perfect forward secrecy” gratis?
Ja — alle 3 lektioner i læringssporet Security+ Academy, inklusive “TLS-versioner, cipher suites og perfect forward secrecy”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Security+ Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “TLS-versioner, cipher suites og perfect forward secrecy”?
Konfigurér TLS 1.2/1.3, vælg stærke cipher suites, og aktivér perfect forward secrecy, så opsnappet trafik ikke kan dekrypteres efterfølgende. Du øver dig i Security+ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Security+ Academy?
Der kræves ingen tidligere erfaring. Security+ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “TLS-versioner, cipher suites og perfect forward secrecy”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Security+ Academy-lektion?
Ja. Alle Security+ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Udskiftning af usikre protokoller: Telnet vs. SSH, FTP vs. SFTP
- TLS-versioner, cipher suites og perfect forward secrecy
- Sikker DNS: DNSSEC og DNS over HTTPS (DoH)
- IPsec, VPN-protokoller og sikker fjernadgang