Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

56
Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls

Transcript of Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Page 1: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Sicurezza IIProf. Dario Catalano

Security Handshake Pitfalls

Page 2: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Introduzione La sicurezza della comunicazione,

include necessariamente una prima “presentazione” autenticata dei partecipanti. Alice e Bob devono conoscere una

qualche informazione (l’uno sull’altra) a priori.

Oggi parleremo di protocolli di presentazione (handshake)

Page 3: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Introduzione Per quanto molti di essi sembrino

semplici, minime varianti possono essere letali.

Molti protocolli utilizzati in pratica hanno problemi.

Non ci cureremo di presentare il protocollo migliore. Protocolli differenti possono essere

difficilmente confrontabili. Situazioni differenti richiedono soluzioni

diverse.

Page 4: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Obiettivi Il nostro obiettivo e’ di capire

determinati problemi e cercare di evitarli nel progettare applicazioni.

In particolare, bisogna imparare ad evitare di apportare modifiche avventate (anche minime).

In pratica molti protocolli sono sviluppati a partire da un’idea (sovente errata) che poi viene “ripulita”.

Page 5: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Login

Alice manda la sua login e pwd (in chiaro) a Bob.

Bob verifica i dati ricevuti. Se corretti, allora Alice e’ autenticata.

Molti protocolli sono stati ideati per applicazioni in cui spiare (eavesdropping) non e’ considerato un reale pericolo.

Un modo ovvio per migliorare tale protocollo e’ utilizzare crittografia.

Page 6: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Primo protocollo (Alice e Bob condividono KAlice-Bob)

Alice BobSono Alice

R (valore casuale)

F(KAlice-Bob,R)

F e’ una qualche funzione crittografica.

Page 7: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Osservazioni Il protocollo non garantisce mutua

autenticita’ Bob autentica Alice, ma Alice non

autentica Bob. Alice potrebbe parlare con Oscar

senza rendersene conto. Se e’ una pwd (o e’ derivata da

una pwd) e’ possibile fare un dictionary attack.

Page 8: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Prima variante (minima)

Alice BobSono Alice

EncKAlice-Bob(R)

R

Page 9: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Osservazioni

Il protocollo richiede crittografia “invertibile”

Se K deriva da una pwd il protocollo è soggetto a dictionary attack.

Page 10: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Seconda variante

Alice BobSono Alice, EncKAlice-Bob

(T)

T e’ un timestamp (marca temporale)

Page 11: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Pro… E’ facilmente adattabile a protocolli

pensati per inviare pwd in chiaro. Il protocollo e’ estremamente efficiente.

Risparmiamo due flussi Il server (Bob) non deve generare valori

casuali Puo’ facilmente aggiunto a protocolli di

tipo domanda/risposta.

Page 12: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

… e Contro Un avversario in ascolto puo’ utilizzare

EncKAlice-Bob(T) per impersonare Alice piu’

volte (nello stesso intervallo di tempo)Contromisura: Bob ricorda tutti i timestamps

inviati da Alice. Se Alice usa lo stesso segreto per piu’

server, un avversario “rapido” puo’ impersonare Alice in un server guardando un’autentica fatta per un altro server.Contromisura: concatenare il nome del server al

timestamp

Page 13: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Contro (cont.) Se A riuscisse a modificare il clock di

Bob, potrebbe riutilizzare crittotesti visti in passato per quello che Bob crede essere il futuro. Il clock non e’ necessariamente una risorsa

considerata a rischio. Se i protocolli di sicurezza non sono del

tutto compresi, puo’ non risultare ovvio capire che proteggere il clock e’ importante.

Page 14: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Schemi basati su tecnologia a chiave pubblica.

Se A entra nel server di Bob puo’ estrarre tutte le chiavi degli utenti che interagiscono con Bob.

Questo problema puo’ essere evitato utilizzando tecnologia a chiave pubblica.

Page 15: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Autentica con Public Key (I)

Alice BobSono Alice

R

SignAlice(R)

Page 16: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Autentica con Public Key (II)

Alice BobSono Alice

EncAlice(R)

R

Page 17: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Potenziali problemi

Potremmo “forzare” Alice a firmare un documento apparentemente innocuo (da utilizzare in seguito per autenticarci) Es: A impersona l’indirizzo di Bob,

