Nyckelutbyte och hybridkryptering
Se hur Diffie-Hellman-nyckelutbyte och TLS kombinerar symmetriska och asymmetriska metoder för att uppnå både prestanda och säkerhet.
Nyckelutbyte och hybridkryptering är en gratis lektion i Security+ Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Security+ Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Security+ Academy innehåller totalt 4 lektioner.
Problemet med nyckelutbyte
Symmetrisk kryptering kräver att båda parter delar samma hemliga nyckel innan de kan kommunicera säkert. Men hur delar man nyckeln säkert när det inte redan finns en säker kanal? Detta problem med nyckeldistribution ansågs olösligt fram till 1976, då Whitfield Diffie och Martin Hellman publicerade en banbrytande artikel. Deras lösning – Diffie-Hellman-nyckelutbyte – gör det möjligt för två parter att upprätta en gemensam hemlig nyckel över en osäker kanal utan att själva nyckeln någonsin överförs så att avlyssnare kan se den.
Konceptet Diffie-Hellman-nyckelutbyte
Diffie-Hellman (DH) använder ett finurligt matematiskt knep som bygger på problemet med diskreta logaritmer. Båda parter kommer överens om två publika värden (ett stort primtal p och en generator g). Varje part genererar ett privat slumptal, beräknar ett publikt värde utifrån det och utbyter de publika värdena. Därefter kan varje part beräkna samma gemensamma hemlighet utifrån sitt eget privata tal och den andra partens publika värde. En avlyssnare som endast ser de publika värdena kan däremot inte beräkna den gemensamma hemligheten utan att lösa problemet med diskreta logaritmer, vilket är beräkningsmässigt orimligt för stora tal.
# Diffie-Hellman conceptual flow:
# 1. Agree on public parameters: prime p=23, generator g=5
# 2. Alice picks private a=6: computes A = g^a mod p = 5^6 mod 23 = 8
# 3. Bob picks private b=15: computes B = g^b mod p = 5^15 mod 23 = 19
# 4. Alice sends A=8 to Bob; Bob sends B=19 to Alice
# 5. Alice: s = B^a mod p = 19^6 mod 23 = 2
# 6. Bob: s = A^b mod p = 8^15 mod 23 = 2
# Shared secret = 2 (without either party transmitting it!)ECDH: Elliptic Curve Diffie-Hellman
Elliptic Curve Diffie-Hellman (ECDH) är den moderna och effektivare varianten av Diffie-Hellman-nyckelutbyte. Den använder matematik för elliptiska kurvor i stället för modulär exponentiering och uppnår samma säkerhet med mycket mindre parametrar. En ECDH-nyckel på 256 bitar ger en säkerhet som motsvarar en DH-nyckel på 3072 bitar. ECDHE (”E” står för Ephemeral) genererar ett nytt nyckelpar för varje session och ger därmed perfekt framåtsekretess. TLS 1.3 kräver ECDHE för nyckelutbyte, vilket gör det till den dominerande mekanismen för nyckelutbyte i modern webbsäkerhet.
Perfekt framåtsekretess (PFS)
Perfekt framåtsekretess (PFS) säkerställer att sessionsnycklar inte äventyras även om serverns långvariga privata nyckel senare stjäls. PFS uppnås genom att använda efemära nyckelpar för nyckelutbytet i varje session. Sessionsnyckeln härleds från ett tillfälligt nyckelpar som kasseras när sessionen avslutas. Utan PFS (vid användning av RSA-nyckelutbyte) kan en angripare som spelar in krypterad trafik i dag och senare stjäl den privata nyckeln dekryptera all tidigare trafik i efterhand. Med PFS förblir tidigare sessioner säkra även efter att en nyckel har äventyrats.
# Check if a website uses Perfect Forward Secrecy
openssl s_client -connect google.com:443 2>/dev/null | grep 'Cipher'
# Cipher : TLS_AES_256_GCM_SHA384 (TLS 1.3 - always has PFS)
# Or look for ECDHE in cipher name:
# Cipher : ECDHE-RSA-AES256-GCM-SHA384 (TLS 1.2 with PFS)
# DHE-RSA-AES256-GCM-SHA384 (DHE = also PFS)
# RSA-AES256-SHA (NO PFS - static RSA key exchange)Hybridkryptering: det bästa av två världar
Hybridkryptering kombinerar asymmetrisk och symmetrisk kryptografi för att ge både fördelarna med nyckelhantering hos asymmetrisk kryptering och den prestanda som symmetrisk kryptering erbjuder. Processen går till så här: (1) generera en slumpmässig symmetrisk sessionsnyckel, (2) kryptera huvuddelen av datan med den symmetriska nyckeln (snabbt), (3) kryptera den symmetriska nyckeln med mottagarens publika nyckel (säker överföring av nyckeln), (4) skicka både den krypterade datan och den krypterade nyckeln. Mottagaren dekrypterar den symmetriska nyckeln med sin privata nyckel och dekrypterar sedan datan med den återställda symmetriska nyckeln.
# Hybrid encryption example with OpenSSL
# 1. Generate a random AES-256 session key
openssl rand -out session.key 32
# 2. Encrypt the large file with the symmetric session key
openssl enc -aes-256-cbc -pbkdf2 -in largefile.tar -out largefile.enc -pass file:session.key
# 3. Encrypt the session key with recipient's RSA public key
openssl rsautl -encrypt -inkey recipient_public.pem -pubin -in session.key -out session.key.enc
# Send: largefile.enc + session.key.encTLS-handskakning: hybridkryptering i praktiken
TLS-handskakningen är den vanligaste praktiska tillämpningen av hybridkryptering. I TLS 1.3: (1) Klienten skickar de cipher suites som stöds och en nyckeldel (det publika värdet från ECDHE). (2) Servern svarar med sin nyckeldel, sitt certifikat (som innehåller dess publika nyckel) och en signatur. (3) Båda sidor beräknar samma delade hemlighet via ECDH. (4) All efterföljande trafik krypteras med en symmetrisk nyckel som härleds från den delade hemligheten (AES-256-GCM). Hela processen upprättar en krypterad kanal med en enda tur- och returresa, utan att den symmetriska nyckeln någonsin överförs direkt.
# Observe the TLS 1.3 handshake
openssl s_client -connect example.com:443 -tls1_3
# You'll see:
# TLSv1.3, Handshake [length 0002], ServerHello
# Cipher : TLS_AES_256_GCM_SHA384
# Session-ID: (no session ID in TLS 1.3, uses PSK)
# Verify return code: 0 (ok)Nyckelinkapslingsmekanismer (KEM)
Modern kryptografi använder Key Encapsulation Mechanisms (KEM) som ett mer formellt och säkert sätt att utbyta nycklar än att kryptera en sessionsnyckel direkt med asymmetrisk kryptering. En KEM gör det möjligt för en part att generera en symmetrisk nyckel och ”inkapsla” den med mottagarens publika nyckel på ett sätt som gör att endast mottagaren kan avkapsla den (återfå den). NIST:s postkvantstandard CRYSTALS-Kyber är en KEM som bygger på gitterproblem i stället för faktorisering av heltal eller elliptiska kurvor, vilket gör den motståndskraftig mot attacker från kvantdatorer.
RSA-nyckelutbyte jämfört med ECDHE
Fram till TLS 1.3 var RSA-nyckelutbyte vanligt: klienten genererade en pre-master-hemlighet, krypterade den med serverns publika RSA-nyckel och skickade den till servern. Problemet är att detta inte ger någon framåtsekretess. Om serverns privata nyckel senare röjs kan alla tidigare sessioner som krypterats på detta sätt dekrypteras. TLS 1.3 tar därför helt bort RSA-nyckelutbyte och tillåter endast ECDHE, specifikt för att säkerställa framåtsekretess i alla anslutningar. Därför är det en säkerhetsförbättring att inaktivera TLS 1.0 och 1.2, som fortfarande tillåter statisk RSA, och kräva TLS 1.3.
Härledning av sessionsnyckel
Den delade hemlighet som skapas genom ett Diffie-Hellman-utbyte används inte direkt som krypteringsnyckel. I stället matas den in i en Key Derivation Function (KDF) för att skapa de faktiska krypteringsnycklarna och initieringsvektorerna. TLS 1.3 använder HKDF (HMAC-based Key Derivation Function) för att härleda separata nycklar för kryptering i respektive riktning. KDF:er ökar beräkningskostnaden, vilket gör brute force svårare, utökar korta hemligheter till det antal nyckelbyte som behövs och säkerställer att de härledda nycklarna har goda statistiska egenskaper för användning som symmetriska nycklar.
PGP-e-postkryptering: hybridkryptering i e-post
Pretty Good Privacy (PGP) och dess ekvivalent med öppen källkod, OpenPGP, använder hybridkryptering för e-post. När Alice skickar ett krypterat e-postmeddelande till Bob genererar PGP en slumpmässig symmetrisk sessionsnyckel, krypterar meddelandetexten med den (AES), krypterar sessionsnyckeln med Bobs publika RSA- eller ECC-nyckel och skickar båda tillsammans. För signerade e-postmeddelanden hashar PGP meddelandet och signerar hashet med Alices privata nyckel, vilket ger oavvislighet. PGP:s modell med förtroendenätverk, där användare signerar varandras nycklar, är ett alternativ till PKI som bygger på certifikatutfärdare.
# Encrypt and sign an email file with GPG (OpenPGP)
# Encrypt to Bob using his public key, sign with Alice's private key
gpg --encrypt --sign --recipient bob@example.com --armor message.txt
# Decrypt (Bob uses his private key)
gpg --decrypt message.txt.asc
# List available keys
gpg --list-keys
gpg --list-secret-keysRisk för man-in-the-middle vid nyckelutbyte
Diffie-Hellman-nyckelutbyte är säkert mot passiva avlyssnare men sårbart för aktiva man-in-the-middle-attacker (MITM-attacker) om parterna inte autentiserar varandra. En angripare kan fånga upp Alices publika värde, ersätta det med sitt eget och upprätta separata DH-sessioner med både Alice och Bob, där var och en tror att kommunikationen sker med den andra parten. Därför kombinerar TLS DH-nyckelutbyte med certifikatautentisering: serverns certifikat, som signerats av en betrodd CA, bevisar serverns identitet och förhindrar att den publika nyckeln ersätts av en angripare under handskakningen.
Snabbkontroll
Testa dina kunskaper om begreppen i CompTIA Security+ (SY0-701) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig följande: Diffie-Hellman löser problemet med nyckelutbyte genom att låta parter härleda en delad hemlighet över en osäker kanal; ECDHE (ephemeral) ger Perfect Forward Secrecy; hybridkryptering kombinerar asymmetriskt nyckelutbyte med symmetrisk bulk-kryptering för bättre effektivitet; och TLS 1.3 kräver ECDHE för alla anslutningar. Härnäst går vi igenom certifikatutfärdare och förtroendekedjor.
Lär dig Security+ Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Nyckelutbyte och hybridkryptering” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Security+ Academy, inklusive ”Nyckelutbyte och hybridkryptering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Security+ Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Nyckelutbyte och hybridkryptering”?
Se hur Diffie-Hellman-nyckelutbyte och TLS kombinerar symmetriska och asymmetriska metoder för att uppnå både prestanda och säkerhet. Ni övar på Security+ Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Security+ Academy?
Du behöver inga förkunskaper. Utbildningen i Security+ Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Nyckelutbyte och hybridkryptering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Security+ Academy-lektionen?
Ja. Varje Security+ Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Symmetriska krypteringsalgoritmer
- Asymmetrisk kryptering och nyckelpar
- Hashning och dataintegritet
- Nyckelutbyte och hybridkryptering