Kerberos

Qu’est-ce que Kerberos ?

Kerberos est un protocole d’authentification crée par le MIT. Il s’agit aujourd’hui du protocole d’authentification principal utilisé en environnement Windows. Kerberos se base sur un mécanisme de chiffrement symétrique couplé à une distribution de tickets permettant à un client d’accéder à un service.

Le premier concept du protocole Kerberos est donc le chiffrement et le déchiffrement des communications par clé privée.

Le deuxième principe essentiel de Kerberos est l’utilisation de tickets en remplacement des mots de passe. Cette méthode est plus flexible et plus sécurisée dans la mesure où elle évite la diffusion des mots de passes sur le réseau.

Dans une architecture Kerberos l’authentification et la distribution des tickets sont effectuées par un tier de confiance appelé KDC pour Key Distribution Center. Au sein d’une infrastructure Microsoft le KDC fonctionne sur chaque contrôleur de domaine AD DS (Active Directory Services).

Le KDC se divise en deux services réseaux, l’Authentication Service (AS) et le Ticket-Granting Service. (TGS)

L’AS distribue des Ticket-Granting Ticket (TGT) permettant d’effectuer des demandes d’accès à des services auprès du TGS. Lors de la première demande de TGT, une authentification est nécessaire. Le TGT sera ensuite réutilisable jusqu’à son expiration.

Le TGS vérifie l’authenticité des demandes et émet en cas de succès un ticket d’accès au service demandé. Le client utilisera ainsi ce ticket d’accès pour accéder au service voulu.

Fonctionnement détaillé

Au sein d’une architecture Kerberos, nous avons donc le KDC sur lequel tourne les services AS et TGS, un ou plusieurs serveurs sur lesquels tournent des services et un ou plusieurs clients qui requêtent l’accès à ces services.

  • Le KDC (AS et TGS) possède la clé privée du service TGS, la clé privée client et la clé privée serveur.
  • Le client possède sa propre clé privée.
  • Le service possède sa propre clé privée.

A aucun moment les clés ne transitent par le réseau.

Nous allons ici essayer de simplifier au maximum le principe de fonctionnement de Kerberos en fonctionnant avec trois grandes étapes :

Etape 1 : Authentification auprès de l’AS

L’utilisateur entre ses identifiants afin de s’authentifier. Le mot de passe est alors converti par le client Kerberos via un hash, cela génère la clé privée. La clé privée est ensuite utilisée pour générer un message chiffré. L’identité en clair et le message chiffré sont transmis au serveur d’authentification (AS).

L’AS recherche l’identité de l’utilisateur dans sa base de données puis récupère sa clé privée afin de générer à son tour un message chiffré. Si le message généré correspond au message reçu par le client. Alors l’utilisateur est identifié. Ainsi à aucun moment le mot de passe n’a transité via le réseau.

Etape 2 : Distribution d’un Ticket d’accès

Une fois l’identité vérifiée, l’AS va générer un TGT et chiffrer son contenu avec la clé privée TGS en sa possession. Il généré également une clé de session qui servira au client à communiquer avec le TGS. Enfin il chiffre tous ces éléments avec la clé privée de l’utilisateur puis transmet le tout au client.

Le client déchiffre les éléments à partir de sa clé privée il utilise la clé de session pour communiquer avec le TGS et lui envoi le TGT chiffré accompagné de la requête d’accès au service désiré.

Le TGS déchiffre le contenu du TGT avec sa clé privée ce qui lui permet d’identifier le client. Il accepte ensuite ou refuse l’accès au service en fonction des droits de l’utilisateurs. En cas d’acceptation il retourne au client une clé de session chiffrée avec la clé privée du client ainsi qu’un Ticket d’accès au service chiffré avec la clé privée du service.

Etape 3 : Accès au service

Le client reçoit la clé de session il la déchiffre avec sa propre clé privée puis transmet au service le ticket d’accès chiffré reçu par le TGS.

Le service déchiffre enfin le ticket d’accès avec sa clé privée afin de permettre l’accès au client.

Durant cette dernière étape, le client n’a à aucun moment connaissance du contenu du ticket d’accès puisqu’il ne dispose pas de la clé privée du service.

Pour aller plus loin

Afin d’obtenir plus de détail sur le protocole Kerberos je vous invite à consulter les liens suivants :

  • https://web.mit.edu/kerberos/
  • https://en.wikipedia.org/wiki/Kerberos_(protocol)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *