Cloud & IT Cert Prep · Lektion

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.

Lektion 4 av 413 steg

Nyckelutbyte och hybridkryptering är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep 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.enc

TLS-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-keys

Risk 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.

Gratis att börja

Lär dig Cloud & IT Cert Prep 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
150
Lektioner
600

Vanliga frågor

Är lektionen ”Nyckelutbyte och hybridkryptering” gratis?

Ja – hela texten till ”Nyckelutbyte och hybridkryptering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep 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å Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?

Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep 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 Cloud & IT Cert Prep-lektionen?

Ja. Varje Cloud & IT Cert Prep-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

  1. Symmetriska krypteringsalgoritmer
  2. Asymmetrisk kryptering och nyckelpar
  3. Hashning och dataintegritet
  4. Nyckelutbyte och hybridkryptering
← Tillbaka till Cloud & IT Cert Prep