Kerberos

Kerberos est un protocole d'authentification réseau créé au MIT. Kerberos utilise un système de tickets au lieu de mots de passe en texte clair. Ce principe renforce la sécurité du système et empêche que des personnes non autorisées interceptent les mots de passe des utilisateurs.

L'ensemble repose sur des clés privées. À l'origine, il fut employé sur des systèmes distribués Unix. C'est avec Windows 2000 qu'il fit son retour.

Fonctionnement

Dans un réseau simple utilisant Kerberos, on distingue plusieurs entités :

Le client veut accéder à un service proposé par le serveur S.

La première étape pour le client consiste à s'authentifier auprès du serveur de clés (KDC). Le client a une clé privée KC, celle-ci est également connue par le serveur de clés. Le client envoie son nom au serveur de clés et lui indique le serveur de tickets qui l'intéresse. Après une 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 clés lui envoie alors un ticket TTGS. Ce ticket autorise le client à faire des requêtes auprès du serveur de tickets TGS.

Ce ticket TTGS (ticket granting ticket) est crypté par le serveur de clés avec la clé du serveur de tickets (KTGS). Il contient notamment des informations sur le client mais également la clé utilisée pour établir la communication entre le client et le serveur de tickets. Cette clé de session, nous la noterons KC,TGS. Le client reçoit également cette clé de session KC,TGS, elle a toutefois été cryptée avec la clé privée KC du client.

A ce stade, le client possède un ticket TTGS (qu'il ne peut pas décrypter) et une clé KC,TGS.

La deuxième étape est l'envoi par le client d'une demande de ticket auprès du serveur de tickets. Cette requête contient un authentificateur (des informations sur le client ainsi que la date d'émission) crypté avec la clé de session KC,TGS (qui est trouvée par le client en décryptant les informations reçues depuis le serveur de clés avec sa clé privée). Le client envoie aussi le ticket qui lui avait été transmis par le serveur de clés.

Le serveur de tickets reçoit alors son ticket et il peut le décrypter avec sa clé privée KTGS. Il récupère le contenu du ticket (la clé de session) et peut ainsi décrypter l'authentificateur que lui a envoyé le client. Il peut ainsi vérifier l'authenticité des requêtes. Le serveur de tickets peut alors émettre un ticket d'accès au serveur. Ce ticket est crypté grâce à la clé privée du serveur KS. Le serveur de tickets envoie aussi au client une autre clé de session KC,S pour les communications entre le serveur final et le client. Cette seconde clé de session a été cryptée à l'aide de la clé KC,TGS connue à la fois par le serveur de tickets 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 cryptée contenant la clé de session entre lui et le serveur. Il décrypte cette dernière grâce à la clé KC,TGS. Il génère un nouvel authentificateur qu'il crypte avec KC,S et qu'il envoie au serveur accompagné du ticket.

Le serveur vérifie que le ticket est valide (il le décrypte avec sa clé privée KS) et autorise l'accès au service si tout est correct.

Sécurité

Une fois qu'un client s'est authentifié, le ticket ne peut plus être annulé. La sécurité de Kerberos repose donc sur la sécurité des différentes machines qui l'utilisent. 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).

Toutefois, l'expiration du ticket permet de limiter les problèmes liés au vol des tickets, cette validité porte normalement sur des périodes de l'ordre de quelques heures (normalement 8 heures). De plus, les tickets contiennent l'adresse IP du client et le ticket n'est donc pas valable s'il est employé depuis une autre adresse. Pour contrer cela, l'attaquant devrait spoofer l'IP du client. Une attaque sur les authentificateurs échouera car Kerberos leur ajoute un identifiant. Cela évite les attaques par renvoi d'authentificateurs 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'authentifications et de pouvoir travailler sur un réseau non-sécurisé. Les authentifications sont uniquement nécessaires pour l'obtention de nouveaux tickets d'accès au serveur de tickets.

Actuellement, deux implémentation de la version Kerberos 5 existent pour OpenLDAP : MIT et Heimdal.

See also: Kerberos, Clé, Entité, Historique, MIT, Réseau, Spoofing, Unix, Windows 2000