Università degli Studi “Gabriele d’Annunzio” Facoltà di Economia Corso di Laurea in Economia Informatica Specialistica Sicurezza e Privacy Protocolli che sfruttano la condivisione di chiavi crittografiche 5 dicembre 2007 Marco Bottalico Introduzione La maggior parte dei protocolli per la costituzione di chiavi ed entità di autenticazione, si concentrano sul caso in cui ci sono 2 user che vogliono comunicare o stabilire una chiave di sessione: CASO DELLE 2 PARTI Qui discuteremo la creazione della “chiave delle 2 parti” e i protocolli di autenticazione basati su algoritmi simmetrici. Classificare la creazione di protocolli “chiave delle 2 parti” Chiavi crittografiche disponibili a priori I due soggetti condividono gia la chiave segreta Ogni soggetto condivide una chiave con uno o più server di fiducia Metodo di generazione di una chiave di sessione: problemi Key transport Key agreement Hybrid Tre classi di protocolli Protocolli finalizzati a fornire entità di autenticazione senza creazione di una chiave Protocolli che mirano a fornire la creazione di chiavi senza l’appoggio di un server, con protocolli di trasporto e di accordo sulle chiavi Protocolli che puntano a fornire la creazione di chiavi usando un server, con protocolli di trasporto, di accordo e protocolli ibridi sulle chiavi Notazione M K Denota che parte del messaggio è cifrato. M è il dato di input criptato con algoritmo simmetrico che è stato parametrizzato per mezzo di una chiave segreta K che prevede confidenzialità ed integrità M KSarà ad indicare che la criptazione del messaggio M con la chiave K fornisce solo la confidenzialità M K Indicherà una trasformazione unidirezionale del messaggio M con chiave K che fornisce solo l’integrità INTEGRITA’ : protezione dei dati e delle informazioni nei confronti delle modifiche del contenuto, accidentali oppure effettuate da una terza parte CONFIDENZIALITA’: protezione dei dati e delle informazioni scambiate tra un mittente e uno o più destinatari nei confronti di terze parti. Tale protezione deve essere realizzata a prescindere dalla sicurezza del sistema di comunicazione utilizzato Prima classe di protocolli Protocolli finalizzati a fornire entità di autenticazione senza creazione di una chiave Protocolli che mirano a fornire la creazione di chiavi senza l’appoggio di un server, con protocolli di trasporto e di accordo sulle chiavi Protocolli che puntano a fornire la creazione di chiavi usando un server, con protocolli di trasporto, di accordo e protocolli ibridi sulle chiavi Protocolli con autenticazione di identità Nel 1993 IBM fu la prima a dimostrare un’amplia classe di protocolli di autenticazione. Il primo fu proposto da Bird: A invia a B la sua “nonce” (NA) u e v sono 2 funzioni tali che KAB è necessario per calcolarle e non viene rilevato A B : NA B A : N B , u K AB , N A A B : vK AB , N B Se I (intruder) vuole attaccare il protocollo, e le funzioni u e v sono uguali, comincia un protocollo con B mascherandosi da A e fa la stessa cosa con A mascherandosi da B (sessioni parallele). In questo modo I potrà sembrare agli occhi di B di essere A. I A B : NI L’attacco ha dimostrato che le funzioni B I A : N B , u K AB , N I u e v devono essere diverse. IB A : NB A I B : N A , u K AB , N B I A B : u K AB , N B Bellare-Rogaway MAP1 è un protocollo di autenticazione reciproco dove si fornisce una definizione formale di combinazioni di conversazioni. (KAB è la chiave condivisa da entrambi a priori) A B : NA B A : N B , B, A, N A , N B K AB A B : A, N B K AB EVE 1 Protocol è sostanzialmente uguale a MAP1 solo che le identità di A e B sono scambiate nelle righe. I mascherato da B comincia sia il protocollo MAP1 con A e, in parallelo, inizia anche EVE1 sempre con A. Il questo modo riuscirà ad avere le chiavi di A. Lo standard internazionale ISO/IEC 9798 parte 2, specifica 6 protocolli che usano algoritmi di criptazione simmetrica: 4 forniscono solo entità di autorizzazione 2 realizzano scambio di chiavi che gia possiedono, oltre che fornire entità di autorizzazione I due ricercatori Woo e Lam crearono un protocollo di autenticazione unilaterale che fa uso di un server. Esso è solo centro per la traduzione delle chiavi: B sceglie il suo NB e sfida A a criptarlo con KAS. Alla ricezione della codifica, B chiede a S di crittarlo con KBS che lui può decrittare e controllare Comparazione tra protocolli Protocol Entità di autenticazione Prova di sicurezza? Attacchi provati Bird MAP1 A+B A+B B B A+B A+B B No Si No No No No No Si Si No No No No Si Unilaterale, 1 passo Unilaterale, 2 passi Bilaterale, 2 passi Bilaterale, 3 passi Woo-Lam Seconda classe di protocolli Protocolli finalizzati a fornire entità di autenticazione senza creazione di una chiave Protocolli che mirano a fornire la creazione di chiavi senza l’appoggio di un server, con protocolli di trasporto e di accordo sulle chiavi Protocolli che puntano a fornire la creazione di chiavi usando un server, con protocolli di trasporto, di accordo e protocolli ibridi sulle chiavi Protocolli per la creazione di chiavi senza server È necessario che due utenti condividano una chiave segreta (K ). Possono inoltre entrambi richiedere che un utente generi una nuova chiave di sessione (K’ ) o entrambi forniscano quote per stabilirla. AB AB A B : N A K AB B A : N A 1, N B K AB A B : N B 1K AB A B : N A K AB B A : N A 1, N B K AB A B : N B 1K AB B A : K ' AB , N ' B K AB I B A : N A 1, N B K AB RPC Protocol dove A e B compiono prima un handshacking usando una chiave che gia condividono (KAB) e poi B manda ad A una nuova chiave di sessione K’AB . Il nonce NA ed il nonce NB+1 sono scelti da A, mentre N’B è scelto da B (non casualmente). ATTACCO su B: un intruso registra il messaggio 2 e lo sostituisce al 4 forzando A ad accettare una chiave di sessione che lui gia possiede. In questo modo, NA+1 diventa la chiave di sessione (che I sà) per scambiarsi messaggi con B. Questo è possibile se il nonce è prevedibile come un contatore (NA+1 ) mentre se esso è random, l’attacco è più difficile. A B : A, N A B A : AUTH , MASK K ' AB A B : N A , K ' AB , A K AB AUTH N A , K ' AB , B K AB MASK AUTH K AB 2PKDP Protocol di Janson-Tsudik usa 2 algoritmi di crittografia separati: uno garantisce confidenzialità (basato sullo XOR) ed uno autenticazione (che usa algoritmi MAC) Boyd Protocol consente ad entrambi (A & B) di aggiungere delle parti alla chiave stabilita. I messaggi che si scambiano, fanno uso di numeri casuali. Lo standard internazionale ISO/IEC 11770-2 specifica 13 protocolli che usano algoritmi di criptazione simmetrici di cui 6 sono senza l’appoggio di un server e altri 7 contano su un server di fiducia (trattati alla fine). 2 forniscono solo una chiave di autenticazione implicita passandosi messaggi ed una funzione di derivazione per risalire alla nuova chiave di sessione. TA è un contatore inizializzato da A K’AB= f (KAB,TA) 4 sono una derivazione della specifica ISO/IEC 9798-2 aggiungendo una chiave per ogni messaggio criptato. Comparazione tra protocolli Protocol Numero di passi Chi possiede la chiave di controllo RPC Andrew 4 3 2 1 1 1 2 2 3 B B A/B A A A B A/B A/B Janson-Tsudik Boyd 11770-2,1 11770-2,2 11770-2,3 11770-2,4 11770-2,5 11770-2,6 Freschezza Autentica della chiave zione della chiave No Si Si Si No Si Si Si Si Si Si Si Si Si Si Si Si Si Confi denzia lità At tac co No Si No B No B B A A Si No No No No No No No No Considerazioni 1. 2. La chiave di conferma deve essere ottenuta per mezzo di un responsabile poiché, il destinatario sa chi ne è in possesso: se il destinatario è I, lui sa chi ha la chiave, deve solo riuscire ad averla. Nessuno di questi protocolli fornisce la conferma della chiave. Terza classe di protocolli Protocolli finalizzati a fornire entità di autenticazione senza creazione di una chiave Protocolli che mirano a fornire la creazione di chiavi senza l’appoggio di un server, con protocolli di trasporto e di accordo sulle chiavi Protocolli che puntano a fornire la creazione di chiavi usando un server, con protocolli di trasporto, di accordo e protocolli ibridi sulle chiavi Protocolli per la creazione di chiavi con l’ausilio di un server Molti protocolli, assumono implicitamente che gli utenti non sono capaci di generare ottime chiavi di sessione e lasciano fare questo lavoro ai server. A & B sono due utenti che desiderano istituire una chiave di sessione S è il server condiviso K ,K sono le chiavi gia condivise tra A ed S e tra B ed S KAB è la chiave di sessione che dovrà essere istituita tra A & B AS BS A S : A, B, N A S A : N A , B, K AB, K AB , AK BS A B : K AB , AK BS B A : N B K AB A B : N B 1K AB A,B,NA K AS KAB A KAB, A NB NB-1 B Needham-Schroedler Protocol, realizza buone proprietà di chiave nel rispetto di A ma non in quello di B poiché, il secondo messaggio, crittato con la chiave segreta di A, include sia il nonce di A ma anche l’identità di B, assicurando ad A una chiave di sessione nuova KAB (prima non la possedeva) ed una chiave di autenticazione KBS nuova. B decripta il messaggio proveniente da A usando KBS e poi manda ad A il suo nonce per essere sicuro che il messaggio non è una replica. ATTACCO: l’handshake può essere sabotato da un intruso Per ovviare a questa situazione Demming & Sacco hanno introdotto un contatore per permettere di verificare la freschezza della chiave mandata. Otway-Rees Protocol fornice simmetriche assicurazioni di freschezza di chiave (sia per A che per B) per mezzo di una seconda nonce generata da A. Il protocollo è stato successivamente modificato sia da Barrows che da Abadi & Needhman. Kerberos Protocol fu sviluppato dal MIT per proteggere i fornitori dei servizi di rete nell’ambito del progetto ATHENA, a partire dai protocolli di Needham-Schroeder & Denning-Sacco. Le 2 principali versioni sono: Kerberos Versione 4 la cui debolezza è che i metodi di criptazione utilizzati, non forniscono un’adeguata protezione d’integrità dei messaggi. Usa il “Plaintext Cipher Block Chaining encryption”. Kerberos Versione 5 usa CBC e fissa una checksum nel messaggio prima di criptarlo per fornire protezione d’integrità. A,B,NA {KAB,B,L,NA}KAS, {KAB,A,L}KBS S (ticket) A {A,TA}KAB , (autenticatore) Il protocollo Kerberos coinvolge : {KAB,A,L}KBS (ticket) B Un utente che desidera usufruire di certi servizi (A ) Un server che fornisce questi servizi (B ) Un server di autenticazione (S ) che viene contattato dall’utente prima di accedere al server B. L’utente A chiede al server S di poter contattare il server B in sicurezza. S gli rilascia tra le altre cose un “ticket” che non può aprire. A lo invia a B . Esso contiene: le chiavi di sessione generate da S per comunicare con B l’identità dell’utente A un timer dopo il quale le variabili di sessione non saranno più valide. L’autenticatore contiene: l’identità dell’utente un marcatore orario che serve al server per capire severamente l’utente è in possesso della chiave di sessione fresca, contenuta nel ticket Lo standard internazionale ISO/IEC 11770-2 specifica 7 protocolli basati su server. 4 si basano sul fatto che il server sceglie la chiave di sessione ed è considerato solo un centro per la distribuzione delle chiavi. 3 fanno in modo che la chiave di sessione è scelta da A o da B ed il server è considerato un centro per la traduzione delle chiavi facendo si che esse siano disponibili per tutti i richiedenti. Wide-Mouthed-Frog Protocol dovuto a Burrows, non si basa sulla solita convinzione che gli utenti si fidino solo di un server per scegliere la chiave di sessione ma, al contrario, è inteso per un ambiente in cui gli utenti si fidino gli uni degli altri Yahalom Protocol è usato come protocollo di riferimento per fare ricerca sugli attacchi e testare nuove tecniche. Questo perché, avendo una struttura particolare, è molto soggetto ad attacchi subdoli. Janson-Tsudik 3PKDP Protocol usa 2 esecuzioni del protocollo di base 2PKDP: la prima tra A ed S e la seconda tra B ed S . Il protocollo raggiunge sia per A che per B , gli obiettivi di costituzione della chiave e quelli autenticazione dell’entità. A B : A, N A , N A' B S : A, B, N A , N B S B : AUTH A , MASK A K AB , AUTH B , MASK B K AB B A : AUTH A , MASK A K AB , N A' , N B' , B K AB , N B' A B : N A' , N B' , A K AB Bellare-Rogaway 3PKD Protocol usa due trasformazioni crittografiche diverse: ● un algoritmo di criptazione simmetrica ● un MAC algorithm La funzione di criptazione è derivata da una funzione chiave pseudorandom fK . La criptazione di un messaggio m usando f sotto una chiave condivisa K , è r, m f K r dove r è un numero random. L’algoritmo fornisce sia ad A che a B l’autenticazione della chiave e la sua freschezza, ma non dà entità di autenticazione è conferma della chiave. A B : NA AB : BA, B, A, S , A, K1 , B, TA K AS AS: N A B : A, B, N A , N B K AS S B : S , B, A, K1 , B, TS K BS B S : A, B, N A , N B K AS , A, B, N A , N B K BS BS BA,,SN,B ,BK,ABKK2 ,, AA,,TNBA ,NKBBS, K AB K BS: :B ,N AS A : B, N A , N B , K AB K , N A , N B K SB A : S , A, B, K 2 , A, TS K AS A B : N B K AB AS BS AB Woo-Lam Protocol realizza una reciproca entità di autenticazione e la costituzione delle chiavi: A e B si scambiano nonce prima di contattare il server. Questo permette ad entrambi di includerli nel messaggio criptato mandato ad S . ATTACCO: B forza A ad accettare due copie della stessa chiave di sessione come una nuova. Gong Protocol è basato sull’accordo delle chiavi. La chiave di sessione è derivata dalle informazioni fornite da A e da B e non dal server S . La parte ciptata del messaggio, include marcatori orari o delle nonce per garantire la freschezza della chiave. K1 e K2 sono numeri random che servono per realizzare le chiavi di sessione da parte di A e B . Essi la elaborano a partire da f(K1 ,K2) dove f è una funzione unidirezionale. AA BS :: AA,,BB,,NNAA BS , B, B , N, K KBAS , A, B, K S K BS , N A SB::AA A ,SN SB f , N S ,, B BA::NA KS ,N B ,, AN, KBS , NK AB , H A , H B , g K AB , H A , H B , K BS B A : NS , H B A B : N B K AB A B: HA A K AB B Output di f (NS,NA,B,KBS) =g (K’AB,H’A,H’B,KBS) Boyd Protocol fornisce autenticazione, freschezza e conferma di chiave in soli 4 messaggi. Sia gli utenti che il server, contribuiscono al valore della chiave. ● NA & NB sono generati da A e B come input per la funzione MAC che determina le chiavi di sessione. ● S genera un KS che serve per la chiave MAC ● A & B calcolano la chiave di sessione come KAB=MACK (NA,NB) Gong Hybrid Protocol nel quale si hanno 2 funzioni unidirezionali : ● g è usata per l’autenticazione ● f è usata per la chiave di derivazione (divisa in 3 componenti) ATTACCO: Se A ha cominciato il protocollo con B e registra la risposta dal server a B, entra in possesso del valore e completa l’attacco forzano B ad accettare una vecchia chiave. S S K AS Terza classe di protocolli Protocolli finalizzati a fornire entità di autenticazione senza creazione di una chiave Protocolli che mirano a fornire la creazione di chiavi senza l’appoggio di un server, con protocolli di trasporto e di accordo sulle chiavi Protocolli che puntano a fornire la creazione di chiavi usando più di un server, con protocolli di trasporto, di accordo e protocolli ibridi sulle chiavi. Protocolli per la creazione di chiavi con l’ausilio di più server Ci sono essenzialmente due benefici nell’utilizzo di più server per l’autenticazione di utenti: 1. Se uno o più server non sono disponibili, può comunque essere possibile per l’utente stabilire una chiave di sessione. 2. Se uno o più server sono inaffidabili, gli utenti possono comunque istituire una buona chiave di sessione con gli altri rimasti. A X=(x1,x2,x3,x4,x5) B Y=(y1,y2,y3,y4,y5) Gong propose molti protocolli basati su multi server ma tutti con le stesse caratteristiche: A & B scelgono come comporre le loro chiavi (K ) & (K ) e le A,i B,i condividono con i loro rispettivi server. Gli n server (S1,S2,…,Sn) sono un centro di trasferimento chiavi per consentire che esse siano disponibili tra i vari utenti. Il concetto fondamentale è che la chiave può essere recuperata se qualche server risulta non disponibile. Questo è possibile perché A & B scelgono x e y rispettivamente private, le dividono in quote e le distribuiscono ai vari server. Alla ricezione da parte di tutti i server, A è capace di ritrovare la Y segreta di B e viceversa. Per prevenire che un server maligno venga in possesso delle chiavi, A & B realizzano una checksum incrociata per tutte le condivisioni e la comparano con quella ricevuta dal server incriminato. Se il risultato è uguale, allora danno al server un credito e alla fine trattiene soli i server con i più alti crediti. In sostituzione si possono usare anche le nonce. Il numero di messaggi mandati in totale è 2n+3. Richiesta chiavi Chen-Gollmann-Mitchell Protocol: ● La scelta delle chiavi viene effettuata dai server (in Gong erano gli utenti a scegliere come comporle) ● I server scelgono anche un valore segreto indipendente (in Gong lo condividevano. ● Gli utenti impiegano una checksum incrociata per avere garanzie sull’operato dei server. ● Si usa un metodo di crediti per la valutazione dei server onesti. Il numero di messaggi mandati in totale è 2n+4. Protocollo a cascata: la richiesta non viene trasferita dal server 1 al prossimo tramite l’utente ma direttamente tramite server (tipo gNutella). Anche le risposte seguono questo percorso. Alla fine, l’ultimo server manda le risposte totali degli altri direttamente all’utente iniziale. Il numero di messaggi mandati in totale è n+5. SVANTAGGIO: basta che un solo server non collabori per far fallire tutto il protocollo.