Distribuzione delle chiavi
La tecnica di autenticazione della chiave privata non spiega in che modo il client e il server ottengono il segreto chiave di sessione da usare nelle sessioni tra loro. Se sono persone, potrebbero incontrarsi in segreto e concordare la chiave. Tuttavia, se il client è un programma in esecuzione in una workstation e il server è un servizio in esecuzione in un server di rete, tale metodo non funzionerà.
Un client vuole comunicare con molti server e avrà bisogno di chiavi diverse per ognuna di esse. Un server comunica con molti client e richiede chiavi diverse anche per ognuna di esse. Se ogni client necessita di una chiave diversa per ogni server e ogni server necessita di una chiave diversa per ogni client, la distribuzione delle chiavi diventa un problema. Inoltre, la necessità di archiviare e proteggere molte chiavi in molti computer crea un enorme rischio per la sicurezza.
Il nome del protocollo Kerberos suggerisce la soluzione al problema della distribuzione delle chiavi. Kerberos (o Cerbero) era una figura nella mitologia greca classica, un cane feroce e a tre teste che continuava a vivere intrusi dall'entrare nell'Sottomondo. Come la mitica guardia, il protocollo Kerberos ha tre teste: un client, un server e una terza parte attendibile per mediare tra di loro. L'intermediario attendibile in questo protocollo è il Centro distribuzione chiavi (KDC).
Il KDC è un servizio in esecuzione in un server fisicamente sicuro. Gestisce un database con informazioni sull'account per tutte le entità di sicurezza nell'area di autenticazione. Un'area di autenticazione è l'equivalente Kerberos di un dominio in Windows.
Oltre ad altre informazioni su ogni entità di sicurezza, il KDC archivia una chiave crittografica nota solo all'entità e al KDC. Si tratta della chiave master usata negli scambi tra ogni entità di sicurezza e KDC. Nella maggior parte delle implementazioni del protocollo Kerberos questa chiave master viene derivata usando una funzione hash da una password dell'entità di sicurezza.
Quando un client vuole creare una connessione sicura con un server, il client inizia inviando una richiesta al KDC, non al server che vuole raggiungere. Il KDC crea e invia al client una chiave di sessione univoca per il client e un server da usare per autenticarsi. Il KDC ha accesso sia alla chiave master del client che alla chiave master del server. Il KDC crittografa la copia del server della chiave di sessione usando la chiave master del server e la copia del client usando la chiave master del client.
Il KDC potrebbe svolgere il proprio ruolo di intermediario attendibile inviando la chiave di sessione direttamente a ognuna delle entità di sicurezza coinvolte, ma in pratica questa procedura non funzionerà, per diversi motivi. Il KDC invia invece entrambe le chiavi di sessione crittografate al client. La chiave di sessione per il server è inclusa in un ticket di sessione .