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