Sicurezza II Prof. Dario Catalano Strong Password Protocols
Introduzione Problema: Alice vuole usare una workstation per autenticarsi in un server (Bob). Alice ha solo la sua pwd La workstation non possiede nessuna configurazione particolare (es. non ha accesso alla chiave privata di Alice). Il software installato sulla workstation e affidabile. Esistono vari modi in cui Alice puo usare la pwd per autenticarsi con Bob.
Vari approcci La pwd di Alice e trasmessa in chiaro a Bob Eseguire DH (anonimo) per stabilire un canale privato da utilizzare per trasmettere la pwd. Protegge contro origliatori ma non contro chi impersona Bob.
Vari approcci (cont) Calcolare lhash della pwd e utilizzarla come chiave segreta in un protocollo challenge/response Rimane il problema dellattacco del dizionario. Utilizzare uno schema del tipo One Time pwd (es. Lamport Hash) Utilizzare uno schema sicuro contro dictionary attacks. Oggi discuteremo queste due ultime soluzioni.
Lamports Hash Lo schema permette a Bob di autenticare Alice. Ne un origliatore ne un avversario che entra nel server di Bob potra impersonare Alice. Alice ricorda solo la propria password. Bob mantiene un database.
Il DB di Bob Per ogni utente Bob mantiene le seguenti informazioni Username n, intero (che viene decrementato ogni volta che lutente viene autenticato) Hash n (pwd)
Configurare i dati di Alice Alice sceglie la propria pwd ed un intero (suff. grande) n. Il software di registrazione calcola x 1 =hash(pwd) Quindi calcola x 2 =hash(x 1 ),…,x n =hash(x n-1 ). Vengono inviati a Bob x n e n.
Autentica Alice inserisce username e pwd nella workstation. La workstation invia lusername a Bob Bob risponde con n. La workstation calcola x=hash n-1 (pwd) e manda x a Bob. Bob calcola hash(x), se e uguale a x n Alice puo entare. Bob rimpiazza n con n-1 nel database.
Autentica (cont) Quando n arriva ad 1 il sistema deve essere re-inizializzato. Una nuova pwd deve essere scelta. Questo e piuttosto complicato in un sistema come quello considerato qui. In pratica, Alice sceglie una nuova pwd, calcola hash n (pwd), e trasmette hash n (pwd) e n (in chiaro) a Bob.
Aggiungere un seme Un valore casuale seed (seme) e scelto in fase di inizializzazione. Valore univocamente legato ad Alice e memorizzato nel DB di Bob. Il seme e concatenato alla pwd prima di calcolare lhash. hash n (pwd||seed)
Aggiungere un seme (cont) Per calcolare la pwd, il software di registraz sceglie seed (a caso) calcola x 1 =hash(pwd||seed), …, x n =hash(x n-1 ||seed). x n, n e seed sono inviati a Bob.
Vantaggi (nellutilizzare seed) Alice puo utilizzare la stessa password su tanti server (utilizzando ogni volta un seme diverso). Alice non ha bisogno di cambiare la pwd quando un dato n arriva a zero. Basta cambiare il seme e ripetere linizializzazione con il nuovo seme. Inoltre aggiungere un seme permette di fronteggiare un avversario che calcola hash n per tutte le possibili pwd del dizionario.
Proprieta dello schema Accedere al server di Bob non compromette la pwd di Alice. Rispetto ai sistemi a chiave pubblica e piu efficiente, ma ha altri svantaggi. Dictionary attack. E possibile autenticarsi un num limitato di volte prima di dover reinizializzare il sistema. Non si ha mutual authentication (Alice non puo essere sicura di parlare con Bob).
Small n attack Oscar impersona Bob e attende il tentativo di log in di Alice Quando Alice effettua il log in, Oscar invia un valore n piccolo (es. 20) Alice risponde con hash n (pwd). Oscar potra impersonare Alice presso il vero Bob (assumendo che il valore n memorizzato da Bob sia maggiore di n)
Contromisure La workstation potrebbe mostrare ln ricevuto dallumano (Alice) Se Alice ricorda il valore (approssimativo) di n le conseguenze dellattacco possono essere contenute.
Human and paper environment Ambienti dove la workstation non calcola lhash, es: Alice si collega da un terminale dumb La workstation non ha il software che implementa lo schema. La workstation non e fidata (Alice non vuole rivelare la propria pwd).
Human and paper environment (cont) Quando linfo (n,hash n (pwd)) e installata nel server, tutti i valori hash i (pwd), i<n, sono calcolati. Tali valori sono convertiti in formato digitabile, stampati e dati ad Alice. Quando Alice fa il log in, inserisce la stringa allinizio della pagina, e la cancella da foglio.
Human and paper environment (cont) Tale approccio non e soggetto allo small n attack. Considerato che una funzione hash restituisce un output di (almeno) 160 bit e assumendo di avere un alfabeto di (almeno) 64 caratteri, la stringa da inserire sarebbe (circa) 32 caratteri! Ci si potrebbe pero limitare alla meta
Strong Pwd Protocols Anche se Oscar origlia non puo effettuare un dictionary attack. Lon line pwd guessing rimane possibile Non vi e modo di evitarlo. Ma non e un attacco troppo pericoloso.
Bellovin Merritt (EKE) EKE: Encrypted key exchange Alice e Bob condividono un segreto W (hash della pwd di Alice) Idea di base: Alice e Bob effettuano uno scambio Diffie-Hellman cifrando i valori DH con W.
EKE Alice e Bob condividono W=hash(pwd) Alice Bob Alice, Enc(W;g a mod p) Enc(W;g b mod p, C 1 ) K=g ab Enc(K; C 1,C 2 ) Enc(K; C 2 )
Considerazioni La ragione (intuitiva) per cui il protocollo e sicuro contro origliatori e che il valore g a (e g b ) non ha nessuna forma facilmente identificabile. Chi impersona Alice o Bob puo verificare la correttezza di una (singola) pwd on line. Ma questo sarebbe, appunto, un attacco on line.
Dettagli sottili In realta e piuttosto complicato realizzare protocolli di questo tipo. Esiste unenorme quantita di dettagli che, se trascurati, potrebbero rendere possibile un dictionary attack. Guardiamo un esempio concreto.
Esempio (EKE) Supponiamo che p sia poco piu grande di una potenza di 2 (es 2 k-1 <p<2 k ). Enc e un cifrario che ha come spazio dei msg le stringhe di lunghezza (al piu) 2 k. g a mod p e sempre piu piccolo di p g a mod p < 2 k.
Lattacco Provo tutte le pwd. Per ognuna di esse provo a decifrare, se cio che ottengo e > di p allora la pwd e sbagliata. Se p e poco piu grande di una potenza di 2 k- 1, ho una probabilita significativa che una pwd sbagliata dia luogo ad un fenomeno del genere. Provando su un numero suff. di conversazioni posso arrivare abbastanza facilmente alla password effettivamente utilizzata.
Evitare lattacco Per evitare questo attacco e opportuno considerare un p che e POCO PIU PICCOLO di una potenza di due. Questo accorgimento rende bassa la probabilita che una pwd sbagliata decifri un valore chiaramente scoretto. Esistono molti altri attacchi (anche molto meno banali) che possono essere fatti su schemi di questo tipo. Costruire protocolli strong sicuri e estremamente complicato.
Protocolli ulteriormente rinforzati Se qualcuno conoscesse W, potrebbe impersonare Alice. Vorremmo un protocollo, che permetta di evitare tale problema. In altri termini, anche entrare nel DB di Bob non aiuta a spacciarsi per Alice. La versione rinforzata di EKE e un po troppo complicata per questo corso. Vediamo, quindi, un altro protocollo.
SRP (Secure Remote Password) Bob memorizza g W mod p. W e ottenuto dalla pwd di Alice tramite una funz. nota. Dunque Bob non conosce W esplicitamente. Il protocollo prevede che Bob scelga (ad ogni esecuzione) un valore casuale u (di 32 bit)
SRP Alice e Bob condividono W=hash(pwd) Alice Bob Alice, g a mod p (g W +g b ) mod p, u, C 1 K=g b(a+uW) Enc(K; C 1 ), C 2 Enc(K; C 2 )