Microsoft NTLM

Windows Challenge/Response (NTLM) es el protocolo de autenticación que se usa en redes que incluyen sistemas que ejecutan el sistema operativo Windows y en sistemas independientes.

El paquete de seguridadde Microsoft Kerberos agrega mayor seguridad que NTLM a los sistemas de una red. Aunque Microsoft Kerberos es el protocolo de elección, NTLM sigue siendo compatible. NTLM debe usarse también para la autenticación de inicio de sesión en sistemas independientes. Para obtener más información sobre Kerberos, consulte Microsoft Kerberos.

Las credenciales NTLM se basan en los datos obtenidos durante el proceso de inicio de sesión interactivo y constan de un nombre de dominio, un nombre de usuario y un hash unidireccional de la contraseña del usuario. NTLM usa un protocolo cifrado de desafío/respuesta para autenticar a un usuario sin enviar la contraseña del usuario a través de la conexión. En su lugar, el sistema que solicita la autenticación debe realizar un cálculo que demuestre que tiene acceso a las credenciales NTLM protegidas.

La autenticación NTLM interactiva a través de una red suele implicar dos sistemas: un sistema cliente, donde el usuario solicita autenticación y un controlador de dominio, donde se mantiene la información relacionada con la contraseña del usuario. La autenticación no interactiva, que puede ser necesaria para permitir que un usuario que ya haya iniciado sesión acceda a un recurso como una aplicación de servidor, normalmente implica tres sistemas: un cliente, un servidor y un controlador de dominio que realiza los cálculos de autenticación en nombre del servidor.

Los pasos siguientes presentan un esquema de autenticación no interactiva NTLM. El primer paso proporciona las credenciales NTLM del usuario y solo se produce como parte del proceso de autenticación interactiva (inicio de sesión).

  1. (Solo autenticación interactiva) Un usuario accede a un equipo cliente y proporciona un nombre de dominio, un nombre de usuario y una contraseña. El cliente calcula un hash criptográfico de la contraseña y descarta la contraseña real.

  2. El cliente envía el nombre de usuario al servidor (en texto no cifrado).

  3. El servidor genera un número aleatorio de 8 bytes, denominado desafío o nonce, y lo envía al cliente.

  4. El cliente cifra este desafío con el hash de la contraseña del usuario y devuelve el resultado al servidor. Esto se denomina respuesta.

  5. El servidor envía los tres elementos siguientes al controlador de dominio:

    • Nombre de usuario
    • Desafío enviado al cliente
    • Respuesta recibida del cliente
  6. El controlador de dominio usa el nombre de usuario para recuperar el hash de la contraseña del usuario de la base de datos administrador de cuentas de seguridad. Usa este hash de contraseña para cifrar el desafío.

  7. El controlador de dominio compara el desafío cifrado que calculó (en el paso 6) con la respuesta calculada por el cliente (en el paso 4). Si son idénticos, la autenticación se realiza correctamente.

La aplicación no debe acceder directamente al paquete de seguridad NTLM; en su lugar, debe usar el paquete de seguridad Negotiate . Negotiate permite que la aplicación aproveche los protocolos de seguridad más avanzados si son compatibles con los sistemas implicados en la autenticación. Actualmente, el paquete de seguridad Negotiate selecciona entre Kerberos y NTLM. Negotiate selecciona Kerberos a menos que uno de los sistemas implicados en la autenticación no pueda usarlo.