Cryptology Academy · Lektion

Station-to-Station-protokollen (STS)

Studér STS som en korrigeret protokol til autentificeret nøgleudveksling og dens anvendelse i SSH og IKE.

Lektion 2 af 413 trin

Station-to-Station-protokollen (STS) er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 2 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.

Motivationen bag STS

Station-to-Station-protokollen (STS) (Diffie, van Oorschot, Wiener, 1992) blev designet til at levere autentificeret nøgleaftale uden en betroet tredjepart. Ren Diffie-Hellman-nøgleudveksling er uden autentificering — en angriber i midten kan erstatte deres egne DH-værdier og dermed oprette separate sessioner med hver part, som tror, at de deler en nøgle. STS kombinerer DH med digitale signaturer og certifikater med offentlige nøgler for at levere gensidig autentificering. Parterne autentificerer sig ved at underskrive DH-transskriptionen, så sessionsnøglen bindes til deres identiteter. STS påvirkede direkte designet af IKE (Internet Key Exchange til IPsec) og SSH.

STS-protokollens trin

STS-protokollen forløber således. Alice og Bob aftaler en DH-gruppe (primtal p, generator g). (1) Alice sender g^a mod p til Bob. (2) Bob sender g^b mod p, Cert_B, Sig_B{g^b, g^a} til Alice. Bob underskriver sammenkædningen af begge DH-værdier med sin private nøgle. (3) Alice kontrollerer Bobs certifikat og signatur og sender derefter Cert_A, Sig_A{g^a, g^b} krypteret med sessionsnøglen K = (g^ab mod p). Alices identitet og signatur krypteres, hvilket beskytter Alices identitet — passive aflyttere kan ikke knytte Alice til denne session. Begge parter beregner K = g^ab mod p og autentificeres gensidigt via signaturerne.

STS kontra uautentificeret DH

En sammenligning af STS med uautentificeret DH viser, hvad autentificering tilfører. I almindelig DH opsnapper Mallory g^a og g^b, erstatter dem med g^m over for Alice og g^m over for Bob og opretter K1 = g^am og K2 = g^bm. Mallory dekrypterer al trafik. I STS underskriver Bob {g^b, g^a} — denne signatur dækker præcis de DH-værdier, der bruges i denne session. Selv hvis Mallory erstatter g^b med g^m, kan Mallory ikke forfalske en gyldig signatur med Bobs certifikatnøgle. Alice afviser sessionen. Den afgørende indsigt er, at autentificering i nøgleudvekslingen skal dække DH-transskriptionen og ikke kun identitetsudsagn.

Fremadrettet hemmeligholdelse i STS

STS opnår perfekt fremadrettet hemmeligholdelse (PFS), fordi sessionsnøglen afledes af flygtige DH-værdier (g^a, g^b), som kasseres efter sessionen. Selv hvis Bobs langsigtede signeringsnøgle senere kompromitteres, kan tidligere optagede STS-sessioner ikke dekrypteres — angriberen skal bruge de flygtige DH-eksponenter a og b, som aldrig blev gemt. Det er den samme egenskab, der værdsættes i TLS med ECDHE-krypteringspakker. Uden flygtig DH (f.eks. ved at bruge RSA-nøgletransport, hvor sessionsnøglen krypteres med serverens statiske RSA-nøgle) dekrypterer kompromittering af den langsigtede nøgle alle tidligere sessioner.

Identitetsbeskyttelse

STS krypterer Alices certifikat og signatur i trin 3 og beskytter dermed svarpartens identitet mod passive aflyttere. En passiv observatør ser kun Alices DH-værdi og Bobs certifikat (som Bob sender i klartekst i trin 2). Alices identitet skjules for passiv aflytning. Aktive angribere, der udfører et MITM-angreb, opdages, når signaturkontrollen mislykkes. Denne asymmetri (initiativtagerens identitet afsløres for en aktiv angriber, mens svarpartens identitet beskyttes mod en passiv aflytter) er et bevidst designmæssigt kompromis — fuld identitetsbeskyttelse for begge parter mod aktive angribere kræver yderligere protokolkompleksitet (forudgående deling af DH-værdier eller brug af anonyme gruppeelementer).

STS i IKEv1 og IKEv2

IKE (Internet Key Exchange), nøglehåndteringsprotokollen til IPsec, er direkte afledt af STS. IKEv1 (RFC 2409) implementerede signaturbaseret autentificering i STS-stil i Main Mode. IKEv2 (RFC 7296) er en mere overskuelig nyudformning med fire meddelelsesforløb: IKE_SA_INIT (DH-udveksling, nonces), IKE_AUTH (identitet, certifikat, signatur over IKE_SA_INIT-transskriptionen). Signaturformatet er AUTH = PRF(SK_pi, transcript) for PSK eller en digital signatur over IKE_SA_INIT-oktetterne ved certifikatbaseret autentificering. IKEv2 understøtter også Extensible Authentication Protocol (EAP) til ældre adgangskodebaseret autentificering, svarende til STS's understøttelse af forskellige autentificeringsmetoder.

STS i SSH

SSH-nøgleautentificering bruger en mekanisme, der ligner trin 3 i STS. Efter DH-nøgleudvekslingen (SSH_MSG_KEXDH_REPLY indeholder serverens offentlige nøgle, DH-værdi og en signatur over udvekslingshashen) kontrollerer klienten serverens værtsnøgle. Ved klientautentificering (SSH_MSG_USERAUTH_REQUEST med metoden publickey) underskriver klienten {session_id, username, service, method, key_algo, public_key} med sin private nøgle. session_id afledes af DH-transskriptionen, hvilket binder autentificeringen til netop denne session og forhindrer den forfalskning på tværs af sessioner, som plagede NS. SSH bruger ikke certifikater som standard, men understøtter dem via ssh-keygen -s (certifikatsignering) i store udrulninger.

