Kerberos (protocole)
Kerberos est un protocole d'authentification rĂ©seau qui repose sur un mĂ©canisme de clĂ©s secrĂštes (chiffrement symĂ©trique) et l'utilisation de tickets, et non de mots de passe en clair, Ă©vitant ainsi le risque d'interception frauduleuse des mots de passe des utilisateurs. CrĂ©Ă© au Massachusetts Institute of Technology, il porte le nom grec de CerbĂšre, gardien des Enfers (ÎÎÏÎČΔÏÎżÏ). Kerberos a d'abord Ă©tĂ© mis en Ćuvre sur des systĂšmes Unix. Kerberos dialogue en UDP sur le port 88 par dĂ©faut.
Composants et termes
Realm
Le Realm (royaume) est un domaine administratif et non physique. Il dĂ©finit les limites de contrĂŽle dâun serveur dâauthentification. Un utilisateur, un ordinateur hĂŽte ou un service appartiennent tous Ă un realm. Cependant il est possible dâĂ©tablir des relations entre realm pour permettre lâauthentification entre utilisateurs et services de realm diffĂ©rents.
Le nom du royaume est couramment Ă©crit en lettres majuscules (EXAMPLE.COM) et peut ĂȘtre identique au nom de domaine dâune organisation. Cependant le nom dâun hĂŽte est toujours indiquĂ© avec son nom de domaine complet en plus du nom du royaume : host/server.example.com@EXAMPLE.COM.
Centre de distribution de clé (KDC)
Le centre de distribution de clĂ© est un serveur composĂ© de trois Ă©lĂ©ments : la base de donnĂ©es, le serveur dâauthentification (AS) et le serveur dâattribution des tickets (TGS).
Le serveur dâauthentification met en place un secret partagĂ© (TGT) entre un utilisateur et le KDC. Ce secret est temporaire et est Ă©tabli grĂące au mot de passe de lâutilisateur qui permet de prouver son identitĂ©. Les services sont Ă©galement authentifiĂ©s auprĂšs de lâAS mais la clĂ© nâexpire pas.
Le TGS distribue des tickets de session entre les utilisateurs authentifiĂ©s et les services. Lâutilisateur ne communique pas son mot de passe avec le service directement.
Fonctionnement
Dans un réseau simple utilisant Kerberos, on distingue plusieurs entités :
- le client (C), a sa propre clé secrÚte
- le serveur (S), dispose aussi d'une clé secrÚte
- le service d'émission de tickets (TGS pour Ticket-Granting Service), a une clé secrÚte et connaßt la clé secrÚte du serveur
- le centre de distribution de clés (KDC pour Key Distribution Center), connaßt les clés secrÚtes et
Le client C veut accéder à un service proposé par le serveur S.
La premiĂšre Ă©tape pour le client consiste Ă s'identifier auprĂšs du centre de distribution de clĂ©s (KDC). Le client a une clĂ© secrĂšte , celle-ci est Ă©galement connue par le serveur de distribution. Le client envoie son nom au serveur de distribution et lui indique le TGS qui l'intĂ©resse. AprĂšs vĂ©rification sur l'identitĂ© du client (cette partie dĂ©pend des implĂ©mentations, certains serveurs utilisent des mots de passe Ă usage unique), le serveur de distribution lui envoie alors un ticket . Ce ticket autorise le client Ă faire des requĂȘtes auprĂšs du TGS.
Ce ticket est chiffré par le serveur de distribution avec la clé du TGS (). Il contient notamment des informations sur le client mais également la clé utilisée pour établir la communication entre le client et le TGS. Cette clé de session, nous la noterons . Le client reçoit également cette clé de session , elle a toutefois été chiffrée avec la clé secrÚte du client.
à ce stade, le client possÚde un ticket (qu'il ne peut pas déchiffrer) et une clé .
La deuxiĂšme Ă©tape est l'envoi par le client d'une demande de ticket auprĂšs du TGS. Cette requĂȘte contient un identifiant (des informations sur le client ainsi que la date d'Ă©mission) chiffrĂ© avec la clĂ© de session (qui est trouvĂ©e par le client en dĂ©chiffrant les informations reçues depuis le serveur de distribution avec sa clĂ© secrĂšte). Le client envoie aussi le ticket qui lui avait Ă©tĂ© transmis par le serveur de distribution.
Le TGS reçoit alors son ticket et il peut le dĂ©chiffrer avec sa clĂ© secrĂšte . Il rĂ©cupĂšre le contenu du ticket (la clĂ© de session) et peut ainsi dĂ©chiffrer l'identifiant que lui a envoyĂ© le client et vĂ©rifier l'authenticitĂ© des requĂȘtes. Le TGS peut alors Ă©mettre un ticket d'accĂšs au serveur. Ce ticket est chiffrĂ© grĂące Ă la clĂ© secrĂšte du serveur . Le TGS envoie aussi ce ticket chiffrĂ© avec la clĂ© secrĂšte du serveur et la clĂ© de session chiffrĂ©e Ă l'aide de la clĂ© au client pour les communications entre le serveur final et le client.
La troisiÚme étape est le dialogue entre le client et le serveur. Le client reçoit le ticket pour accéder au serveur ainsi que l'information chiffrée contenant la clé de session entre lui et le serveur. Il déchiffre cette derniÚre grùce à la clé . Il génÚre un nouvel identifiant qu'il chiffre avec et qu'il envoie au serveur accompagné du ticket.
Le serveur vérifie que le ticket est valide (il le déchiffre avec sa clé secrÚte ) et autorise l'accÚs au service si tout est correct.
Sécurité
Une fois qu'un client s'est identifiĂ©, celui-ci obtient un ticket (gĂ©nĂ©ralement, un fichier texte - mais son contenu peut aussi ĂȘtre stockĂ© dans une zone de mĂ©moire sĂ©curisĂ©e). Le ticket joue le rĂŽle d'une carte d'identitĂ© Ă pĂ©remption assez courte, huit heures gĂ©nĂ©ralement. Si nĂ©cessaire, celui-ci peut ĂȘtre annulĂ© prĂ©maturĂ©ment. Sous les systĂšmes Kerberos comme celui du MIT, ou de Heimdal, cette procĂ©dure est gĂ©nĂ©ralement appelĂ©e via la commande « kdestroy ».
La sĂ©curitĂ© de Kerberos repose sur la sĂ©curitĂ© des diffĂ©rentes machines qu'il utilise. Une attaque sur le serveur de clĂ©s serait dramatique car elle pourrait permettre Ă l'attaquant de s'emparer des clĂ©s privĂ©es des clients et donc de se faire passer pour eux. Un autre problĂšme qui pourrait survenir sur la machine du client est le vol des tickets. Ils pourraient ĂȘtre utilisĂ©s par une tierce personne pour accĂ©der aux services offerts par les serveurs (si la clĂ© entre le client et le serveur est connue).
L'expiration du ticket permet de limiter les problĂšmes liĂ©s au vol des tickets. De plus, un ticket peut contenir l'adresse IP du client et le ticket n'est alors valable que s'il est employĂ© depuis cette IP (ce champ est toutefois optionnel dans Kerberos, qui peut tout Ă fait ĂȘtre utilisĂ© sur un rĂ©seau attribuant dynamiquement les IP au travers de DHCP). Une attaque sur les identifiants Ă©chouera car Kerberos leur ajoute un Ă©lĂ©ment. Cela Ă©vite les attaques par renvoi d'identifiants qui auraient Ă©tĂ© interceptĂ©s. Les serveurs conservent l'historique des communications prĂ©cĂ©dentes et peuvent facilement dĂ©tecter un envoi frauduleux.
L'avantage de Kerberos est de limiter le nombre d'identifiants et de pouvoir travailler sur un réseau non sécurisé. Les identifications sont uniquement nécessaires pour l'obtention de nouveaux tickets d'accÚs au TGS.
Actuellement, deux implémentations de Kerberos version 5 existent pour OpenLDAP :
- MIT krb5
- Heimdal
Similitudes
Le fonctionnement de Kerberos est calqué sur ce que pratiquent les ouvreurs et ouvreuses des théùtres et des cinémas :
- au moment d'accéder à la séance de cinéma ou de spectacle, le client paye son ticket qui l'authentifie.
- au point d'accÚs de la salle, l'ouvreur ou l'ouvreuse déchire le ticket en deux, conserve une partie et laisse l'autre au client.
- en cas de contrÎle, on vérifie si les deux morceaux du ticket se recollent.
- la durée de vie du ticket est limitée à une séance.
Utilisations
L'identification Kerberos peut ĂȘtre utilisĂ©e par ces protocoles/applications :
Implémentations
Il existe plusieurs implémentations libre ou propriétaire du protocole Kerberos. L'implémentation propriétaire la plus courante est la version de Microsoft Kerberos v5 intégré à Active Directory. Les principales implémentations libres sont les suivantes :
La version MIT Kerberos est choisie par les distributions Linux « Enterprise » comme Red Hat ou SUSE comme l'unique version Kerberos acceptée pour les paquets supportés[1]. Le projet Samba a initialement choisi Heimdal comme librairie Kerberos pour le support Active Directory. Il y a actuellement des efforts pour remplacer Heimdal par MIT Kerberos. La premiÚre version de Samba compilé avec MIT Kerberos est la version 4.7[2].
Voir aussi
Articles connexes
- GSS-API, la couche d'abstraction permettant notamment d'utiliser Kerberos
- Projet Athena
- Carte Ă puce
- PKINIT Utilisation de l'authentification forte pour Microsoft
- RADIUS
- TACACS
Notes
Liens externes
- Devensys "Principe de fonctionnement de Kerberos"
- « Linux From Scratch et MIT krb5 »
- (en) Heimdal
- (en) rfc4120 décrivant la version 5 du protocole
- (en) Kerberos: The Network Authentication Protocol
- Note technique de l'ANSSI sur les mots de passe (§5)
- (en) Description du protocole par le NIST (§11.2)