Cryptology Academy · Lezione

Protocollo Station-to-Station (STS)

Esamini STS come protocollo corretto di scambio autenticato delle chiavi e il suo utilizzo in SSH e IKE.

Lezione 2 di 413 passaggi

Protocollo Station-to-Station (STS) è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Motivazione di STS

Il protocollo Station-to-Station (STS) (Diffie, van Oorschot, Wiener, 1992) è stato progettato per fornire un accordo autenticato sulle chiavi senza una terza parte fidata. Il semplice scambio di chiavi Diffie-Hellman non è autenticato: un attaccante man-in-the-middle può sostituire i valori DH, stabilendo sessioni separate con ciascuna parte, convinta di condividere una chiave con l'altra. STS combina DH con firme digitali e certificati a chiave pubblica per fornire l'autenticazione reciproca. Le parti si autenticano firmando il transcript DH e associando la chiave di sessione alle proprie identità. STS ha influenzato direttamente la progettazione di IKE (Internet Key Exchange per IPsec) e SSH.

Passaggi del protocollo STS

Il protocollo STS procede come segue. Alice e Bob concordano un gruppo DH, composto dal primo p e dal generatore g. (1) Alice invia g^a mod p a Bob. (2) Bob invia g^b mod p, Cert_B, Sig_B{g^b, g^a} ad Alice. Bob firma la concatenazione di entrambi i valori DH usando la propria chiave privata. (3) Alice verifica il certificato e la firma di Bob, quindi invia Cert_A, Sig_A{g^a, g^b} cifrati con la chiave di sessione K = (g^ab mod p). L'identità e la firma di Alice sono cifrate, fornendo protezione all'identità di Alice: gli intercettatori passivi non possono collegare Alice a questa sessione. Entrambe le parti calcolano K = g^ab mod p e si autenticano reciprocamente tramite le firme.

STS e DH non autenticato

Il confronto tra STS e DH non autenticato mostra ciò che aggiunge l'autenticazione. Nel DH semplice, Mallory intercetta g^a e g^b, sostituisce g^m con Alice e g^m con Bob, stabilendo K1 = g^am e K2 = g^bm. Mallory decifra tutto il traffico. In STS, Bob firma {g^b, g^a}: la firma riguarda gli esatti valori DH di questa sessione. Anche se Mallory sostituisce g^m a g^b, non può falsificare una firma valida con la chiave associata al certificato di Bob. Alice rifiuta la sessione. L'idea fondamentale è che l'autenticazione nello scambio di chiavi deve coprire il transcript DH, non soltanto le dichiarazioni d'identità.

Segretezza in avanti in STS

STS garantisce la segretezza in avanti perfetta (PFS) perché la chiave di sessione deriva da valori DH effimeri, g^a e g^b, che vengono scartati al termine della sessione. Anche se la chiave di firma a lungo termine di Bob venisse compromessa in seguito, le sessioni STS registrate in precedenza non potrebbero essere decifrate: l'attaccante avrebbe bisogno degli esponenti DH effimeri a e b, che non sono mai stati memorizzati. Questa è la stessa proprietà ricercata in TLS con le suite di cifratura ECDHE. Senza DH effimero, ad esempio usando il trasporto della chiave RSA, in cui la chiave di sessione è cifrata con la chiave RSA statica del server, la compromissione della chiave a lungo termine consente di decifrare tutte le sessioni passate.

Protezione dell'identità

STS cifra il certificato e la firma di Alice nel passaggio 3, fornendo protezione dell'identità del risponditore contro gli intercettatori passivi. Un osservatore passivo vede soltanto il valore DH di Alice e il certificato di Bob, che Bob invia in chiaro nel passaggio 2. L'identità di Alice è nascosta agli intercettatori passivi. Gli attaccanti attivi che tentano un MITM vengono rilevati dal fallimento della verifica della firma. Questa asimmetria, cioè l'identità dell'iniziatore rivelata all'attaccante attivo e l'identità del risponditore protetta dall'intercettatore passivo, è un compromesso progettuale intenzionale: la protezione completa dell'identità di entrambe le parti contro gli attaccanti attivi richiede una maggiore complessità del protocollo, ad esempio la precondivisione dei valori DH o l'uso di elementi di gruppo anonimi.

STS in IKEv1 e IKEv2

IKE (Internet Key Exchange), il protocollo di gestione delle chiavi per IPsec, deriva direttamente da STS. IKEv1 (RFC 2409) ha implementato l'autenticazione tramite firme in stile STS nella sua Main Mode. IKEv2 (RFC 7296) è una riprogettazione più lineare con quattro scambi di messaggi: IKE_SA_INIT, per lo scambio DH e i nonce, e IKE_AUTH, per l'identità, il certificato e la firma sul transcript di IKE_SA_INIT. Il formato della firma è AUTH = PRF(SK_pi, transcript) per PSK oppure una firma digitale sugli ottetti di IKE_SA_INIT per l'autenticazione tramite certificato. IKEv2 supporta anche Extensible Authentication Protocol (EAP) per l'autenticazione legacy basata su password, in modo analogo al supporto di STS per diversi metodi di autenticazione.

STS in SSH

