Condividi tramite


Distribuzione delle chiavi

La tecnica di autenticazione con chiave privata non spiega in che modo il client e il server ottengono la chiave di sessione privata da usare tra loro nelle sessioni. Se sono persone, potrebbero incontrarsi in segreto e concordare la chiave. Tuttavia, se il client è un programma in esecuzione su 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 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 rischio enorme 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'ingresso nell'Mondo Inferiore. Come la mitica guardia, il protocollo Kerberos ha tre teste: un client, un server e una terza parte attendibile per mediare tra di essi. L'intermediario attendibile in questo protocollo è il Centro distribuzione chiavi (KDC).

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.

Insieme 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 il KDC. Nella maggior parte delle implementazioni del protocollo Kerberos, questa chiave master viene derivata usando una funzione hash dalla password di un'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 tra loro. Il KDC ha accesso sia alla chiave master del client che alla chiave master del server. Il cluster 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. Al contrario, il KDC invia entrambe le chiavi di sessione crittografate al client. La chiave di sessione per il server è inclusa in un ticket di sessione.