Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luca Grilli
Premessa
Le comunicazioni sicure quasi sempre richiedono una stretta di mano (handshake) preliminare per autenticare le parti comunicanti
spesso necessario anche proteggere integrit e/o confidenzialit delle informazioni trasmesse
Lautenticazione richiede lo scambio di particolari messaggi tra le parti, e la conoscenza di particolari informazioni, alcune delle quali devono essere segrete Tutti questi aspetti vengono definiti nel protocollo
Propriet di un protocollo
Oltre alla sicurezza sono importanti anche le prestazioni, ovvero lefficienza del protocollo Lefficienza data da
numero di messaggi compattezza dei messaggi costo computazionale risorse di calcolo richieste
dei vincoli progettuali relativi allambiente di uso e se gli utenti sono disposti a seguire le politiche di sicurezza
Rimossa una falla, si ricomincia daccapo e ci si arresta quando non ci sono pi falle (tra quelle note!)
conoscere le possibili falle cruciale sia per progettare protocolli sicuri, sia per comprendere protocolli noti
ad esempio i protocolli basati su password che non includono alcun meccanismo di cifratura
Alice (liniziatore) invia a Bob il suo nome e la password in chiaro attraverso la rete Bob verifica nome utente e password, in caso affermativo la comunicazione prosegue, senza alcuna ulteriore attenzione alla sicurezza (nessuna cifratura, nessun controllo di integrit crittografico)
f(KAlice-Bob, R): quantit ottenuta applicando ad R una trasformazione crittografica dipendente dal segreto
cio f(KAlice-Bob, R) pu essere sia KAlice-Bob{R} sia h(KAlice-Bob, R)
a challenge R
f(KAlice-Bob, R)
Prot. 1 Debolezze
Non c mutua autenticazione
Bob autentica Alice, ma non il viceversa
se Trudy pu ricevere i pacchetti inviati allindirizzo di rete di Bob, e rispondere con lindirizzo di rete di Bob (o attraverso altri mezzi convince Alice che il suo indirizzo quello di Bob) Alice sar ingannata creder che Trudy Bob Trudy non ha bisogno di conoscere il segreto condiviso KAlice-Bob per impersonare Bob deve solo limitarsi ad inviare ad Alice una qualsiasi vecchia sfida R e ignorare la sua risposta
Prot. 1 Debolezze
Se questo lintero protocollo
cio se non prevista una protezione della confidenzialit del resto della conversazione
allora Trudy pu dirottare la conversazione dopo lo scambio iniziale, assumendo che sia in grado di generare pacchetti aventi per source address lindirizzo di Alice (IP spoofing) potrebbe anche essere utile, ma non essenziale, per Trudy, poter ricevere pacchetti indirizzati ad Alice
Prot. 1 Debolezze
Se il segreto condiviso KAlice-Bob fosse derivato da una password,
allora conoscendo R, f(KAlice-Bob, R) e lalgoritmo per ottenere la chiave dalla password, un intercettatore potrebbe sferrare un attacco offline sulla password
sceglie una parola w, quale password candidata calcola la relativa chiave segreta Kw e verifica se f(Kw, R) = f(KAlice-Bob, R) in caso negativo ritenta
Prot. 1 Debolezze
Qualcuno che accede (in lettura) al server Bob potrebbe ottenere KAlice-Bob
ci particolarmente rischioso se KAlice-Bob derivata da una password, e le password sono memorizzate in un database di Bob
proteggere il database implica proteggere tutti i suoi backup impedendone laccesso fisico o cifrando il contenuto e proteggendo in qualche modo la chiave di cifratura
Prot. 1 Impiego
Nonostante i precedenti svantaggi, se le risorse per aumentare la sicurezza sono molto limitate, il protocollo 1 costituisce unalternativa molto pi sicura rispetto ad inviare password in chiaro
anche se KAlice-Bob viene derivata dalla password
KAlice-Bob{R}
R
Prot. 2 vs Prot. 1
Prot. 2 richiede luso di operazioni crittografiche invertibili
Prot. 1 pu implementarsi usando solo algoritmi di hash; in genere gli algoritmi di hash offrono migliori prestazioni e maggior portabilit
Prot. 2 vs Prot. 1
Se R una quantit riconoscibile con tempo di vita limitato; ad esempio R = random||timestamp anche Alice pu autenticare Bob (autenticazione mutua)
infatti, soltanto chi conosce KAlice-Bob pu generare KAlice-Bob{R} = KAlice-Bob{random||timestamp}
essenziale che R abbia una durata temporale molto limitata per evitare che KAlice-Bob{R} possa essere riciclato da un falso Bob
Alice
Bob autentica Alice sfruttando la sincronizzazione degli orologi e un segreto condiviso KAlice-Bob
Bob
Im Alice, KAlice-Bob{timestamp}
Prot. 3 vs Prot. 1
il prot. 3 pu facilmente rimpiazzare un protocollo non crittografico in cui la password inviata in chiaro
non necessario aggiungere lo scambio di ulteriori messaggi
Prot. 3 vs Prot. 1
qualcuno potrebbe impersonare Alice intercettando e riusando KAlice-Bob{timestamp}
tale attacco va per eseguito subito dopo aver intercettato KAlice-Bob{timestamp}; il timestamp generato dal server Bob non deve essere troppo diverso da quello di Alice un modo per sventare tale minaccia memorizzare nel server Bob tutti i timestamp ricevuti e non ancora scaduti
si ha unaltra potenziale debolezza se Alice usa lo stesso segreto KAlice-Bob con pi server distinti
un intercettatore che opera in modo veloce pu ottenere la quantit KAlice-Bob{timestamp} trasmessa ad un server per impersonare Alice con un altro server
Prot. 3 vs Prot. 1
tuttavia, tale minaccia sventabile concatenando il nome del server con il timestamp anzich KAlice-Bob{timestamp} va inviato KAlice-Bob{Bob||timestamp}
Prot. 3 vs Prot. 1
nel prot. 1, calcolare f(KAlice-Bob, R) voleva dire
calcolare KAlice-Bob{R} oppure calcolare lhash h(R||KAlice-Bob)
ci continua a valere nel caso del prot. 3, ma con piccole complicazioni aggiuntive se si usa lhash
Bob deve eseguire un certo numero di tentativi per verificare che h(timestamp||KAlice-Bob) sia stato generato da Alice, se si accettano 10 minuti di differenza tra i due orologi e il timestamp espresso in minuti allora 20 tentativi sono sufficienti ma per timestamp in microsecondi sono necessari pi di un miliardo di tentativi!
Protocollo 4
assumendo che si voglia utilizzare un timestamp in microsecondi e una funzione di hash anzich una funzione crittografica invertibile una possibile soluzione che Alice trasmetta anche il timestamp non cifrato
Alice
Im Alice, timestamp, hash(KAlice-Bob, timestamp)
Bob autentica Alice calcolando lhash di un timestamp ad alta risoluzione e sfruttando un segreto condiviso KAlice-Bob
Bob
R
[R]Alice
Protocollo 5
[R]Alice: R firmato da Alice; cio cifrato con la sua chiave privata PRAlice
Bob verifica la firma [R]Alice usando la chiave pubblica di Alice PUAlice ed accetta il login se il risultato R
il vantaggio di questo protocollo che il database di Bob non pi vulnerabile agli accessi in lettura non autorizzati tuttavia, il database di Bob va comunque protetto da modifiche non autorizzate, ma non da accessi non autorizzati in lettura
qualcuno potrebbe modificare la chiave pubblica di Alice!
{R}Alice
R
Bob autentica Alice se lei pu decifrare un messaggio cifrato con la sua chiave pubblica
Sfide R strutturate
ad esempio la struttura di R dovrebbe prevedere un campo type, da concatenare con il messaggio vero e proprio, che dipende dal tipo di protocollo/applicazione
in questo modo il protocollo incorporato nella firma quindi non possibile passare da un protocollo allaltro senza violare il contenuto nel campo type
nel caso di RSA, tali aspetti sono definiti nello standard PKCS
Osservazioni
si noti pertanto che valgono le seguenti considerazioni
possibile progettare singoli protocolli sicuri, che complessivamente introducono delle vulnerabilit (prima assenti) possibile progettare un nuovo protocollo sicuro il cui dispiegamento potrebbe compromettere la sicurezza degli schemi esistenti
Alice
R2 f(KAlice-Bob, R2)
Bob
f(KAlice-Bob, R1)
Trudy
Trudy
Trudy (sessione 2)
Tale attacco pu essere sventato con un po di attenzione e comprendendo bene la debolezza che sfrutta ovvero che Alice e Bob sono perfettamente interscambiabili
la risposta ad una stessa sfida identica
Usare risposte dipendenti dal risponditore la risposta non consiste nella cifratura della sola sfida, ma viene aggiunta uninformazione associata in modo univoco al risponditore
ad esempio, la risposta ad una sfida R non semplicemente f(K, R) ma f(K, R||nome-id-risponditore)
Domanda
Il protocollo 7 vulnerabile ad un attacco di tipo reflection? Per quale ragione? La risposta NO
tale protocollo segue infatti un altro importante principi generale: idealmente, liniziatore dovrebbe essere il primo a provare la sua identit
Trudy pu eseguire un attacco off-line sulla password senza dover intercettare alcuna comunicazione tra Alice e Bob (tale vulnerabilit non esiste nel protocollo 7)
Trudy deve solo inviare un messaggio a Bob affermando di essere Alice e includere un numero R da cifrare (attacco di tipo testo in chiaro selezionato) ottenendo pertanto la coppia R, f(KAlice-Bob, R) che pu essere utilizzata per indovinare la password
Prot. 9
aggiungendo un messaggio al protocollo 8 possibile renderlo molto pi robusto ad attacchi off-line sulla password
il nuovo protocollo chiaramente meno efficiente
Im Alice
Alice
R1
f(KAlice-Bob, R1), R2 f(KAlice-Bob, R2)
Bob
Prot. 9
ora Trudy non pu pi effettuare un attacco off-line sulla password semplicemente spacciandosi per Alice, senza dover intercettare i messaggi
tuttavia, impersonando lindirizzo di Bob pu tentare di ingannare Alice facendogli stabilire una connessione con lei tale vulnerabilit non va ignorata, ma comunque molto pi difficile da sfruttare per un attaccante
R2, {R1}Alice
R1 Mutua autenticazione a chiave pubblica (basata sulla cifratura/decifratura)
R1, [R2]Bob
[R1]Alice Mutua autenticazione a chiave pubblica (basata sulla firma digitale)
(b) un altro problema il recupero della chiave privata di Alice PRAlice considerando che Alice pu, al massimo, ricordare una password
convertire una password in una chiave segreta fattibile in modo efficiente convertire invece una password in una coppia PU, PR non altrettanto semplice
la soluzione generalmente adottata per il problema b) consiste nel recuperare PRAlice da un servizio di directory o, in alcuni casi, da Bob stesso
Alice
Mutua autenticazione basata sulla sincronizzazione degli orologi e su un segreto condiviso KAlice-Bob
nella risposta viene richiesto un timestamp diverso, cio timestamp + 1 ovviamente, sono possibili altre soluzioni
usare chiavi diverse per cifrare il timestamp concatenare il proprio nome al timestamp prima di applicare f( ) o in generale, rendere la risposta delliniziatore e del risponditore non interscambiabili
lidea di usare timestamp + 1 stata introdotta nel protocollo Needham-Schroeder e ripresa in Kerberos V4 non si tratta per della scelta migliore
Trudy intercettando la risposta di Bob potrebbe riusarla per impersonare subito dopo Alice Bob potrebbe mantenere in cache tutte le coppie timestamp, timestamp + 1 incontrate, ma tale soluzione non elegante
Mutua autenticazione basata sulla sincronizzazione degli orologi e su un segreto condiviso KAlice-Bob
si illustrer come utilizzarla per cifrare e/o aggiungere dei controlli di integrit crittografici
in ogni caso, c sufficiente informazione per stabilire una chiave di sessione condivisa
Im Alice
Alice
KAlice-Bob{R}
Bob
Alice
KAlice-Bob{R}
Bob
Risposta
KAlice-Bob{R} non pu utilizzarsi perch trasmessa da Alice nel terzo messaggio dellhandshake!
Risposta
Tale chiave di sessione non sicura per una ragione molto sottile
si supponga che Alice e Bob abbiano iniziato una conversazione e Bob abbia inviato R come sfida Trudy potrebbe aver registrato lintera conversazione, cifrata con Ks = KAlice-Bob{R+1}
Alice
R+1 KAlice-Bob{R+1}
per definire una chiave (segreta) di sessione condivisa Ks esistono varie possibilit
Im Alice, {R2}Bob
Alice
R1, {R}Bob
Ks = R
Bob
R2, {R1}Alice
Alice
R1, [{R}Bob]Alice
Ks = R
Bob
R2, {R1}Alice
ora non pu funzionare perch Trudy non in grado di forgiare la firma di Alice tuttavia, se si vuole essere paranoici, c ancora una piccola vulnerabilit
che pu essere ridotta parzialmente (vedi caso (3)) o del tutto (vedi caso (4))
Alice genera una quantit random R e invia {R}Bob a Bob Bob genera una quantit random P e invia {P}Alice a Alice terminata la conversazione Alice e Bob dimenticheranno R e P
Im Alice, {R2}Bob
Alice
Bob
genera P
genera R
Ks = R P
Alice
Bob
genera P
genera R
Ks = R P
(3) vs (2)
Domanda
nel caso (2) Alice deve firmare la sua quantit (Alice invia [{R}Bob]Alice) invece di inviare direttamente {R}Bob Perch nel caso (3) ci non necessario?
(3) vs (2)
Risposta
Alice e Bob non hanno bisogno di firmare le quantit da loro inviate poich, anche se Trudy riesce a sostituire {R}Bob con una quantit a lei nota {R}Bob non sarebbe comunque in grado di ottenere la chiave di sessione che vedrebbe Bob, cio Ks = R P
per ottenere P Trudy dovrebbe decifrare {P}Alice
al massimo, Trudy pu impedire che Alice e Bob dialoghino (attacco DoS), ma non pu ottenere il testo in chiaro di una loro conversazione
Alice
[TB]Bob
Bob
Im Alice, [TA]Alice
pertanto, lautenticazione crittografica unidirezionale il protocollo assicura il client (Alice) che sta contattando il server Bob giusto, ma terminato la scambio di autenticazione, che permette tra laltro di definire una chiave di sessione, il server non ha ancora autenticato il client
Alice
RA
Ks = R
Bob
il caso (b) rispetto al caso (a) un po pi sicuro Trudy non pu ottenere la chiave di sessione Ks usata in una precedente conversazione neanche violando Bob
si assuma che Bob dimentichi Ks non appena la conversazione con Alice termina
Alice
Bob
Im Alice, TA [TB]Bob
Confidenzialit e Integrit(Autenticit)
Tipicamente, la conversazione che segue lo scambio di autenticazione viene cifrata con la chiave di sessione per proteggere la confidenzialit inoltre viene applicato un controllo di integrit ai vari messaggi trasmessi (MIC o MAC)
ottenuto con tecniche crittografiche a chiave segreta oppure sfruttando degli algoritmi di digest
si visto che non esiste un algoritmo standard per proteggere contemporaneamente confidenzialit e integrit disponendo di una sola chiave (la chiave di sessione Ks) ed effettuando una singola operazione crittografica
Confidenzialit e Integrit(Autenticit)
pertanto si applicano alcune delle seguenti soluzioni che proteggono confidenzialit ed integrit in due fasi
ii) derivare una chiave dallaltra, cambiando alcuni bit in modo deterministico Ksi = f(Ksc) iii) una sola chiave Ks, ma algoritmi crittografici distinti
ad esempio, confidenzialit tramite AES/CBC integrit tramite HMAC
Confidenzialit e Integrit(Autenticit)
iv) includere un checksum debole per lintegrit allinterno di un algoritmo robusto per la protezione della confidenzialit
una volta stabilit una (o pi) chiave di sessione la conversazione, generalmente, consiste nello scambio di messaggi singolarmente cifrati e dei relativi MAC ogni volta che una parte riceve un messaggio lo decifra ed esegue il controllo di autenticit poi, eventualmente, pu proseguire la conversazione
Attacchi allintegrit
manca un controllo sullordine dei messaggi scambiati; sono possibili pertanto attacchi allintegrit di tipo replay
un attaccante potrebbe registrare un messaggio (e il relativo MAC) e poi effettuarne il replay in un secondo momento; ci non sarebbe rilevabile
Attacchi allintegrit
in alternativa, si pu far dipendere il MIC (MAC) di un messaggio m, oltre che da m stesso, anche da tutti i precedenti messaggi scambiati
se mi = mj ci non implica che MAC(mi) = MAC(mj)
Attacchi allintegrit
lattacco allintegrit di tipo reflection pu evitarsi
usando, per ciascuna direzione, dei range diversi per i numeri di sequenza oppure inserendo un flag che definisce la direzione o differenziando in modo minimo lalgoritmo per il calcolo dl MAC per le due direzioni
Key Rollover
Il modo pi semplice per rinegoziare la chiave il seguente
una della due parti sceglie una chiave random Ks la cifra con la vecchia chiave Ks e invia allaltra parte Ks{Ks}
il rollover della chiave permette, tra laltro, di scegliere la vecchia chiave per lintegrit e la nuova per la confidenzialit
il KDC entra in gioco quando un utente Alice, desidera ottenere una chiave segreta KAB da condividere con un altro utente Bob del KDC non potendo Alice e Bob comunicare direttamente il KDC funge da mediatore
Alice
KDC
Bob
le uniche parti che conoscono KAB dopo questo scambio sono Alice, Bob e il KDC pertanto, dopo lo scambio Alice e Bob possono autenticarsi reciprocamente utilizzando il segreto condiviso KAB il protocollo precedente per non quello utilizzato nella pratica
se Alice invia immediatamente un messaggio a Bob per i ritardi nella rete, possibile che questi arrivi prima del messaggio che il KDC ha inviato a Bob
siccome Alice che desidera comunicare con Bob la cosa pi ragionevole, che il KDC fornisca ad Alice tutte le informazioni che egli avrebbe fornito a Bob per instaurare una connessione sicura con Alice nel protocollo Kerberos, linformazione cifrata che il KDC invia ad Alice da passare a Bob chiamata ticket
il cosiddetto ticket per Bob
KDC
Alice
Bob
KAlice{use KAB for Bob} ticket to Bob = KBob{use KAB for Alice}
Il protocollo di Needham-Schroeder [NEED78] importante perch un classico protocollo di autenticazione mediata da un KDC e a lui si sono ispirati molti protocolli moderni, incluso Kerberos per una sua comprensione, al solito, necessario analizzarlo in modo viscerale
si supponga che Trudy abbia rubato una vecchia chiave di Bob KBob
Bob scoprendolo potrebbe gi aver provveduto a cambiarla
e che abbia anche rubato un vecchio messaggio di risposta del KDC ad Alice
quando la chiave di Bob era ancora KBob
Trudy attende che Alice richieda al KDC di parlare con Bob poi sostituisce la risposta del KDC con quella vecchia in suo possesso, che appare ad Alice come una risposta ordinaria
questa vulnerabilit, prevalentemente teorica, pu essere rimossa non permettendo a Trudy di riusare (reply) vecchie risposte del KDC ad esempio aggiungendo un nounce N1 alla richiesta iniziale di Alice e chiedendo al KDC di cifrarlo insieme alla chiave KAB
KDC
Alice
Protocollo 12.1
Bob
inoltre il KDC pu aggiungere il nome dellutente che ha effettuato la richiesta tra le informazioni che costituiscono il ticket per Bob
il motivo di tale scelta sar chiaro pi tardi
KDC
Alice
Protocollo 12.2
Bob
Alice
Protocollo 12.3
Protocollo di Needham-Schroeder
Il protocollo di Needham-Schroeder in pratica concide con il Prot. 12.3
tranne per il fatto che il KDC include il ticket per Bob tra le informazioni da cifrare con KAlice si osservi che ci non migliora la sicurezza in quanto il ticket per Bob qualcosa di indecifrabile per Alice tale ulteriore cifratura poteva pertanto omettersi
Protocollo di Needham-Schroeder
KDC
m1
N1, Alice wants Bob KAlice{N1, Bob, KAB, ticket to Bob} m 2 where ticket to Bob = KBob{KAB, Alice}
Alice
m3
m5
Needham-Schroeder
Bibliografia
[DES81] DES Modes of Operation, FIPS PUB 81, National Bureau of Standards, U.S. Department of Commerce, 1981. [KPS02] C. Kaufman, R. Perlman, M. Speciner. Network Security Private Communication in a Public World. Prentice Hall.
[NEED78] R. M. Needham, M. D. Schroeder. Using Encryption for Authentication in Large Networks of Computers. Communications of the ACM, Vol. 21, December 1978, pp. 993-999.
[PFL08] C. P. Pfleeger, S. L. Pfleeger. Sicurezza in Informatica. Pearson, Prentice Hall. [STA07] W. Stallings. Sicurezza delle reti. Pearson, Prentice Hall. [Wiki-it] http://it.wikipedia.org/wiki/
[Wiki-en] http://en.wikipedia.org/wiki/
[ISECOM] Institute for Security and Open Methodologies