Delen via


Sleuteldistributie

De verificatietechniek voor geheime sleutels legt niet uit hoe de client en server het geheim sessiesleutel ophalen om in sessies met elkaar te gebruiken. Als ze mensen zijn, kunnen ze elkaar in het geheim ontmoeten en akkoord gaan met de sleutel. Maar als de client een programma is dat wordt uitgevoerd op een werkstation en de server een service is die wordt uitgevoerd op een netwerkserver, werkt die methode niet.

Een client wil communiceren met veel servers en heeft verschillende sleutels nodig voor elk van deze servers. Een server communiceert met veel clients en heeft ook verschillende sleutels nodig voor elk van deze clients. Als elke client een andere sleutel voor elke server nodig heeft en elke server een andere sleutel voor elke client nodig heeft, wordt sleuteldistributie een probleem. Bovendien zorgt de noodzaak om veel sleutels op veel computers op te slaan en te beveiligen een enorm beveiligingsrisico.

De naam van het Kerberos-protocol stelt de oplossing voor het probleem van sleuteldistributie voor. Kerberos (of Cerberus) was een figuur in de klassieke Griekse mythe- een felle, driehoofdige hond die indringers bleef leven van het binnendringen van de Onderwereld. Net als de mythische bewaker heeft het Kerberos-protocol drie hoofden: een client, een server en een vertrouwde derde partij om ertussen te bemiddelen. De vertrouwde intermediair in dit protocol is het KDC (Key Distribution Center).

De KDC is een service die wordt uitgevoerd op een fysiek beveiligde server. Het onderhoudt een database met accountgegevens voor alle beveiligingsprinciplen in zijn realm. Een realm is het Kerberos-equivalent van een domein in Windows.

Naast andere informatie over elke beveiligingsprincipaal slaat de KDC een cryptografische sleutel op die alleen bekend is bij de principal en de KDC. Dit is de hoofdsleutel die gebruikt in uitwisselingen tussen elke beveiligingsprincipaal en de KDC. In de meeste implementaties van het Kerberos-protocol wordt deze hoofdsleutel afgeleid met behulp van een hash--functie van het wachtwoord van een beveiligingsprincipal.

Wanneer een client een beveiligde verbinding met een server wil maken, begint de client met het verzenden van een aanvraag naar de KDC, niet naar de server die deze wil bereiken. De KDC maakt en verzendt naar de client een unieke sessiesleutel voor de client en een server die moet worden gebruikt om elkaar te verifiëren. De KDC heeft toegang tot zowel de hoofdsleutel van de client als de hoofdsleutel van de server. De KDC versleutelt de kopie van de sessiesleutel van de server met behulp van de hoofdsleutel van de server en de kopie van de client met behulp van de hoofdsleutel van de client.

De KDC kan zijn rol als vertrouwde intermediair vervullen door de sessiesleutel rechtstreeks naar elk van de betrokken beveiligingsprinciplen te verzenden, maar in de praktijk werkt deze procedure niet, om een aantal redenen. In plaats daarvan verzendt de KDC beide versleutelde sessiesleutels naar de client. De sessiesleutel voor de server is opgenomen in een sessieticket.