Kerberos
Valentino Ricci
Prof. Luciano Margara
Cos’è Kerberos?
• Kerberos è un protocollo di rete per
l'autenticazione.
• Modello client-server, fornisce mutua
autenticazione.
• Si basa sulla crittografia simmetrica e
sul protocollo Needham-Schroeder,
utilizza però una terza parte affidabile.
Utilizzi
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
AFS, NFS, Coda File System (distributed networked file system )
Apache (mod_auth_kerb) e Apache 2 (libapache-mod-auth-kerb)
Cisco routers and switches running
Eudora, Mulberry (e-mail client)
Mac OS X
Microsoft Windows 2000 e successivi (default authentication protocol)
OpenSSH SSH protocol (Kerberos v5)
PAM Pluggable authentication modules (pam_krb5 module)
Samba, Netatalk networking protocol
SOCKS Internet protocol
X Window System standard toolkit and protocol to build GUI
Qualsiasi software che usi il framework SASL (OpenLDAP, Dovecot
IMAP4 , POP3, Postfix)
La suite di Kerberos contiene versioni kerberizzate di rsh, FTP e Telnet
Qualsiasi software java che utilizzi JAAS/JGSS
È possibile modificare qualsiasi applicazione affinché utilizzi Kerberos
Un po’ di storia
• Realizzato dal MIT per il progetto ATHENA in alternativa
al sistema di autenticazione tradizionale.
• La versione 4 fu ideata nel 1987 da Steve Miller e
Clifford Neuman.
• La Versione 5 (RFC 1510 proposed standard) fu ideata
nel 1990 John Kohl e Clifford Neuman .
• Le autorità degli USA classificarono Kerberos come
arma e ne vietarono l'esportazione poiché utilizzava
l'algoritmo di crittazione DES (con chiavi da 56 bit).
• Una implementazione di Kerberos non statunitense,
KTH-KRB sviluppata in Svezia, rese il sistema
disponibile anche al di fuori degli Stati Uniti.
Perché Kerberos?
• Il nome KERBEROS deriva dalla mitologia greca
(Cerbero)
• Cerbero 3 teste = Kerberos 3 moduli:
1. Authentication: un servizio che consente di accertare l'identita'
dichiarata da una entita' mediante la verifica di credenziali.
2. Authorization: Protegge l'accesso ad una risorsa mediante
l'applicazione di “Security Policy”.
3. Audit: Registrazione di eventi di sistema o di rete. Consente di
rintracciare, ricostruire l'utilizzo delle risorse.
• In realtà le ultime due componenti non sono mai state
realizzate (la 2 implementata nel Kerberos di Microsoft).
Motivazioni
• L’obbiettivo di Athena era quello di creare e
amministrare un ambiente distribuito scalabile
fino a 10000 workstation.
• Problema:
– Gli utenti collegati alle workstation desiderano
accedere a servizi forniti da server distribuiti sulla
rete.
– I server devono essere in grado di consentire gli
accessi solo a utenti autorizzati e di autenticare le
richieste di servizi. (rischio spoofing e sniffing)
Le assunzioni di Kerberos
• Le password non sono "facili“.
• Le workstation sono sicure (no keylogger
o software simili).
• La rete è insicura.
Autenticazione tradizionale
User id pwd
1 - Richiesta di autenticazione
Server
User
2 – Se l’utente è riconosciuto ACCESSO
Autenticazione tradizionale
• Problemi:
– per evitare che utenti non autorizzati accedano alle risorse
occorre implementare un meccanismo di autenticazione per
ciascun servizio
– per garantire la sicurezza di ciascun servizio bisogna
implementare meccanismi complessi per ciascuno di essi
(nell’esempio precedente password in chiaro non è sicuro)
– in un ambiente distribuito in cui i client interagiscono spesso con
i server il sistema di autenticazione decentralizzato appesantisce
molto l’attività dei server
• Soluzione:
– Authentication server (AS): l’autenticazione è centralizzata,
l’AS condivide con ciascun server e ciascun utente una chiave
segreta
Authentication Server
IDU
PU
IDV
1 - Richiesta di autenticazione
AS
Ticket
User
2 – Se l’utente è riconosciuto viene restituito
un Ticket = EK [ IDU | ADU | IDV ] che
V
permette di accedere alla risorsa V
IDU
Ticket
Server V
Authentication Server
• Problemi:
– Richiesta di password per accedere a ciascun
servizio (ticket utilizzabile una volta sola).
– Richiesta di password per accedere a servizi diversi
(ticket riutilizzabile).
– Possibile sniffing del ticket e successivo spoofing per
impersonare l’utente (si risolverà più avanti).
– Password in chiaro (bleah!!!).
• Soluzione:
– Ticket granting server (TGT): distributore di ticket
per le risorse.
– Protocollo che non prevede il passaggio della
password in chiaro.
Ticket granting server
IDU
IDTGS
AS
EK [TicketTGS]
U
User
1 – L’AS restituisce
TicketTGS=EK [IDU|ADU|IDTGS|TS1|Tvalidità1] cifrato
TGS
con la chiave segreta dell’utente (una sola volta per
connessione)
IDU
IDV
TicketTGS
TicketV
2 – TGS restituisce
TicketV=EK [IDU|ADU|IDV|TS2|Tvalidità2] (una sola
V
volta per tipologia di servizio)
IDU
TicketV
Server V
TGS
3 – Il server fornisce il servizio
al client (una sola volta
per sessione di servizio)
Ticket granting server
• Problemi:
– Tempo di validità
• Se il tempo di validità del TicketTGS è basso all’utente verrà chiesta molte
volte la password
• Se il tempo di validità del TicketTGS è alto (ore) c’è la possibilità che un
avversario faccia sniffing del ticket e lo riutilizzi quando l’utente leggittimo si
sarà disconesso impersonificandolo.
• Analogo discorso si può fare per il TicketV
– Un avversario potrebbe mettersi nel mezzo e fare in modo che i
messaggi siano inviati a un server fasullo impedendo all’utente di
comunicare con il vero server.
• Soluzione:
– Autenticatore: permette a un server di assicurarsi che la persona che
utilizza il ticket è la stessa per cui il ticket è stato emesso.
– Chiavi di sessione: permettono ai server di autenticarsi agli utenti
(MUTUA ESCLUSIONE, CONFIDENZIALITÀ).
Kerberos v4
IDU
IDTGS
TS1
EK [KU,TGS|IDTGS|TS2|Tvalidità2|TicketTGS]
U
AS
1 – TicketTGS=EKTGS[KU,TGS|IDU|ADU|IDTGS|TS2|Tvalidità2]
(una sola volta per connessione)
IDU
User
EK
AutetenticatoreU
U,TGS
TicketTGS
[KU,V|IDV|TS4|Tvalidità4]
TGS
2 – TicketV= EKV [KU,V|IDU|ADU|IDV|TS4|Tvalidità4]
AutenticatoreU= EKU,TGS[IDU|ADU|TS3]
(una sola volta per tipologia di servizio)
3 – AutenticatoreU =
EKU,TGS[IDU|ADU|TS5]
AutenticatoreU2 TicketV
Anche V si autentica (M.A. e
Server V CONF.) (una sola volta per
EKU,V[TS5 +1]
sessione di servizio)
Definizioni
KDC (Key Distribution Center) = è sinonimo di AS e TGS, nonostante la
divisione in due parti, le due funzioni vengono svolte entrambe da
un server program che risiede sul sistema KDC
Client = è un entità che puo’ ottenere un “ticket”puo’ essere sia un
utente che un “host”
Host = è un computer accessibile dalla rete
Keytab = Una tabella usata dagli host o dai servizi per memorizzare la
loro chiave segreta
Principal = Denota un utente o un servizio a cui assegnamo delle
credenziali. È una stringa del tipo: Primary/instance@REALM
Primary equivale al nome dell’utente/servizio
Instance e’ la qualifica di un utente
Realm = E’ una rete “logica” che fa capo ad un unico database.
Definisce un area di validita’ dei ticket
Differenze tra V4 e V5
Dalla versione 4 alla versione 5 sono stati introdotti
molti miglioramenti sia all'implementazione che al
protocollo, essi possono essere riassunti nei seguenti
punti:
• I nomi dei Principal sono multi-componente piuttosto
che del tipo user@host
• Nuovi flag nei ticket
• Autenticazione two-tgt user-to-user
• Sostituzione dell'algoritmo di cifratura
• Indipendenza dal tipo di indirizzo
Cifratura
La parte cifrata riveste un ruolo fondamentale all'interno dei singoli
passaggi legati al processo di scambio delle credenziali alla base del
Kerberos
• string2key: funzione che converte password in chiave di cifratura
simmetrica
• per implementare lo scambio di messaggi tra AS, client e server, sono
necessari tre elementi:
– una algoritmo di crittografia forte;
– una funzione HASH;
– una funzione che implementi il checksum per l'Authenticator;
•
•
nelle prime versioni di Kerberos l’alg. di crittografia usato era solo il DES,e
non si usava il SALT
nella versione 5 (attuale) algoritmi disponibili sono
–
–
–
DES e Triplo DES per la crittografia (si ottiene chiave da 64 bit )
DES-CBC per l'hash
CRC32 per i checksum
Attacchi
1. Nella gestione dei ticket è possibile per un
pirata intromettersi nella workstation
(Backdoor,trojan) intercettare un ticket,
prelevare le credenziali e spacciarsi per il client
2. Nella risposta di Kerberos ad un principal,
possibilità di intercettazione della chiave privata
rilasciata (attacco BRUTE FORCE)
3. Nella versione 5 trovate due falle (nel software,
non nel protocollo) con possibili attacchi Ddos
(creare carico di lavoro elevato tale da bloccare
il sistema)
Pregi e difetti
Le limitazioni possono essere riassunte nei seguenti
punti:
• Non protegge dalla possibilità di scoperta della
password dell'utente
• Richiede in genere una macchina dedicata e sicura
come KDC
• Le applicazioni devono essere in parte riscritte
• Superato il DES sussistono ancora conflitti con la
• legislazione degli USA
• l'installazione e' molto "intrusiva”
Pregi e difetti
Kerberos ha molti dei pregi:
• La gestione centralizzata delle chiavi e degli utenti
(revoca, rinnovo, cancellazione,ecc,ecc) è più semplice
ed efficiente che in altri sistemi come SSL.
• è un sistema FREE cioè aperto a tutte le modifiche e
contributi.
• è sicuro perché la chiave non circola sulla rete e non e’
memorizzata in nessun posto oltre che la testa
dell’utente e il KDC.
• è flessibile, volendo usare una nuova tecnologia di
autenticazione (per esempio un nuovo tipo di Smart
Card con il proprio algoritmo), basta ”solo” modificare il
KDC.
Bibliografia
•
•
•
•
•
•
•
•
•
•
•
•
http://web.mit.edu/Kerberos/#what_is
W. Stalling. Sicurezza delle reti, Addison Wesley, 2001.
Bill Bryant. Designing an Authentication System: a Dialogue in Four Scenes. 1988.
Afterword by Theodore Ts'o, 1997.
Brian Tung. The Moron's Guide to Kerberos.
B. Clifford Neuman and Theodore Ts'o. Kerberos: An Authentication Service for
Computer Networks, IEEE Communications, 32(9):33-38. September 1994.
John T. Kohl, B. Clifford Neuman, and Theodore Y. T'so, The Evolution of the
Kerberos Authentication System. In Distributed Open Systems, pages 78-94. IEEE
Computer Society Press, 1994.
John Kohl and B. Clifford Neuman. The Kerberos Network Authentication Service
(Version 5). Internet Request for Comments RFC-1510. September 1993.
http://en.wikipedia.org/wiki/Kerberos_%28protocol%29
http://tools.ietf.org/html/rfc4120
http://www.dia.unisa.it/~ads/corso-security/www/CORSO-0001/kerberos/index.html
http://www.amagri.it/Sicurezza_MS_Windows/Metodi_autenticazione/Kerberos/kerb
eros.htm
http://www.tu-chemnitz.de/docs/lindocs/RH73/RH-DOCS/rhl-rg-it-7.3/chkerberos.html
Scarica

Kerberos