Microsoft NTLM
Le mécanisme Windows de Stimulation/Réponse (NTLM) est le protocole d’authentification exploité sur les réseaux dans lesquels des systèmes fonctionnent sous le système d’exploitation Windows et exploité sur les systèmes autonomes.
Le package de sécurité Kerberos de Microsoft propose un degré de sécurité supérieur à NTLM sur les systèmes en réseau. Bien que Microsoft Kerberos soit le protocole privilégié, NTLM est toujours pris en charge. NTLM doit également être utilisé pour l’authentification de connexion sur des systèmes autonomes. Pour obtenir plus d’informations sur Kerberos, veuillez consulter la page Microsoft Kerberos.
Les informations d’identification NTLM sont basées sur les données obtenues pendant le processus d’ouverture de session interactive et se composent d’un nom de domaine, d’un nom d’utilisateur et d’un hachage unidirectionnel du mot de passe de l’utilisateur. NTLM utilise un protocole de stimulation/réponse chiffré pour authentifier un utilisateur sans envoyer le mot de passe de l’utilisateur sur le réseau. Au lieu de cela, le système demandant l’authentification doit effectuer un calcul qui prouve qu’il a accès aux informations d’identification NTLM sécurisées.
L’authentification NTLM interactive sur un réseau implique généralement deux systèmes : un système client, où l’utilisateur demande l’authentification, et un contrôleur de domaine, où les informations relatives au mot de passe de l’utilisateur sont conservées. L’authentification non interactive, qui peut être nécessaire pour permettre à un utilisateur déjà connecté d’accéder à une ressource telle qu’une application serveur, implique généralement trois systèmes : un client, un serveur et un contrôleur de domaine qui effectue les calculs d’authentification pour le compte du serveur.
Les étapes ci-dessous présentent un aperçu de l’authentification non interactive NTLM. La première étape fournit les informations d’identification NTLM de l’utilisateur et se produit uniquement dans le cadre du processus d’authentification interactive (ouverture de session).
(Authentification interactive uniquement) Un utilisateur accède à un ordinateur client et fournit un nom de domaine, un nom d’utilisateur et un mot de passe. Le client calcule un hachage de chiffrement du mot de passe et ignore le mot de passe réel.
Le client envoie le nom d’utilisateur au serveur (en texte brut).
Le serveur génère un nombre aléatoire de huit octets, appelé défi ou nonce et l’envoie au client.
Le client chiffre ce défi avec le hachage du mot de passe de l’utilisateur et renvoie le résultat au serveur. Il s’agit de la réponse.
Le serveur envoie les trois éléments suivants au contrôleur de domaine :
- Nom d'utilisateur
- Défi envoyé au client
- Réponse reçue du client
Le contrôleur de domaine utilise le nom d’utilisateur pour récupérer le hachage du mot de passe de l’utilisateur à partir de la base de données gestionnaire de comptes de sécurité. Il utilise ce hachage de mot de passe pour chiffrer le défi.
Le contrôleur de domaine compare le défi chiffré qu’il a calculé (à l’étape 6) à la réponse calculée par le client (à l’étape 4). S’ils sont identiques, l’authentification est réussie.
Votre application ne doit pas accéder directement au package de sécurité NTLM. Elle doit plutôt utiliser le package de sécurité Negotiate. Negotiate permet à votre application de tirer parti de protocoles de sécurité plus avancés s’ils sont pris en charge par les systèmes impliqués dans l’authentification. Actuellement, le package de sécurité Negotiate choisit entre Kerberos et NTLM. Negotiate sélectionne Kerberos, sauf s’il ne peut pas être utilisé par l’un des systèmes impliqués dans l’authentification.