Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luca Grilli
Autenticazione (Authentication)
verifica dellidentit di qualcuno (o qualcosa)
Crittografi vs Crittoanalisti
Crittografi e crittoanalisti sono in continua sfida
i primi sviluppano codici segreti sempre pi raffinati i secondi tentano costantemente di migliorare le tecniche di crittoanalisi
Sistemi crittografici
I sistemi crittografici generalmente prevedono lutilizzo combinato di
un algoritmo, e un valore segreto detto chiave
Complessit computazionale
Uno schema di crittografia
non impossibile da violare se non si conosce la chiave
un avversario pu seguire un approccio esaustivo (brute force) che esamina tutte le possibili chiavi finch non trova quella corretta
tanto pi sicuro quanto maggiore il costo computazionale necessario a violarlo deve permettere di cifrare e decifrare messaggi in modo efficiente quando si conosce la chiave
le fasi di cifratura e decifratura devono richiedere un tempo ragionevolmente ridotto quando si conosce la chiave
Altri sostengono invece che pubblicando lalgoritmo, rendendolo noto a tutti, la sicurezza aumenti
scoprire un algoritmo segreto potrebbe non essere cos difficile, e se lalgoritmo segreto ha delle debolezze queste potrebbero essere individuate da un crittoanalista
unovvia variante del cifrario di Cesare consiste nel considerare un numero segreto n compreso tra 1 e 25, invece di usare sempre il 3
basta fare pochi tentativi (al pi 25) per individuare il numero segreto n ed ottenere il messaggio originale successivamente fu introdotto il cifrario monoalfabetico che consiste nellapplicare un mapping arbitrario di una lettera in unaltra
si basa sulla scelta di una biiezione segreta sullinsieme delle lettere alfabetiche
Tuttavia, applicando tecniche statistiche di analisi dei linguaggi (alcune lettere e combinazioni di lettere sono pi probabili di altre) risulta abbastanza facile decifrare i messaggi cifrati
Tipologie di attacchi
Si possono distinguere tre tipi di attacchi base per violare uno schema di crittografia
solo testo cifrato (ciphertext only) testo in chiaro conosciuto (known plaintext) testo in chiaro selezionato (chosen plaintext)
Domanda
come pu Fred risalire al testo in chiaro se dispone soltanto del testo cifrato?
tale approccio pu funzionare solo se Fred in grado di riconoscere il testo in chiaro originale,
cio una volta decriptato il testo cifrato deve poter dire, con elevata probabilit, se quanto ottenuto il messaggio di Alice tale attacco anche noto come testo in chiaro riconoscibile (recognizable plaintext)
Un algoritmo di crittografia deve SEMPRE essere sicuro contro attacchi di tipo ciphertext only
il testo cifrato sempre facilmente intercettabile e ottenibile
in molti casi i crittoanalisti possono disporre di informazioni aggiuntive e sferrare degli attacchi pi forti, come illustrato nelle prossime slide
nel caso di cifrario monoalfabetico, una piccola quantit di testo in chiaro conosciuto vale una fortuna
si dedurrebbe in modo immediato il mapping segreto di tutte le lettere del testo in chiaro
Come possibile ottenere coppie plaintext, ciphertext con testo in chiaro scelto dal crittoanalista?
un servizio di comunicazione potrebbe sbadatamente usare la stessa chiave per ogni messaggio inviato (per ogni coppia mittente destinatario)
Testo selezionato
Si noti che
stimare lo sforzo computazionale richiesto per effettuare con successo la crittoanalisi del testo cifrato molto difficile
in un approccio a forza bruta mediamente si devono provare met di tutte le possibili chiavi
si consulti la tabella della slide successiva
168
26 characters (permutation)
DECRYPTION PLAINTEXT
Memorizzazione sicura
Si supponga di disporre di un supporto di memorizzazione non protetto
se si desidera salvare dei dati in forma sicura
che non consente ad una terza parte di ottenerli
Autenticazione
Nei film di spionaggio, quando due agenti che non si conoscono devono incontrarsi, usano una parola o frase segreta per riconoscersi
ci ha il seguente svantaggio: se qualcuno ascolta la loro conversazione o tenta di iniziarne una falsa, pu ottenere informazioni utili per impersonare successivamente uno degli agenti
Autenticazione forte
Il termine autenticazione forte (strong authentication) significa che si in grado di provare la conoscenza di un segreto senza rivelarlo
lautenticazione forte possibile con la crittografia particolarmente utile quando due computer devono comunicare su una rete insicura
Si supponga che Alice e Bob condividano una chiave segreta KAB e che vogliano autenticarsi
cio ciascuno vuole accertarsi dellidentit dellaltro
Autenticazione
Bob e Alice scelgono ciascuno un numero random, noto come sfida (challenge),
Alice sceglie il numero random rA Bob sceglie il numero random rB
il valore x cifrato con la chiave KAB noto come la risposta alla sfida x; cio E(KAB, x) la risposta ad x la slide seguente mostra come Alice e Bob usano sfide e risposte per autenticarsi
rA E(KAB, rA)
rB E(KAB, rB)
Procedura di autenticazione
Alice genera un numero random rA (la sfida) e la invia al presunto Bob il presunto Bob critta la sfida con la sua chiave segreta K? e restituisce ad Alice la risposta E(K?, rA) Alice riceve la risposta del presunto Bob e la decritta con la chiave KAB cio calcola D(KAB, E(K?, rA))
se ottiene rA, cio se D(KAB, E(K?, rA)) = rA, allora il presunto Bob realmente Bob poich K? = KAB altrimenti il presunto Bob un impostore
Test di sicurezza
Proviamo a testare la sicurezza dello schema di autenticazione appena proposto
In particolare, un impostore, diciamo Fred, potrebbe seguire una strategia a due fasi:
1. impersonando Alice potrebbe ottenere alcune informazioni nellautenticarsi con Bob 2. impersonando Bob e utilizzando le informazioni di cui sopra, potrebbe riuscire ad autenticarsi con Alice
Test di sicurezza
Pi precisamente, se Fred stesse impersonando Alice, potrebbe ottenere dal presunto Bob la risposta E(K?, rA*) ad una sua sfida rA*,
Fred non pu essere certo che il presunto Bob sia realmente Bob, se cos fosse allora K? = KAB
ma conoscere E(K?, rA*) non aiuterebbe Fred ad impersonare Bob nellautenticazione con Alice reale
anche se fosse K? = KAB, la conoscenza di E(KAB, rA*) non sufficiente; la sfida rA che genera Alice con elevata probabilit diversa da rA*
Osservazioni
Possiamo concludere che
se Alice e Bob completano con successo lo scambio di informazioni, ciascuno ha provato allaltro la conoscenza della chiave segreta KAB
senza rivelarla ad un impostore e/o ascoltatore
Osservazioni
Tuttavia, risulta anche che
possibile per Fred ottenere delle coppie chosen plaintext, ciphertext
Fred pu affermare di essere Bob (Alice) e chiedere ad Alice (Bob) di cifrare una sfida
quindi essenziale che le sfide siano scelte da uno spazio sufficientemente grande, ad esempio 264 valori
in questo modo risulta estremamente improbabile che venga generata la stessa sfida
Domanda
Il precedente test di sicurezza completo?
esiste un metodo computazionalmente semplice per violare lo schema di autenticazione?
Controllo di integrit
La crittografia a chiave segreta pu servire a generare codici (somme) di controllo cifrati a lunghezza fissa
fixed-length cryptographic checksum
uso poco intuitivo della tecnologia a chiave segreta!
Un checksum ordinario (non cifrato) serve a proteggere i messaggi da eventuali corruzioni; cio a verificarne lintegrit
la parola checksum deriva dal procedimento seguito per ottenere il codice di controllo
1. 2. scomposizione di un messaggio in blocchi di lunghezza fissa (ad esempio parole da 32 bit) somma bit a bit dei blocchi (OR oppure XOR )
Confronto di checksum
La sorgente del messaggio ms rende pubblico/invia il corrispondente checksum c(ms)
Chi riceve il messaggio mr calcola il checksum e confronta se vale luguaglianza c(ms) = c(mr)
se c(ms) = c(mr) conclude che ms = mr
anche se potrebbero esserci degli errori che si compensano, cio potrebbe darsi che ms mr e che risulti comunque c(ms) = c(mr)
Checksum segreto
Per la protezione contro modifiche maliziose ad un messaggio, richiesto un codice di controllo (checksum) segreto
se lalgoritmo non noto nessuno pu calcolare il checksum corretto per il messaggio modificato chiaramente, come nel caso degli algoritmi di cifratura, anzich un algoritmo segreto conviene avere
un algoritmo per il calcolo del checksum noto a tutti, che sfrutta una chiave segreta per calcolare il checksum di un messaggio
diversamente dalla crittografia a chiave segreta NON PREVEDE la condivisione delle chiavi, ma ogni individuo ha due chiavi
una chiave privata da NON RIVELARE a nessuno una chiave pubblica da rivelare preferibilmente a tutto il mondo
Terminologia e notazione
Per convenzione non si user il termine chiave segreta in luogo di chiave privata
in base allaggettivo della chiave sar immediato risalire allo schema di crittografia usato
chiave segreta denota linformazione segreta condivisa in uno schema di crittografia a chiave segreta chiave privata denota la chiave che non deve essere resa pubblica in uno schema di crittografia a chiave pubblica chiave pubblica denota la chiave da divulgare in uno schema di crittografia a chiave pubblica
Terminologia e notazione
Si user la seguente notazione
PU rappresenta la chiave PUbblica
ad esempio PUB indica la chiave pubblica di Bob
ENCRYPTION
PLAINTEXT CIPHERTEXT
DECRYPTION
PLAINTEXT
m
ENCRYPTION
PLAINTEXT
E(PU, m)
CIPHERTEXT
PLAINTEXT
m
ENCRYPTION
PLAINTEXT SIGNING
S(PR, m) E(PR, m)
DECRYPTION
SIGNED MESSAGE VERIFICATION PLAINTEXT
si parla di firma digitale perch condivide con la tradizionale firma manuale la propriet di poter essere riconosciuta autentica senza poter essere falsificata
ma gli attuali algoritmi crittografici a chiave pubblica sono di alcuni ordini di grandezza pi lenti dei migliori algoritmi a chiave segreta, viene pertanto utilizzata in congiunzione alla crittografia a chiave privata
Bob
mA E(KAB, mA)
mA
Bob
mA E(KAB, mA)
E(KAB, mA)
Bob
E(PUA, mB)
E(PUA, mB)
mB =
Memorizzazione sicura
Esattamente come avviene nel caso di crittografia a chiave segreta
si possono crittare i dati con la chiave pubblica PUX nessuno pu decrittare i dati tranne chi conosce la chiave privata PRX
tuttavia, per ragioni di efficienza, non conviene cifrare i dati direttamente con la chiave pubblica, ma piuttosto conviene generare randomicamente una chiave segreta KX, e crittare i dati con la chiave segreta KX, e crittare la chiave segreta con la chiave pubblica E(PUX, KX)
Memorizzazione sicura
Come nel caso di tecnologia a chiave segreta
perdere la chiave privata implica perdere irrimediabilmente i dati per evitare questo rischio, si pu crittare una copia della chiave di cifratura segreta KX con la chiave pubblica di una persona fidata PUFidata o memorizzare copie della chiave privata PRX presso una persona fidata
Si noti che la tecnologia a chiave pubblica offre un chiaro vantaggio rispetto quella a chiave segreta
Alice pu cifrare un messaggio per Bob senza conoscere la sua chiave di decifratura
Autenticazione
La tecnologia a chiave segreta presenta i seguenti svantaggi:
Alice e Bob per poter autenticarsi devono condividere un segreto se Bob deve provare la sua identit a molte entit, allora deve mantenere molte chiavi segrete
una chiave segreta per ogni entit alla quale deve provare la sua identit potrebbe anche usare la stessa chiave segreta con Alice e Carol, ma ci comporterebbe che Alice e Carol potrebbero impersonare Bob in una comunicazione tra loro due
Autenticazione
La tecnologia a chiave pubblica semplifica notevolmente la gestione dei segreti
Bob deve soltanto ricordare un singolo segreto: la sua chiave privata chiaramente, deve anche mantenere/ottenere tutte le chiavi pubbliche delle entit di cui desidera verificare lidentit
potrebbero essere anche migliaia di chiavi pubbliche la gestione delle chiavi pubbliche sar discussa in seguito
Schema di autenticazione
Assunzione
Alice conosce la chiave pubblica di Bob PUB la chiave privata di Bob PRB conosciuta soltanto da Bob Bob conosce la chiave pubblica di Alice PUA la chiave privata di Alice PRA conosciuta soltanto da Alice
Procedura di autenticazione
Alice verifica lidentit di Bob Bob verifica lidentit di Alice
Bob
rA
rA
Altro vantaggio
Un altro vantaggio dellautenticazione a chiave pubblica che Alice non deve mantenere alcuna informazione segreta per verificare Bob
Alice potrebbe essere un computer i cui backup sono in chiaro e incustoditi nellautenticazione a chiave segreta se Carol ruba un backup e legge una chiave segreta condivisa tra Alice e Bob pu fingersi Alice in una comunicazione con Bob
o viceversa
Firma digitale
Spesso utile provare che un messaggio stato generato da un particolare individuo
ci semplice con la tecnologia a chiave pubblica la firma di Bob per un messaggio m pu essere generata soltanto da chi conosce la chiave privata di Bob PRB, e la firma dipende anche dal contenuto di m se il messaggio viene modificato in qualche modo, la corrispondenza con la firma viene persa
Firma digitale
Pertanto, le firme digitali hanno una duplice funzione
provano CHI ha generato linformazione, provano che linformazione non stata modificata in alcun modo dal momento in cui il messaggio e la corrispondente firma furono generati
Inoltre, le firme digitali offrono un vantaggio importante rispetto ai checksum crittografici a chiave segreta (cio i MAC/MIC):
garantiscono il requisito del non-ripudio (non-repudiation)
Non-ripudio
Obiettivo del non-ripudio impedire che il mittente o il destinatario neghino che sia stato trasmesso un messaggio
il destinatario pu provare che il messaggio stato inviato dal presunto mittente (non ripudio della sorgente o del mittente) il mittente pu provare che il messaggio stato effettivamente ricevuto dal presunto destinatario (non ripudio del destinatario)
visto che la cancellazione dellordine prevede una penale considerevole, Alice anzich cancellare lordine preferisce negare di averlo piazzato Bob le fa causa
se il MIC era stato ottenuto con una chiave segreta KAB Bob certo che Alice sta truffando (oltre a lui solo lei conosce KAB), ma non pu provarlo in tribunale Alice potrebbe sostenere che stato lui stesso ad ordinarsi larticolo di valore!
il vantaggio della tecnologia a chiave pubblica che Alice pu cifrare un messaggio per Bob senza conoscere la sua chiave di decifratura
2) Noto h(m), non c modo di calcolare un messaggio il cui hash sia h(m)
lunico approccio noto quella di tipo brute force
3) Sebbene sia ovvio che molti valori distinti di m ammettano lo stesso hash h(m)
poich lo spazio {0, 1}* molto pi grande di {0, 1}b
tuttavia si pu dimostrare che quello appena descritto non un buon algoritmo di digest
lidea base di una buona funzione di digest comunque la stessa: linput strapazzato cos tanto da rendere proibitiva linversione
invece delle password in chiaro un sistema potrebbe memorizzare lhash delle password
se un avversario ottiene il file (relazione db) con lelenco delle password dutente, non pu usarlo in modo immediato perch la funzione di hash non invertibile
addirittura in passato lelenco contenente lhash delle password stato in alcuni casi reso pubblico; era un modo per ostentare sicurezza da NON IMITARE
data una coppia m, h(m), se il messaggio viene accidentalmente corrotto, diciamo diventa m, risulta h(m) h(m) tuttavia, se un avversario modifica deliberatamente il messaggio pu calcolare anche il suo nuovo hash
di per s le funzioni di hash non sono utilizzabili per verificare lintegrit dei messaggi contro attacchi maliziosi
lhash h(m||KAB) detto keyed hash e pu considerarsi un MAC (anche se presenta delle sottili debolezze)
ed inviare la coppia m, h(m||KAB) a Bob Bob concatena il messaggio ricevuto con il segreto e calcola lhash
se lhash ottenuto coincide con lhash ricevuto allora Bob pu, con un elevato grado di confidenza, ritenere che il messaggio stato inviato da qualcuno che conosceva il segreto
Alice
mIIKAB
Bob
II
h()
HASH
CONCATENATION
=?
HASH
CONCATENATION
II
h()
KAB
Lhash del repository funge pertanto da impronta digitale utilizzabile nei test di integrit
garantendo un notevole risparmio di memoria, e di tempo necessario al confronto
li richiedono in fase di bootstrap via rete ad un server preposto a svolgere tale servizio tale schema viene detto downline load
in questi casi lhash viene usato per verificare che il programma scaricato sia quello corretto cio non vi siano state modifiche accidentali o intenzionali
basta memorizzare soltanto lhash del programma corretto e, ad ogni download, calcolare lhash del programma scaricato verificando che coincida con quello in memoria
Si osservi che
gli algoritmi per il calcolo del digest sono computazionalmente molto pi efficienti, e il digest molto pi corto dellintero messaggio
Bibliografia
[KPS02] C. Kaufman, R. Perlman, M. Speciner. Network Security Private Communication in a Public World. Prentice Hall. [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