Microsoft NTLM

Windows Challenge/Response (NTLM) est le protocole d’authentification utilisé sur les réseaux qui incluent des systèmes exécutant le système d’exploitation Windows et sur des systèmes autonomes.

Le package de sécurité Microsoft Kerberos ajoute une sécurité supérieure à NTLM aux systèmes d’un réseau. Bien que Microsoft Kerberos soit le protocole de choix, NTLM est toujours pris en charge. NTLM doit également être utilisé pour l’authentification de connexion sur les systèmes autonomes. Pour plus d’informations sur Kerberos, consultez Microsoft Kerberos.

Les informations d’identification NTLM sont basées sur des 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 suivantes 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).

  1. (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.

  2. Le client envoie le nom d’utilisateur au serveur (en texte en clair).

  3. Le serveur génère un nombre aléatoire de 8 octets, appelé défi ou nonce, et l’envoie au client.

  4. Le client chiffre ce défi avec le hachage du mot de passe de l’utilisateur et retourne le résultat au serveur. C’est ce qu’on appelle la réponse.

  5. 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
  6. 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 du Gestionnaire de comptes de sécurité. Il utilise ce hachage de mot de passe pour chiffrer le défi.

  7. 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). Si elles sont identiques, l’authentification réussit.

Votre application ne doit pas accéder directement au package de sécurité NTLM ; à la place, elle doit 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 sélectionne 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.