Dans Kerberos, le serveur d'authentification (AS) et le serveur d'octroi de tickets (TGS) sont généralement implémentés sur le même serveur. Cette machine s'appelle le Key Distribution Center (KDC).
Assurément, il est logique d'implémenter ces services sur la même machine physique, car dans les petits et moyens réseaux, il serait exagéré de séparer ces deux services. De plus, j'ai une source relativement fiable, qui dit (traduit):
TGS et AS doivent accéder au même DB => cela n'a pas beaucoup de sens d'implémenter TGS et AS sur des machines différentes
Cependant, je ne vois pas quelle base de données doit être partagée entre les deux.
C'est mon idée, comment je séparerais AS et TGS, il n'y a pas de bases de données partagées:
- Comme AS et TGS sont séparés, ils ont un Master Secret différent
- L'AS dispose d'une base de données avec tous les utilisateurs avec leur secret principal respectif (utilisé lorsque l'utilisateur se connecte pour crypter la clé de session), ainsi que le secret principal du TGS (pour crypter les TGT demandés).
- Le TGS possède une base de données, qui lui permet de déterminer quel utilisateur est autorisé à utiliser quel service (ACL, liste de révocation, ...), ainsi qu'une base de données avec tous les services avec leurs maîtres secrets respectifs (pour crypter les tickets).
Lorsqu'un utilisateur souhaite utiliser un service (simplifié):
- Authentifiez-vous à l'AS
- Obtenez un Ticket Granting Ticket (TGT), chiffré avec le TGS Master Secret, ainsi que la clé de session, chiffrée avec le maître secret de l'utilisateur.
- Contactez le TGS avec le TGT
- Obtenez un ticket, crypté avec le Master Secret du service
- Contacter le service avec le ticket
Suis-je en train de manquer quelque chose ou n'y a-t-il vraiment aucun problème à séparer l'AS et le TGS?