250 likes | 486 Views
Kerberos. Valentino Ricci Prof. Luciano Margara. Cos’è Kerberos? . Kerberos è un protocollo di rete per l' autenticazione . Modello client-server , fornisce mutua autenticazione .
E N D
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) • MacOS 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, DovecotIMAP4 , 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: • Authentication: un servizio che consente di accertare l'identita' dichiarata da una entita' mediante la verifica di credenziali. • Authorization: Protegge l'accesso ad una risorsa mediante l'applicazione di “Security Policy”. • 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.
pwd User id Server Autenticazione tradizionale 1 - Richiesta di autenticazione 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
IDU PU IDV AS Ticket Server V IDU Ticket Authentication Server 1 - Richiesta di autenticazione User 2 – Se l’utente è riconosciuto viene restituitoun Ticket = EKV[ IDU | ADU | IDV ] che permette di accedere alla risorsa 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.
IDU IDTGS EKU[TicketTGS] TicketV TGS AS IDU IDV TicketTGS Server V IDU TicketV Ticket granting server 1 – L’AS restituisce TicketTGS=EKTGS[IDU|ADU|IDTGS|TS1|Tvalidità1] cifrato con la chiave segreta dell’utente (una sola volta per connessione) User 2 – TGS restituisce TicketV=EKV[IDU|ADU|IDV|TS2|Tvalidità2] (una sola volta per tipologia di servizio) 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À).
IDU IDTGS TS1 EKU[KU,TGS|IDTGS|TS2|Tvalidità2|TicketTGS] EKU,TGS[KU,V|IDV|TS4|Tvalidità4] TGS AS IDU AutetenticatoreU TicketTGS AutenticatoreU2 TicketV Server V EKU,V[TS5 +1] Kerberos v4 1 – TicketTGS=EKTGS[KU,TGS|IDU|ADU|IDTGS|TS2|Tvalidità2] (una sola volta per connessione) User 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] Anche V si autentica (M.A. e CONF.) (una sola volta per 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@REALMPrimary 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 • Nella gestione dei ticket è possibile per un pirata intromettersi nella workstation (Backdoor,trojan) intercettare un ticket, prelevare le credenziali e spacciarsi per il client • Nella risposta di Kerberos ad un principal, possibilità di intercettazione della chiave privata rilasciata (attacco BRUTE FORCE) • 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/kerberos.htm • http://www.tu-chemnitz.de/docs/lindocs/RH73/RH-DOCS/rhl-rg-it-7.3/ch-kerberos.html