attende il login di Alice in modo da fornirle un R da firmare. (Difficile da realizzare)

Es: Alice usa la stessa chiave di firma per operazioni differenti.

Page 18: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Soluzione Mai utilizzare la stessa chiave per

operazioni diverse (e non coordinate) Coordinazione: R dovrebbe avere una

struttura precisa e diversa per ogni (diversa) applicazione.

Parte del compito di PKCS standard e’ di stabilire formati specifici che permettano di evitare problemi quando la stessa chiave RSA e’ usata per scopi diversi.

Page 19: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Conseguenze inquietanti

Potremmo avere schemi singolarmente sicuri che combinati insieme, non sono piu’ sicuri.

L’uso di nuovi protocolli (che utilizzano la stessa chiave) puo’ compromettere la sicurezza dei precedenti.

Page 20: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Mutua Autentica Alice Bob

Sono Alice

R1

F(KAlice-Bob, R1)

R2

F(KAlice-Bob, R2)

Page 21: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Variante (piu’ efficiente)

Alice BobSono Alice, R2

R1 , F(KAlice-Bob, R2)

F(KAlice-Bob, R1)

Page 22: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Problema

Purtroppo questa variante ha un serio problema di sicurezza.

Il che dimostra (ancora una volta!) che piccole modifiche possono avere conseguenze devastanti.

L’attacco e’ noto come Reflection Attack

Page 23: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Reflection Attack

Oscar Bob Sono Alice, R2.

R1 , F(KAlice-Bob, R2)

Oscar non puo’ proseguire in quanto non puo’ calcolare F(KAlice-Bob, R1).

Allora si limita ad fermare (senza abortire) il protocollo e a ripeterlo, (chiedendo R1)

Page 24: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Reflection Attack (cont.)

Oscar Bob Sono Alice, R1.

R3 , F(KAlice-Bob, R1)

