J'ai essayé de comprendre le fonctionnement de l'authentification Kerberos. Les informations que j'ai trouvées manquaient toujours de quelque chose comme si une partie de celles-ci était considérée comme acquise. Je suis au courant du processus en général, mais il manque quelques détails.
Obtenir TGT:
Tout d'abord, un utilisateur doit obtenir un TGT (Ticket Granting Tickets) du KDC - l'utilisateur envoie une demande avec uniquement son nom d'utilisateur (UPN) et sans son mot de passe . Certaines informations supplémentaires sont fournies pour empêcher un renvoi de la demande, telles que l'adresse IP et l'horodatage. Si une préauthentification est requise, l'heure est hachée avec le mot de passe de l'utilisateur.
Le KDC renvoie à l'utilisateur ce qui suit: A. TGT - avec un horodatage, un nom d'utilisateur, une adresse IP et une clé de session - le TGT est crypté avec un secret que seul le KDC connaît et ne peut donc être modifié par personne.
B. Clé de session pour l'utilisateur et le KDC à utiliser lors d'une communication ultérieure. Ces éléments sont cryptés à l'aide du mot de passe de l'utilisateur (secret de base partagé entre le KDC et l'utilisateur). Si une pré-authentification a été utilisée, le serveur vérifiera si l'horodatage était valide avant de renvoyer les informations.Les utilisateurs reçoivent les informations et les décryptent à l'aide de leur mot de passe - puis les stockent dans sa mémoire (plateau kerberos).
Obtenir TGS:
Lorsque l'utilisateur est invité à s'authentifier auprès d'un service, il envoie une demande au KDC pour un TGS (service d'octroi de ticket), la demande contient le TGT, le nom UPN et le SPN (nom du principal du service - disons, l'URI d'une page Web). .
Le KDC décrypte ensuite le TGT et valide son authenticité, ce qui correspond à l'UPN, à partir de la même adresse IP et toujours valide (le ticket a une période effective).
Le KDC envoie un TGS à l'utilisateur chiffré avec le mot de passe de service.
L'utilisateur présente le TGS au service - qui le déchiffre en utilisant son propre mot de passe.
L'authentification est terminée car le service compte sur le fait que son mot de passe est uniquement partagé entre lui et le KDC. Il est donc certain que le KDC a authentifié l'utilisateur plus tôt.
Quelques questions:
Est-ce que je manque quelque chose ou c'est tout?
Quand l'utilisateur et le KDC utilisent-ils la clé de session? À quel point? Pourquoi est-ce nécessaire? Pourquoi le mot de passe utilisateur ne suffit-il pas?
Il devrait également y avoir une clé de session entre l'utilisateur et le service (à ma connaissance) - quand et pourquoi est-elle utilisée (comme pour la dernière question)?
Kerberos impose une limite d’écart de 5 minutes entre toutes les parties. Je comprends pourquoi le fait de synchroniser l’heure est important, car il est utilisé comme un moyen de chiffrement et de décryptage. Comment se fait-il que l’écart soit correct? Pourquoi 5 minutes?
Je serai heureux pour les corrections si vous avez.
Merci d'avance, Tomer