Protocollo di Needham-Schroeder
Con il termine generico di protocollo di Needham-Schroeder si possono identificare due protocolli di comunicazione progettati per permettere comunicazioni cifrate su reti non sicure.
I protocolli furono proposti da Roger Needham e Michael Schroeder nel 1978.
- Il protocollo di Needham-Schroeder a chiave segreta è basato sulla crittografia simmetrica ed è alla base del protocollo di rete Kerberos. Il protocollo permette di stabilire una chiave di sessione utilizzabile da due entità di rete per proteggere le successive comunicazioni.
- Il protocollo di Needham-Schroeder a chiave pubblica è invece basato sulla crittografia asimmetrica e permette di assicurare la mutua autenticazione tra due entità di rete. Nella sua forma proposta non è sicuro.
Il protocollo a chiave segreta
modificaScenario
modifica- Alice ( ) e Bob ( ) sono due entità di rete che devono comunicare in modo sicuro utilizzando un collegamento di rete non sicuro.
- è un server fidato, ovvero che gode della fiducia di entrambe le parti.
- è una chiave simmetrica nota esclusivamente ad e .
- è una chiave simmetrica nota esclusivamente a e .
- è una chiave simmetrica di sessione generata da durante l'esecuzione dei passi del protocollo.
- e sono nonce crittografici, ovvero numeri casuali da usare una volta sola.
Si suppone che sia a cominciare la comunicazione.
Descrizione
modificaAlice spedisce un messaggio al server con la sua identità e quella di Bob, per dichiarare che intende comunicare con Bob. Allega anche un numero :
Il server genera la chiave di sessione e risponde ad Alice inviandole:
- la chiave appena generata,
- la coppia criptata con la chiave , in modo che possa essere inoltrata a Bob perché venga reso partecipe,
- il nonce che assicura ad Alice che il messaggio è nuovo e che il server sta rispondendo a quel particolare messaggio.
- B: l'inclusione dell'identificatore di Bob dice ad Alice con chi lei sta condividendo la chiave.
Il tutto è criptato con la chiave segreta , nota solo ad Alice e al server:
Alice comunica a Bob la chiave di sessione e il proprio identificativo, criptati con la chiave , come comunicata dal server con il precedente messaggio. Bob può decriptare il messaggio e il fatto che sia stato cifrato da una entità fidata (il server) lo rende autentico:
Bob risponde ad Alice con un nonce criptato con la chiave di sessione , per mostrare che è in possesso della chiave:
Alice decifra il nonce di Bob, lo modifica con una semplice operazione, lo cifra nuovamente e lo rispedisce indietro, provando così che è ancora attiva e in possesso della chiave:
Da questo momento in poi la comunicazione è pienamente stabilita e viene condotta da entrambe le parti inviando messaggi cifrati con la chiave di sessione .
Vulnerabilità
modificaIl protocollo è suscettibile ad attacchi di tipo replay.
Attacco Replay:
Se un attaccante conosce una vecchia chiave scambiata in una precedente esecuzione del protocollo, allora:
- può replicare il messaggio a Bob
- Bob accetta la chiave non sapendo che è compromessa (quindi non sa che la chiave non è nuova)
Soluzione:
utilizzare i timestamp all'interno dei messaggi (ciò si vedrà come si utilizza nel protocollo di rete Kerberos)
Il protocollo a chiave pubblica
modificaScenario
modifica- Alice ( ) e Bob ( ) sono due entità di rete che devono comunicare in modo sicuro utilizzando un collegamento di rete non sicuro.
- è un server che gode della fiducia di entrambi e si occupa di distribuire chiavi pubbliche su richiesta.
- e sono rispettivamente la chiave pubblica e la chiave segreta di Alice.
- e similmente sono le chiavi Bob.
- e similmente sono le chiavi del server.
È importante specificare che mentre Alice e Bob usano la chiave pubblica per cifrare e quella privata per decifrare, il server usa la chiave privata per cifrare e la chiave pubblica per decifrare; così facendo il server firma le proprie comunicazioni.
Descrizione
modificaAlice chiede al server la chiave pubblica di Bob:
Il server risponde, inviando anche l'identificativo di Bob per conferma. Alice può usare la chiave pubblica per verificare la firma di e verificarne l'autenticità confrontando l'id di Bob ricevuto con quello in suo possesso:
Alice genera un nonce e lo invia a Bob cifrandolo con la chiave appena ricevuta:
Bob decifra il messaggio mediante la sua chiave privata, vede che è di Alice e richiede la sua chiave pubblica al server:
Il server soddisfa la richiesta di Bob:
Bob genera un nounce e lo invia ad Alice insieme a , per provare che è in possesso della chiave privata :
Alice conferma a Bob per provare a sua volta che è in possesso della chiave privata
Da questo momento in poi Alice e Bob si sono autenticati a vicenda e sono gli unici a conoscenza di e .
Vulnerabilità
modificaIl protocollo è suscettibile ad attacchi di tipo man in the middle: un impostore può ingannare Alice e convincerla a iniziare una sessione di comunicazione con lui e successivamente inoltrare i messaggi a Bob convincendolo di essere in comunicazione con Alice.
A parte le comunicazioni con , che rimangono inalterate, l'attacco si svolge come segue:
Alice invia a , che decifra il messaggio con :
inoltra il messaggio a Bob, cifrandolo con la corrispettiva chiave pubblica, fingendo che sia Alice a voler comunicare con lui:
Bob risponde inviando . Questo messaggio arriva a , che non può decifrarlo perché non è in possesso di :
lo inoltra ad Alice:
Alice crede che sia il nounce di , quindi lo conferma come da protocollo:
Ora conosce , lo cifra con e invia a Bob, che vede una conferma valida.
agisce da "uomo nel mezzo" e intercetta tutti i messaggi di Bob, che crede di essere in comunicazione sicura con Alice.
L'attacco è stato descritto per la prima volta da Gavin Lowe nel 1995. La versione corretta del protocollo, chiamata Needham-Schroeder-Lowe, sostituisce il sesto messaggio
con
In questo modo Alice si può accorgere che i messaggi non arrivano dall'intruso, con cui aveva iniziato la comunicazione, ma da Bob.
Voci correlate
modificaAltri progetti
modificaWikimedia Commons contiene immagini o altri file su protocollo di Needham-Schroeder
Collegamenti esterni
modifica- (EN) Descrizione del protocollo a chiave segreta, su lsv.ens-cachan.fr.
- (EN) Descrizione del protocollo a chiave pubblica, su lsv.ens-cachan.fr.
- (EN) Descrizione del protocollo corretto da Lowe, su lsv.ens-cachan.fr.