Anche stavolta Oscar non puo’ proseguire (non puo’ calcolare F(KAlice-Bob, R3).

Pero’ ha gia’ tutto il necessario per completare la prima autentica.

Page 25: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Realistico?

L’attacco e’ abbastanza realistico. E’ spesso possibile aprire sessioni

parallele. Spesso diversi utenti usano la stessa

chiave per server differenti. Per riuscire a risolvere il problema

bisogna capire da dove esso sorga.

Page 26: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Le origini del male

Principio importante: Client e Server non dovrebbero MAI fare esattamente la stessa cosa.

Usare chiavi diverse. Alice e Bob potrebbero usare chiavi

leggermente diverse (es K e K+1). Usare Challenges di formato

differente.

Page 27: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Le origini del male (cont) Si noti che il primo protocollo non

“soffre” di reflection attack. Questo perche’ chi si autentica (Alice) e’

il primo a doversi “presentare” Principio utile: colui che ha piu’ interesse ad

entrare e’ (in generale) piu’ probabilmente il cattivo.

Idealmente non dovremmo provare la nostra identita’ fino a quando colui col quale parliamo non fa altrettanto.

Page 28: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Pwd guessing Altro problema della variante

descritta (se la chiave e’ ottenuta da pwd)

Oscar puo’ effettuare un off-line dictionary attack, senza nemmeno spiare la conversazione. Basta mandare un msg a Bob,

contenente un num da cifrare, ed attendere la risposta.

Page 29: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Pwd guess

Oscar BobSono Alice, R2

R1 , F(KAlice-Bob, R2)

A questo punto, Oscar blocca (abortisce) il protocollo e prova tutte le possibili pwd.

Page 30: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Osservazioni Il problema non sorge nel protocollo

iniziale perche’, in tal caso, Oscar dovrebbe prima “presentarsi”.

Ovviamente nel caso in cui la chiave e’ ottenuta da pwd il problema del dictionary attack rimane, in presenza di avversari che possono origliare.

In pratica pero’ origliare e’ piu’ complicato che mandare messaggi a caso e leggere le corrispondenti risposte.

Page 31: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Mutual Auth con chiavi pubbliche

Alice BobSono Alice, EncBob(R2)

R2 , EncAlice(R1)

R1

Page 32: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Mutual Auth con chiavi pubbliche

Bisogna assumere che Alice e Bob conoscano le rispettive chiavi pubbliche.

Inoltre bisogna essere sicuri che la chiave sia autentica. Problema non del tutto banale. Vedremo meglio questi aspetti

studiando PKI.

Page 33: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Mutual Auth con chiavi pubbliche

Come fa la workstation di Alice ad ottenere la chiave privata (di Alice), quando la sola cosa che ottiene e’ la pwd? Il server al quale Alice si autentica in generale

puo’ non contenere SKAlice E’ facile ottenere una chiave simmetrica a

partire da una pwd, ma nel caso asimmetrico le cose sono piu’ complicate.

Spesso il metodo utilizzato in pratica e’ di lasciare la workstation accedere ad un directory service contenente la chiave di Alice cifrata con la pwd.

Page 34: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Che tipo di cifrari utilizzare?

Problema molto piu’ sottile. In generale il cifrario utilizzato dal

server (Bob) dovrebbe essere sicuro contro attacchi attivi.

Per il cifrario usato da Alice, talvolta puo’ bastare un cifrario sicuro contro attacchi passivi.

Page 35: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Mutual Auth con due msg

Alice BobSono Alice, F(KAlice-Bob,timestamp)

F(KAlice-Bob,timestamp+1)

Page 36: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Timestamps Ridurre il protocollo a due messaggi, lo

rende (in principio) “aggiungibile” a qualsiasi protocollo di tipo domanda/risposta

Bob invia un timestamp diverso rispetto ad Alice (ovviamente!)

Qualsiasi altra modifica (nota) del timestamp otterrebbe lo stesso effetto.

Timestamp+1 viene dal protocollo Needham-Schroeder

Questa soluzione puo’ essere rischiosa.

Page 37: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Potenziale attacco Oscar potrebbe utilizzare

F(KAlice-Bob,timestamp+1) per impersonare Alice in un secondo momento.

Un metodo migliore sarebbe quello di utilizzare una risposta che non puo’ essere “riciclata” come domanda.

Page 38: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Protezione dei dati Per proteggere (privacy e/o integrita’) i dati

dopo l’autentica dobbiamo usare crittografia. Puo’ essere necessario scambiare chiavi (di

sessione) crittografiche. Obiettivo: Dopo l’handshake iniziale, Alice

e Bob vogliano stabilire una chiave di sessione

Tre modelli di base per scambiare chiavi I due utenti hanno gia’ una chiave condivisa Chiavi pubbliche One way PK (l’autentica non e’ per entrambi)

Page 39: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Shared Secret

Alice e Bob condividono KAlice-Bob. Supponiamo che l’autentica sia

stata fatta utilizzando un protocollo simile a quelli gia’ visti. Alice Bob

Sono Alice R

C=F(KAlice-Bob,R)

Page 40: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Come derivare la chiave di sessione?

Idea: modificare C in modo da ottenere qualcosa di ignoto ad A.

Potremmo utilizzare, ad esempio, C’=F(KAlice-Bob+1,R)

Oppure C’’=F(KAlice-Bob,R+1) Quest’ultima, non e’ una buona

idea.

Page 41: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Usare F(KAlice-Bob,R+1)

Supponiamo R sia la challenge utilizzata nell’autentica di Alice.

Oscar memorizza tutte le conversazioni fatte da Alice e Bob e cifrate con la chiave F(KAlice-Bob,R+1).

In un secondo momento Oscar si spaccia per Bob (con Alice) ed utilizza R+1 come challenge.

Una volta ottenuto F(KAlice-Bob,R+1), Oscar potra’ decifrare la conversazione di Alice e Bob.

Page 42: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Cosa rende buona una chiave di sessione?

Domanda difficile…Alcune caratteristiche che una

buona chiave di sessione dovrebbe possedere:

Differente per ogni sessione Non (facilmente) indovinabile Non cifrata con la chiave a lungo

termine.

Page 43: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Chiavi Pubbliche (con MA)

Alice e Bob conoscono le rispettive chiavi pubbliche.

Discuteremo varie possibilita’ per scambiare chiavi di sessione in tale contesto.

Page 44: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Prima soluzione

Alice Bob EncBob(S), Msg

Msg e’ uno dei messaggi scambiati durante l’autentica.

Questo protocollo ha un problema Oscar potrebbe scegliere un proprio

S’ e sostituirlo a quello cifrato da Alice

Page 45: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Seconda soluzione

Alice Bob C=EncBob(S), SigAlice(C)

Oscar non puo’ fare l’attacco di prima in quanto non puo’ falsificare firme.

Piccolo problema di sicurezza Se Oscar entra nel server di Bob, puo’

decifrare tutte le conversazioni (precedentemente origliate)

Page 46: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Terza soluzione

Alice Bob EncBob(S1)

EncAlice(S2)

La chiave condivisa e’ S1©S2.

Page 47: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Terza Soluzione (cont) Qua non abbiamo bisogno di firmare

Per quanto Oscar possa inserire valori del tipo EncBob(S1) e EncAlice(S2) a piacimento, non potrebbe comunque decifrare.

Oscar puo’ creare confusione (creando false chiavi), ma non puo’ decifrare la vera chiave.

Rimane il problema del Man in the middle

Page 48: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Quarta Soluzione

Alice Bobgx, SignAlice(gx)

gy, SignBob(gy)

La chiave comune e’ gxy.

Page 49: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Una sola parte ha PK Normalmente (i.e. SSL) il server, Bob,

ha una coppia (PK,SK) e il cliente, Alice, non ha nulla.

I protocolli sono volti ad assicurare ad Alice che sta parlando con Bob.

Inizialmente Bob accetta Alice. Quindi una chiave crittografica e’ stabilita e Alice puo’ (eventualmente) essere autenticata.

Page 50: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Stabilire una chiave di sessione – I metodo

Alice BobR random EncBob(R)

R e’ la chiave di sessione. Problema: Se Oscar registra le

conversazioni e quindi entra nel server di Bob, puo’ decifrare tutte le conversazioni conservate.

Page 51: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Stabilire una chiave di sessione – II metodo Alice e Bob fanno uno scambio DH

(ma solo Bob firma) Leggermente piu’ sicuro del

precedente Assumendo che Bob cancella tutte le

chiavi di sessione gia’ utilizzate, Oscar non puo’ decifrare eventuali conversazioni precedentemente osservate.

Page 52: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Privacy ed Integrita’ (allo stesso tempo) Nel caso simmetrico, l’uso di MAC

consente di realizzare autenticita’. MAC possono essere realizzati a

partire da cifrari a blocchi (es. CBC MAC), funzioni hash (HMAC), etc

Non conosciamo metodi standard per ottenere privacy ed autenticita’ a partire da una sola primitiva (con una sola chiave).

Page 53: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Privacy ed Integrita’ (cont) Una volta stabilite (due) chiavi per privacy

e integrita’ bisogna vedere come utilizzarle correttamente.

Problema: I messaggi scambiati nell’ambito di una comunicazione devono poter essere interpretati correttamente. Per ogni messaggio deve essere verificata

l’autenticita’ Anche messaggi autentici possono essere

male interpretati se letti nell’ordine sbagliato.

Oscar potrebbe intercettare un msg e rispedirlo in seguito.

Page 54: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Privacy ed Integrita’ (cont)

Soluzioni: Indici sequenziali (Kerberos)

I numeri di seq. devono essere scelti in intervalli sufficientemente grandi.

Riutilizzare lo stesso numero puo’ essere molto pericoloso

Il codice di integrita’ puo’ contenere dati su tutti i messaggi gia’ scambiati (Novell)

Page 55: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Reflection Attack

Adv registra msg da Alice a Bob e lo ri-invia nel senso contrario (da Bob ad Alice) Se il numero sequenziale segue la

stessa logica per entrambi msg puo’ essere male interpretato.

Soluzione semplice: usare notazioni diverse o un direction bit.

Page 56: Sicurezza II Prof. Dario Catalano Security Handshake Pitfalls.

Key Rollover Cambio di chiave durante una

conversazione. Pratica molto consigliabile, se ben realizzata.

Possibile soluzione: Alice sceglie una chiave random e la cifra con la chiave vecchia.

Uno scambio di chiavi Diffie Hellman e’ pero’ piu’ indicato.

Mantenere numeri sequenziali e fare key rollover puo’ diventare difficilissimo se il protocollo di comunicazione non “collabora”