SIGMA-protokolfamilien

STS er medlem af SIGMA-familien af autentificerede nøgleudvekslingsprotokoller (AKE), som blev formaliseret af Hugo Krawczyk. SIGMA føjer en MAC til STS: hver part underskriver transskriptionen og beregner en MAC over sin identitet med sessionsnøglen: MAC(K, identity). MAC'en knytter identiteten til sessionsnøglen og forhindrer et bestemt angreb, hvor en modstander kan knytte signaturer fra forskellige sessioner sammen. SIGMA-I (initiativtagerens identitet beskyttet), SIGMA-R (svarpartens identitet beskyttet) og SIGMA-0 (ingen identitetsbeskyttelse) er varianter. IKEv2 og Signals X3DH er protokoller i SIGMA-familien. SIGMA-formaliseringen giver et stringent sikkerhedsbevis for STS-lignende konstruktioner.

KCI-angreb og STS-varianter

STS er sårbar over for angreb med efterligning efter nøglekompromittering (KCI): Hvis Alices langsigtede nøgle kompromitteres, kan en angriber udgive sig for at være en hvilken som helst part over for Alice i en ny session (fordi angriberen kan forfalske Alices signatur på et vilkårligt transskript). Det betyder, at kompromittering af én parts nøgle gør det muligt for en modstander at udgive sig for at være andre over for den pågældende part. KCI er en iboende egenskab ved signaturbaserede AKE-protokoller — forsvar mod KCI kræver, at sessionsnøglen afhænger af begge parters bidrag på en måde, der forhindrer den kompromitterede part i at erstatte dem. HMQV (Hashed Menezes-Qu-Vanstone) og NAXOS giver modstandsdygtighed over for KCI på bekostning af yderligere kompleksitet.

Benægtelighed og Off-the-Record-meddelelser

STS giver uafviselighed: Signaturerne beviser, hvem der sagde hvad, med kryptografisk sikkerhed. Dette er undertiden uønsket — i private samtaler ønsker deltagerne måske ikke, at der kan fremlægges kryptografisk bevis for deres udsagn i retten. OTR-meddelelser og Signals Double Ratchet giver benægtelighed: I stedet for at signere meddelelser bruger de MAC-nøgler, som både afsenderen og modtageren har. Efter samtalen kan begge parter hævde, at den anden har fabrikeret meddelelserne, eftersom hver af dem har nøglen til at generere MAC'er. Kompromiset er, at benægtelighed ofrer uafviselighed. STS-lignende konstruktioner er passende, hvor der kræves ansvarlighed; OTR/Signal, hvor benægtelighed vægtes.

Sikkerhedsbevis for STS

STS-sikkerheden blev analyseret uformelt i den oprindelige artikel, men blev formelt bevist af Bellare og Rogaway (1993, 1994) i deres banebrydende AKE-sikkerhedsmodel. De definerede, hvad det vil sige, at en nøgleudvekslingsprotokol er sikker: at sessionsnøgler ikke kan skelnes fra tilfældige værdier, selv når modstanderen kan registrere parter, afsløre sessionsnøgler, afsløre langsigtede nøgler (bortset fra målsessionens) og kontrollere netværket. Denne simuleringsbaserede sikkerhedsmodel, som er blevet udvidet af Canetti-Krawczyk og senere med UC (universel komponerbarhed), er nu standarden for at bevise sikkerheden af AKE-protokoller. TLS 1.3, Signal og Noise har alle formelle beviser i varianter af denne model.

Quiz om STS-signaturbinding

Hvorfor kræver STS, at begge DH-værdier (g^a og g^b) er inkluderet i det signerede transskript?

Opsummering af STS-protokollen

STS kombinerer en udveksling af midlertidige DH-nøgler med digitale signaturer for at levere en autentificeret nøgleaftale uden en TTP. Begge parter signerer DH-transskriptet, så autentifikationen bindes til sessionen. STS opnår fremadrettet hemmeligholdelse (midlertidig DH), gensidig autentifikation (signaturer) og beskyttelse af responderens identitet (Alices data krypteres, før de sendes). STS havde direkte indflydelse på IKEv2 og SSH's nøgleautentifikation. SIGMA formaliserer STS med identitets-MAC'er og sikkerhedsbeviser. KCI er en iboende svaghed ved STS, som afhjælpes af HMQV/NAXOS. Benægtelighed (som i Signal) kræver, at signaturer erstattes med MAC'er for autenticitet på meddelelsesniveau.

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 “Station-to-Station-protokollen (STS)” gratis?

Ja — hele teksten til “Station-to-Station-protokollen (STS)” 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 “Station-to-Station-protokollen (STS)”?

Studér STS som en korrigeret protokol til autentificeret nøgleudveksling og dens anvendelse i SSH og IKE. 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 2 af 4.

Hvor lang tid tager lektionen “Station-to-Station-protokollen (STS)”?

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. Needham-Schroeder-protokollen og angreb
  2. Station-to-Station-protokollen (STS)
  3. Noise Protocol Framework
  4. Principper for sikkert protokoldesign
← Tilbage til Cryptology Academy