Microsoft NTLM

O NTLM (Desafio/Resposta do Windows) é o protocolo de autenticação usado em redes que incluem sistemas que executam o sistema operacional Windows e em sistemas autônomos.

O pacote de segurançaDo Microsoft Kerberos adiciona maior segurança do que o NTLM aos sistemas em uma rede. Embora o Microsoft Kerberos seja o protocolo de escolha, o NTLM ainda tem suporte. O NTLM também deve ser usado para autenticação de logon em sistemas autônomos. Para obter mais informações sobre Kerberos, consulte Microsoft Kerberos.

As credenciais NTLM são baseadas em dados obtidos durante o processo de logon interativo e consistem em um nome de domínio, um nome de usuário e um hash unidirecional da senha do usuário. O NTLM usa um protocolo criptografado de desafio/resposta para autenticar um usuário, sem enviar a senha do usuário pela conexão. Em vez disso, o sistema que solicita a autenticação deve executar um cálculo que comprova que ele tem acesso às credenciais de NTLM protegidas.

A autenticação NTLM interativa em uma rede normalmente envolve dois sistemas: um sistema cliente, em que o usuário está solicitando autenticação e um controlador de domínio, em que as informações relacionadas à senha do usuário são mantidas. A autenticação nãointerativa, que pode ser necessária para permitir que um usuário já conectado acesse um recurso como um aplicativo de servidor, normalmente envolve três sistemas: um cliente, um servidor e um controlador de domínio que faz os cálculos de autenticação em nome do servidor.

As etapas a seguir apresentam uma estrutura de tópicos da autenticação nãointerativa NTLM. A primeira etapa fornece as credenciais NTLM do usuário e ocorre apenas como parte do processo de autenticação interativa (logon).

  1. (Somente autenticação interativa) Um usuário acessa um computador cliente e fornece um nome de domínio, um nome de usuário e uma senha. O cliente calcula um hash criptográfico da senha e descarta a senha real.

  2. O cliente envia o nome de usuário para o servidor (em texto sem formatação).

  3. O servidor gera um número aleatório de 8 bytes, chamado de desafio ou nonce, e o envia ao cliente.

  4. O cliente criptografa esse desafio com o hash da senha do usuário e retorna o resultado para o servidor. Isso é chamado de resposta.

  5. O servidor envia os três itens a seguir para o controlador de domínio:

    • Nome de usuário
    • Desafio enviado ao cliente
    • Resposta recebida do cliente
  6. O controlador de domínio usa o nome de usuário para recuperar o hash da senha do usuário do banco de dados do Gerenciador de Contas de Segurança. Ele usa esse hash de senha para criptografar o desafio.

  7. O controlador de domínio compara o desafio criptografado computado (na etapa 6) com a resposta calculada pelo cliente (na etapa 4). Se forem idênticos, a autenticação será bem-sucedida.

Seu aplicativo não deve acessar o pacote de segurança NTLM diretamente; em vez disso, ele deve usar o pacote de segurança Negociar . Negociar permite que seu aplicativo aproveite os protocolos de segurança mais avançados se eles tiverem suporte dos sistemas envolvidos na autenticação. Atualmente, o pacote de segurança Negociar seleciona entre Kerberos e NTLM. Negociar seleciona Kerberos, a menos que não possa ser usado por um dos sistemas envolvidos na autenticação.