Kerberos ha implementazioni mature e interoperabili su piattaforme principali con comunità di utenti attive e in continuo sviluppo (MIT Kerberos, Heimdal, Microsoft, Java) e attraverso livelli di astrazione standard come GSSAPI e SASL, è facile usare anche Kerberos direttamente o indirettamente per proteggere molte applicazioni e protocolli standard, tra cui:
- SSH (OpenSSH, ssh.com, VanDyke VShell / SecureCRT)
- IMAP e SMTP (Cyrus, sendmail, postfix, Thunderbird, OS X Mail, Alpine)
- Subversion
- CIFS / SMB (Samba, Windows, Netapp)
- Database (SQL Server, Postgres, jTDS, FreeTDS)
- HTTP (Apache, nginx, tutti i principali browser Web, arricciatura, librerie HTTP client
in Perl / Python / Java / C /...)
- DNS (autenticazione per l'aggiornamento dinamico, implementato da Windows e BIND)
- NFS
Tutti questi protocolli e implementazioni hanno il supporto Kerberos integrato pronto per essere utilizzato, se solo tu fornisci l'infrastruttura e sai come farlo. Questo non è solo teorico; dove lavoro, sono responsabile dell'infrastruttura Kerberos per la mia azienda, e abbiamo tutte queste applicazioni e altro ancora. Interagiscono tutti perfettamente sia su Windows che su Unix; i nostri utenti accedono al loro desktop Windows o Unix, digitano la loro password una volta, e poi non lo digitano più mentre accedono a tutti questi servizi, sia direttamente che dopo aver utilizzato SSH per accedere ad altri host (dove le loro credenziali Kerberos vengono automaticamente inoltrate e utilizzate). La delega delle credenziali in diversi formati è disponibile per consentire ai server autorizzati di accedere a ulteriori servizi per conto di un utente tramite l'uso controllato dell'identità dell'utente. Non abbiamo l'incubo di gestire i tasti host SSH su varie piattaforme e client (file OpenSSH conosciuti, chiavi di registro PuTTY, ecc.); Kerberos autentica i nostri server SSH e i loro client.
Se hai esigenze strettamente definite, puoi cavartela con altri sistemi. Se tutto ciò che si desidera è l'accesso singolo alle applicazioni Web da browser Web completi, ad esempio, è possibile utilizzare uno qualsiasi dei diversi schemi, ma se si desidera accedere a tale app Web in modo programmatico da un semplice programma che non dispone di un Motore di Javascript e un utente per digitare una password, sei praticamente bloccato. Con Kerberos, le stesse credenziali funzionano allo stesso modo in entrambi gli scenari.
Nulla di ciò significa che Kerberos non ha i suoi punti deboli, o cose che dovrebbero essere migliorate. L'uso di Kerberos in HTTP ("HTTP Negotiate") è un hack con problemi; in realtà, ciò di cui abbiamo bisogno è un'implementazione pervasiva delle cifrazie di Kerberos in TLS. L'utilizzo di Kerberos per proteggere il traffico di dati non consente la segretezza, che è sempre più importante in questi giorni; abbiamo bisogno di un meccanismo GSSAPI che combini l'autenticazione Kerberos con uno scambio Diffie-Hellman, come fanno gli scambi di chiavi GSSAPI SSH; una volta che esiste, può funzionare in modo trasparente con qualsiasi client SASL correttamente scritto che utilizza un livello di sicurezza (come molti dei casi citati sopra). Questo evita la combinazione di Kerberos e TLS in livelli separati, che ha troppi round trip e richiede PKI quando Kerberos di per sé è sufficiente.
Inoltre, gran parte di questa utilità è dovuta all'ampia adozione di GSSAPI e SASL nei protocolli attraverso cui viene utilizzato Kerberos, piuttosto che le proprietà specifiche di Kerberos stesso; altri meccanismi resi utilizzabili come meccanismi GSSAPI potrebbero godere di un'usabilità simile, e ad OAuth è attualmente in corso il lavoro per farlo, ad esempio. Kerberos ha il vantaggio di consentire una semplice autenticazione basata su password, consentendo anche metodi più potenti (i certificati a chiave pubblica tramite PKINIT e gli schemi OTP sono entrambi supportati), mentre la PKI è legata alla necessità di un secondo fattore di qualche tipo da tenere la chiave privata dell'utente e i certificati CA affidabili, che ne ha limitato l'adozione per l'autenticazione dell'utente per un certo periodo di tempo.
In ogni caso: se si desidera il single-signon oggi , con i sistemi esistenti pronti all'uso, su una vasta gamma di applicazioni e protocolli in particolare in un ambiente open-system, Kerberos è praticamente l'unico gioco in città: nient'altro corrisponde alla sua pervasiva disponibilità, usabilità e supporto in prodotti e protocolli esistenti, sia commerciali che open source.