Kerberos: séparation de l'AS et du TGS

9

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?

Misch
la source
1
On dirait que vous êtes trop en profondeur dans les internes de Kerberos. La manière habituelle d'évoluer est d'ajouter simplement plus de KDC, donc je ne suis pas vraiment sûr de ce que vous essayez d'accomplir.
Michael Hampton
1
Droite - à quel problème êtes-vous réellement confronté, que vous essayez de résoudre?
mfinni
1
Je n'essaie pas de résoudre un problème concret. J'essaie juste de comprendre les éléments internes de Kerberos (pour un examen) sans vraiment vouloir l'utiliser pour le moment. La question est purement théorique, je veux juste savoir si j'ai mal compris quelque chose ou si la citation de ma question n'est pas totalement correcte.
Misch

Réponses:

4

Votre question est toute théorie. Je répondrai donc en nature. L'AS et le TGS sont des serveurs logiques, et en tant que tels, ils pourraient théoriquement être séparés. Mais dans la pratique, il n'y a aucune bonne raison de les implémenter sur des machines distinctes, et donc personne ne le fait dans la vie réelle. Même les réseaux les plus grands et les plus occupés au monde en termes d'authentification Kerberos n'ont pas besoin de séparer les composants logiques des KDC. Dans les implémentations réelles de Kerberos, toutes les données dont l'AS a besoin et toutes les données dont le TGS a besoin sont toutes stockées dans la même base de données. Il pourrait théoriquement être séparé mais il n'y a tout simplement aucune bonne raison de le faire et ne ferait que compliquer inutilement la mise en œuvre.

Ryan Ries
la source
1
Je viens de trouver un autre problème lors de la séparation de l'AS et du TGS: il est non seulement possible d'obtenir des TGT de l'AS, mais vous pouvez également demander un ticket pour tout autre service (par exemple, si vous savez que vous n'aurez besoin que de ce seul ticket, donc pas besoin de détour via TGT). Cela signifie que l'AS a en outre besoin de toutes les données, je suppose que seul le TGS a besoin.
Misch