Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Luca Grilli
Introduzione
Kerberos un servizio, a chiave segreta, per autenticare utenti e risorse (principal) in una rete insicura Basato sul lavoro di Needham e Schroeder, fu progettato originariamente al MIT Serve a semplificare lautenticazione di un utente di una workstation per accedere a risorse remote (protette) di cui possiede i diritti di accesso Le prime tre versioni di Kerberos non sono pi usate Le versioni V4 e V5, sebbene concettualmente simili, sono sostanzialmente diverse e si stanno contendendo il mercato
Introduzione
La versione V4 pi diffusa, pi semplice, e offre migliori prestazioni, ma funziona solo su reti TCP/IP mentre la versione V5 offre maggiori funzionalit ed meno restrittiva Si esaminer soltanto la versione V4 nelle prossime slides
Curiosit: il nome Kerberos (Cerbero) deriva dalla mitologia greca, Cerbero era il cane a tre teste posto a guardia dellingresso dellAde (inferi)
Alice potrebbe avere la necessit di accedere, previa autenticazione, a risorse remote di cui possiede i diritti di accesso
host remoti su cui Alice ha un account, oppure file su server remoti di cui possiede i diretti di accesso e/o modifica
usr pwd
WorkStation
rete insicura
server2
serverN
Kerberos fornisce una soluzione sicura a tale problema semplificando la vita ad Alice
Implementazione di Kerberos
Unimplementazione di Kerberos consiste in un Key Distribution Center (KDC) che viene eseguito in qualche parte della rete su un nodo fisicamente sicuro, e una libreria di subroutine usate dalle applicazioni distribuite che desiderano autenticare i propri utenti Tra le applicazioni che sono state modificate per incorporare delle chiamate a subroutine nella libreria di Kerberos troviamo
telnet: serve ad interagire su un sistema remoto tramite riga di comando
Implementazione di Kerberos
BSD rtools: gruppo di programmi di utilit inclusi in BSD Unix che supportano il login remoto (rlogin), la copia di file remoti (rcp) e lesecuzione remota di comandi (rsh) NFS (Network File System): programma di utilit che permette di accedere a file di un host remoto come se fossero locali
Sebbene sono previste diverse modalit operative Kerberos fu progettato per un ambiente in cui un utente effettua il login in una workstation inserendo user-name e password
Implementazione di Kerberos
user-name e password sono usate dalla workstation per ottenere dal KDC le informazioni necessarie ai processi locali per autenticarsi e per accedere alle risorse remote al posto dellutente
evitando che lutente inserisca ogni volta le sue credenziali
Implementazione di Kerberos
KDC
serverN
DA NEEDHAM-SCHROEDER A KERBEROS
Alice informa il KDC che desidera contattare Bob il KDC inventa una chiave di sessione KAB per Alice (per la sua workstation) e Bob poi cifra KAB e il nome Bob con la chiave master di Alice KA e cifra KAB e il nome Alice con a chiave master di Bob KB ottenendo il ticket per Bob
solo Bob (e il KDC) pu decifrare il suo ticket ed ottenere KAB e il nome Alice ci rassicura Bob che chiunque conosce KAB agisce per conto di Alice pertanto, usando KAB, Alice e Bob possono autenticarsi reciprocamente ed eventualmente proteggere la confidenzialit e lintegrit della loro conversazione
KDC
Alice
mutua autenticazione a chiave segreta KAB conversazione cifrata e con controllo dintegrit
Bob
Alices workstation
Alice
KDC
Bob
Alices workstation
Alice
any commands
Bob
KDC
ed usarla quando Alice effettua delle operazioni che richiedono la verifica della sua identit tale soluzione non pu considerarsi sicura
Alice potrebbe, durante la sessione di login, eseguire del software non fidato che potrebbe rubare la sua password
va limitato il pi possibile il tempo di memorizzazione della password e della chiave master di Alice
lidea quella di sostituire il ruolo della chiave master KA con quello di una chiave di sessione di utente SA
SA varia da sessione a sessione
pwd, usr e quindi KA vengono usati solo temporaneamente allinizio di ogni sessione di login per ottenere SA la chiave di sessione SA viene generata dal KDC una volta ottenuta SA la workstation dimentica la pwd di Alice e ricorda soltanto SA
Alices workstation
KA{SA}
Alice
KDC
la workstation ottiene la chiave di sessione SA per lutente Alice dopodich dimentica pwd e KA
Bob
KDC
Alices workstation
SA{KAB, Bob}
ticket to Bob = KB{KAB, Alice}
Alice
any commands
Bob
Alices workstation
KA{SA}, TGT
Alice
KDC
la workstation ottiene la chiave di sessione SA per lutente Alice dopodich dimentica pwd e KA e ricorda solo SA e TGT
Bob
KDC
Alices workstation
SA{KAB, Bob}
ticket to Bob = KB{KAB, Alice}
Alice
any commands
Bob
Alcune note
Nelle prime versioni di Kerberos non esisteva la nozione di TGT
la comunicazione con il KDC utilizzava sempre la chiave master dellutente pi tardi, per aumentare la sicurezza, fu introdotta la chiave di sessione di utente generata in fase di login
lidea era che soltanto i TGT fossero generati dal KDC mentre gli altri ticket dovevano essere ottenuti da unaltra entit, che Kerberos chiama Ticket-Granting Server (TGS)
Alcune note
tuttavia, il Ticket-Granting Server deve avere lo stesso database del KDC
deve conoscere la chiave master di Bob KB per poter dare ad Alice un ticket per Bob
Alcune note
in particolare, la documentazione di Kerberos fa riferimento a un Server di Autenticazione (Authentication Server AS) e a un Ticket-Granting Server (TGS) che sono collocati nel KDC, intendendo che in pratica sono la stessa cosa
la distinzione AS e TGS stata mantenuta per non stravolgere la documentazione rispetto alle prime versioni
PROTOCOLLO KERBEROS V4
Configurazione
Ciascun principal ha una sua chiave segreta, detta chiave master Il server Kerberos chiamato KDC (Key Distribution Center)
a volte chiamato Authentication Server o KDC/AS
Il KDC ha un database con i nomi di tutti i principal, a lui afferenti, e le relative chiavi master Per ragioni di sicurezza, le chiavi master dei principal non vengono memorizzate in chiaro ma vengono memorizzate cifrate con una chiave segreta KKDC nota solo al KDC; KKDC detta la chiave master del KDC
Configurazione
La chiave master di un utente umano derivata dalla sua password le altre risorse associate agli utenti umani sono configurate utilizzando la loro chiave master Kerberos si basa sulla tecnologia a chiave segreta
generalmente si usa DES quale algoritmo di cifratura la versione V5 permette di impostare lalgoritmo di cifratura, per lo meno a livello protocollare ma nella pratica si usa sempre DES
In sintesi
Gli utenti umani devono memorizzare una password; i dispositivi di rete devono memorizzare una chiave segreta Il KDC ha un database con i nomi dei principal, a lui afferenti, e le relative chiavi master Il KDC deve anche ricordare una chiave segreta KKDC per se stesso
al fine di cifrare/decifrare il database con le chiavi degli utenti, e per generare i Ticket-Granting Tickets
Fasi di Kerberos
Nel seguito si esamineranno le due fasi di Kerberos:
1. Login: Alice effettua il login presso la sua workstation, ottenendo una chiave di sessione e un TGT 2. Esecuzione di un comando remoto: Alice esegue un comando su un server remoto per il quale prevista una fase preliminare di autenticazione la workstation di Alice effettuer lautenticazione al suo posto
Messaggio m2 [AS_REQ]
La workstation invia un messaggio al KDC, in chiaro, contenente il nome utente di Alice
Messaggio m3 [AS_REP]
una volta ricevuto m2, il KDC restituisce alla workstation, le credenziali per il KDC, cifrate con la chiave master di Alice KA
Workstation
m2
i) invents key SA ii) finds Alices master key KA iii) TGT = KKDC{Alice, SA}
Alice
m3
Login/acquisizione di un TGT
KDC
Alice, password
la workstation converte la password digitata da Alice nella corrispondente chiave DES KA e una volta ricevute le credenziali, tenta di decifrarle con KA
la workstation, scarta la chiave master di Alice KA (la chiave derivata dalla password) e memorizza invece il TGT e la chiave di sessione SA
Alcuni dettagli
In realt, Kerberos V4 richiede allutente di inserire la propria password solo dopo che la workstation ha ricevuto le credenziali dal KDC
la workstation mantiene lutente in attesa e gli permette di inserire la password solo dopo aver ricevuto la risposta dal KDC
lobiettivo ridurre il pi possibile il tempo di permanenza della password dutente nella workstation
si tratta di una buona regola generale di sicurezza tuttavia, nella pratica non si ha un vantaggio significativo in quanto i tempi in gioco sono dellordine dei secondi
Alcuni dettagli
Invece, in Kerberos V5, lutente inserisce la password prima che il KDC fornisca le credenziali alla workstation in particolare, in V5, la workstation deve prima provare di conoscere la password dutente dopodich pu richiedere le credenziali per il KDC in questo modo meno facile sferrare un attacco offline sulla password nella versione V4, chiunque, sostenendo di essere Alice, ottiene KA{SA, TGT} senza dover intercettare alcun messaggio
KA la chiave master di Alice, ottenuta dalla sua password
la workstation invia al KDC (messaggio m5) il TGT, il nome Bob e un authenticator il cui scopo provare che la workstation conosce la chiave di sessione SA
lauthenticator consiste nel timestamp cifrato con SA
TGS_REP contiene il ticket per Bob e KAB (la chiave di sessione che Alice e Bob condivideranno) cifrate con SA (la chiave di sessione che Alice condivide con il KDC)
Workstation
[TGS_REP]
SA{Bob, KAB, ticket to Bob}
m6
a) invents key KAB b) decrypts TGT to get SA c) decrypts authenticator d) verifies timestamp e) finds Bobs master key KB f) ticket to Bob = KB{Alice, KAB}
Alice
KDC
rlogin, Bob
il KDC invia il ticket insieme al nome Bob e KAB, alla workstation, cifrando tali informazioni con SA (messaggio m6) una volta ricevute, la workstation le decifrer con SA
Sulluso dellauthenticator
Necessit di sincronizzare gli orologi
luso dellauthenticator comporta che gli orologi delle risorse di rete debbano essere ragionevolmente ben sincronizzati devono essere tollerati dei ritardi tra i vari orologi la forbice permessa viene impostata in modo indipendente su ogni server pertanto, alcuni server possono essere configurati in modo tale da tollerare ritardi maggiori tipicamente, si tollera una forbice di cinque minuti, si assume che si in grado di garantire un tale disallineamento senza dover sostenere degli sforzi amministrativi considerevoli
Sulluso dellauthenticator
ma nella pratica tale assunzione si rivelata pi problematica del previsto per tale ragione, conviene usufruire di servizi per la sincronizzazione oraria, che permettono di risolvere in problema in modo efficace
si osservi inoltre che luso dellauthenticator evitabile; non aumenta il livello di sicurezza
se qualcuno che non conosce SA trasmettesse il TGT e il nome Bob al KDC, non sarebbe comunque in grado di decifrare la risposta del KDC che cifrata con SA
Sulluso dellauthenticator
i progettisti di Kerberos inclusero lauthenticator per ragioni di uniformit
cio per rendere il protocollo che regola la comunicazione con il TGS analogo ai protocolli che regolano la comunicazione con altre risorse i quali richiedono invece la presenza di un autheticator per sventare attacchi di tipo replay di vecchie richieste
AP_REQ costituita da
il ticket per Bob un authenticator, ovvero un timestamp cifrato con la chiave KAB
Alices Workstation
Alice
m7
m8
Bob
poi Bob decifra lauthenticator per assicurarsi che lentit con cui sta dialogando conosca realmente KAB
verifica se il timestamp ottenuto prossimo allorario corrente (cinque minuti di tolleranza) in questo modo pu sventare eventuali attacchi di tipo replay di vecchie richieste (pi vecchie di cinque minuti)
Confidenzialit e Integrit
Successivamente, dipendentemente dalla applicazione, i messaggi tra Alice e Bob possono essere non protetti (in chiaro) oppure pu essere protetta
solo lintegrit, solo la confidenzialit, sia lintegrit che la confidenzialit
Confidenzialit e Integrit
la protezione della confidenzialit e/o della integrit pu essere gestita in modo autonomo dalle applicazioni che usano Kerberos per lautenticazione tuttavia, Kerberos mette anche a disposizione delle facility per proteggere integrit e/o confidenzialit a tale scopo utilizza DES nella modalit operativa PCBC (Plaintext Cipher Block Chaining)
una variante di CBC che permette di rivelare eventuali modifiche ai blocchi cifrati
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
m1
Workstation
m2
i) invents key SA ii) finds Alices master key KA iii) TGT = KKDC{Alice, SA}
Alice
m3
Acquisizione di un TGT
KDC
Alice, password
[TGS_REQ]
m4
Workstation
m5
[TGS_REP]
SA{Bob, KAB, ticket to Bob}
m6
a) invents key KAB b) decrypts TGT to get SA c) decrypts authenticator d) verifies timestamp e) finds Bobs master key KB f) ticket to Bob = KB{Alice, KAB}
Alice
KDC
rlogin, Bob
Alices Workstation
KDC
Alice
m7
m8
Bob