Cryptology Academy · Lektion

ECDH: Elliptiske kurver til nøgleudveksling

Anvend skalarmultiplikation på elliptiske kurver til ECDH-nøgleaftale.

Lektion 3 af 413 trin

ECDH: Elliptiske kurver til nøgleudveksling er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Velkommen

ECDH erstatter DH's multiplikative gruppe med en gruppe på en elliptisk kurve. Resultatet er tilsvarende sikkerhed med 10× mindre nøgler og 10× hurtigere operationer.

Operationer i EC-gruppen

I ECDH er 'multiplikationen' skalarmultiplikation på en elliptisk kurve: at gange et punkt P med en skalar k betyder at lægge P til sig selv k gange: k×P. Dette er EC-analogien til g^k mod p.

ECDH-protokollen

Aftal kurven E og basispunktet G offentligt. Alice: privat nøgle a, offentlig nøgle A = a×G Bob: privat nøgle b, offentlig nøgle B = b×G Alice: S = a×B = a×b×G Bob: S = b×A = b×a×G Begge udleder det samme punkt S.

ECDLP

Givet A = a×G på en elliptisk kurve skal du finde a. Dette er problemet med den diskrete logaritme på elliptiske kurver. Der kendes ingen subeksponentiel algoritme for generelle kurver, hvilket gør ECDLP sværere end DLP ved samme nøglestørrelse.

Curve25519

Designet af Bernstein i 2005. Montgomery-form: y²=x³+486662x²+x over primtallet 2^255-19. Designet til at være hurtig og modstandsdygtig over for implementeringsfejl. Bruges i WireGuard, Signal og SSH.

X25519-nøgleudveksling

X25519 er ECDH-funktionen, der bruger Curve25519. Kun x-koordinaten for det fælles punkt bruges (kofaktormultiplikation håndterer randtilfælde). RFC 7748 standardiserede X25519 og X448.

ECDH i Python

from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey alice_priv = X25519PrivateKey.generate() bob_priv = X25519PrivateKey.generate() alice_pub = alice_priv.public_key() bob_pub = bob_priv.public_key() shared_alice = alice_priv.exchange(bob_pub) shared_bob = bob_priv.exchange(alice_pub) assert shared_alice == shared_bob

Fra fælles punkt til symmetrisk nøgle

Det rå fælles punkt bruges ikke direkte som en nøgle (det er ikke jævnt fordelt). Brug HKDF til at udlede en korrekt symmetrisk nøgle: from cryptography.hazmat.primitives.kdf.hkdf import HKDF key = HKDF(SHA256, 32, salt, info).derive(shared_secret)

Nøglestørrelser for ECDH og DH

Sikkerhedsniveau på 128 bit: - DH: 3072-bit primtal - ECDH: 256-bit kurve Forholdet mellem nøglestørrelserne er cirka 12:1. ECDH's offentlige nøgle: 32 byte (Curve25519). DH's offentlige nøgle: 384 byte. Operationer med ECDH's private nøgle er cirka 50× hurtigere.

Kofaktorangreb på dårlige kurver

Angreb med små undergrupper udnytter kurver med ikke-trivielle kofaktorer. Curve25519 har kofaktor 8, men X25519 håndterer dette korrekt. NIST P-kurver har kofaktor 1. Brug altid standardiserede implementeringer.

ECDH i TLS 1.3

TLS 1.3 understøtter X25519, X448, P-256, P-384 og P-521 til nøgleudveksling. X25519 er den mest udbredte — hurtig, sikker og konstant i tid. Begge parter genererer efemere nøgler for hver session.

Hurtigt tjek

Hvad er den primære fordel ved ECDH sammenlignet med klassisk Diffie-Hellman?

Opsummering

ECDH er på plads! Nu forstår vi fremadrettet hemmeligholdelse, og hvorfor efemer nøgleudveksling er afgørende i TLS.
Gratis at komme i gang

Lær Cryptology 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
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “ECDH: Elliptiske kurver til nøgleudveksling” gratis?

Ja — hele teksten til “ECDH: Elliptiske kurver til nøgleudveksling” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “ECDH: Elliptiske kurver til nøgleudveksling”?

Anvend skalarmultiplikation på elliptiske kurver til ECDH-nøgleaftale. Du øver dig i Cryptology 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å Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology 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 3 af 4.

Hvor lang tid tager lektionen “ECDH: Elliptiske kurver til nøgleudveksling”?

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 Cryptology Academy-lektion?

Ja. Alle Cryptology 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

  1. Problemet med nøglefordeling
  2. Matematikken bag Diffie-Hellman-nøgleudveksling
  3. ECDH: Elliptiske kurver til nøgleudveksling
  4. Forward secrecy og ephemeral nøgleudveksling
← Tilbage til Cryptology Academy