L'autenticazione con chiavi SSH usa un meccanismo simile al passaggio 3 di STS. Dopo lo scambio di chiavi DH, SSH_MSG_KEXDH_REPLY contiene la chiave pubblica del server, il valore DH e una firma sull'hash dello scambio; il client verifica la chiave host del server. Per l'autenticazione del client, con SSH_MSG_USERAUTH_REQUEST e il metodo publickey, il client firma {session_id, username, service, method, key_algo, public_key} usando la propria chiave privata. session_id deriva dal transcript DH e associa l'autenticazione a questa specifica sessione, impedendo la falsificazione tra sessioni che affliggeva NS. SSH non usa certificati per impostazione predefinita, ma li supporta tramite ssh-keygen -s, per la firma dei certificati, nelle distribuzioni su larga scala.

Famiglia di protocolli SIGMA

STS fa parte della famiglia SIGMA (SIGn-and-MAc) dei protocolli di scambio autenticato di chiavi (AKE), formalizzata da Hugo Krawczyk. SIGMA aggiunge un MAC a STS: ogni parte firma il transcript e calcola il MAC della propria identità con la chiave di sessione: MAC(K, identity). Il MAC associa l'identità alla chiave di sessione e impedisce un attacco specifico in cui un avversario può collegare firme provenienti da sessioni diverse. SIGMA-I, con l'identità dell'iniziatore protetta, SIGMA-R, con l'identità del risponditore protetta, e SIGMA-0, senza protezione dell'identità, sono varianti del protocollo. IKEv2 e X3DH di Signal sono protocolli della famiglia SIGMA. Il formalismo SIGMA fornisce una dimostrazione rigorosa della sicurezza dei progetti in stile STS.

Attacco KCI e varianti di STS

STS è vulnerabile al Key Compromise Impersonation (KCI): se la chiave a lungo termine di Alice viene compromessa, un attaccante può impersonare qualsiasi parte nei confronti di Alice in una nuova sessione, perché può falsificare la firma di Alice su qualsiasi transcript. Ciò significa che la compromissione della chiave di una parte consente all'avversario di impersonare altre parti nei suoi confronti. Il KCI è intrinseco nei protocolli AKE basati su firme: per difendersi è necessario che la chiave di sessione dipenda dai contributi di entrambe le parti in modo da impedire alla parte compromessa di sostituire il proprio contributo. HMQV (Hashed Menezes-Qu-Vanstone) e NAXOS offrono resistenza al KCI al costo di una maggiore complessità.

Negabilità e messaggistica Off-the-Record

STS fornisce il non ripudio: le firme dimostrano con certezza crittografica chi ha detto cosa. Questo è talvolta indesiderabile: nelle conversazioni private, i partecipanti potrebbero non voler rendere producibile in tribunale una prova crittografica delle proprie dichiarazioni. La messaggistica Off-the-Record (OTR) e il Double Ratchet di Signal forniscono negabilità: invece di firmare i messaggi, usano chiavi MAC detenute sia dal mittente sia dal destinatario. Dopo la conversazione, entrambe le parti possono sostenere che l'altra abbia falsificato i messaggi, poiché ciascuna dispone della chiave necessaria per produrre i MAC. Il compromesso è che la negabilità sacrifica il non ripudio. I progetti in stile STS sono appropriati quando è richiesta l'attribuibilità; OTR e Signal quando si attribuisce valore alla negabilità.

Dimostrazione della sicurezza di STS

La sicurezza di STS è stata analizzata informalmente nell'articolo originale, ma è stata dimostrata formalmente da Bellare e Rogaway (1993, 1994) nel loro fondamentale modello di sicurezza AKE. Essi hanno definito cosa significa che un protocollo di scambio di chiavi sia sicuro: le chiavi di sessione devono essere indistinguibili da chiavi casuali, anche quando l'avversario può registrare parti, rivelare chiavi di sessione, rivelare chiavi a lungo termine, tranne quella della sessione obiettivo, e controllare la rete. Questo modello di sicurezza basato sulla simulazione, esteso da Canetti-Krawczyk e successivamente dalla UC (Universal Composability), è oggi lo standard per dimostrare la sicurezza dei protocolli AKE. TLS 1.3, Signal e Noise hanno tutti dimostrazioni formali in varianti di questo modello.

Quiz sul binding della firma STS

Perché STS richiede che entrambi i valori DH (g^a e g^b) siano inclusi nella trascrizione firmata?

Riepilogo del protocollo STS

STS combina lo scambio di chiavi DH effimere con le firme digitali per fornire un accordo autenticato sulle chiavi senza un TTP. Entrambe le parti firmano la trascrizione DH, associando l'autenticazione alla sessione. STS garantisce forward secrecy (DH effimero), autenticazione reciproca (firme) e protezione dell'identità del responder (i dati di Alice vengono cifrati prima dell'invio). STS ha influenzato direttamente IKEv2 e l'autenticazione delle chiavi in SSH. SIGMA formalizza STS con MAC delle identità e dimostrazioni di sicurezza. KCI è una debolezza intrinseca di STS, mitigata da HMQV/NAXOS. La negabilità (come in Signal) richiede di sostituire le firme con MAC per l'autenticità a livello di messaggio.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Protocollo Station-to-Station (STS)» è gratuita?

Sì — il testo completo di «Protocollo Station-to-Station (STS)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Protocollo Station-to-Station (STS)»?

Esamini STS come protocollo corretto di scambio autenticato delle chiavi e il suo utilizzo in SSH e IKE. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Protocollo Station-to-Station (STS)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Il protocollo Needham-Schroeder e gli attacchi
  2. Protocollo Station-to-Station (STS)
  3. Il framework del protocollo Noise
  4. Principi di progettazione dei protocolli sicuri
← Torna a Cryptology Academy