Microsoft NTLM

Windows Challenge/Response (NTLM) — это протокол проверки подлинности, используемый в сетях, включающих системы под управлением операционной системы Windows, и в автономных системах.

Пакет безопасности Microsoft Kerberos повышает уровень безопасности, чем NTLM, для систем в сети. Хотя microsoft Kerberos является протоколом выбора, NTLM по-прежнему поддерживается. NTLM также необходимо использовать для проверки подлинности при входе в автономные системы. Дополнительные сведения о Kerberos см. в статье Microsoft Kerberos.

Учетные данные NTLM основаны на данных, полученных во время интерактивного входа в систему, и состоят из доменного имени, имени пользователя и одностороннего хэша пароля пользователя. NTLM использует зашифрованный протокол запроса/ответа для проверки подлинности пользователя без отправки пароля пользователя по сети. Вместо этого система, запрашивающая проверку подлинности, должна выполнить вычисление, которое подтверждает, что у нее есть доступ к защищенным учетным данным NTLM.

Интерактивная проверка подлинности NTLM по сети обычно включает две системы: клиентскую систему, где пользователь запрашивает проверку подлинности, и контроллер домена, где хранятся сведения, связанные с паролем пользователя. Неинтерактивная проверка подлинности, которая может потребоваться, чтобы разрешить уже вошедшего в систему пользователю доступ к ресурсу, такому как серверное приложение, обычно включает в себя три системы: клиент, сервер и контроллер домена, который выполняет вычисления проверки подлинности от имени сервера.

Ниже приведены сведения о неинтерактивной проверке подлинности NTLM. Первый шаг предоставляет учетные данные NTLM пользователя и выполняется только в рамках интерактивного процесса проверки подлинности (входа).

  1. (Только интерактивная проверка подлинности) Пользователь обращается к клиентскому компьютеру и предоставляет доменное имя, имя пользователя и пароль. Клиент вычисляет криптографический хэш пароля и отменяет фактический пароль.

  2. Клиент отправляет имя пользователя на сервер (в виде открытого текста).

  3. Сервер создает 8-байтовое случайное число, называемое запросом или nonce, и отправляет его клиенту.

  4. Клиент шифрует эту задачу с помощью хэша пароля пользователя и возвращает результат серверу. Это называется ответом.

  5. Сервер отправляет следующие три элемента на контроллер домена:

    • Имя пользователя
    • Запрос, отправленный клиенту
    • Ответ, полученный от клиента
  6. Контроллер домена использует имя пользователя для получения хэша пароля пользователя из базы данных диспетчера учетных записей безопасности. Он использует этот хэш пароля для шифрования запроса.

  7. Контроллер домена сравнивает вычисленную зашифрованную задачу (на шаге 6) с ответом, вычисленным клиентом (на шаге 4). Если они идентичны, проверка подлинности выполняется успешно.

Приложение не должно обращаться к пакету безопасности NTLM напрямую; Вместо этого следует использовать пакет безопасности Negotiate . Согласование позволяет приложению использовать более сложные протоколы безопасности , если они поддерживаются системами, участвующими в проверке подлинности. В настоящее время пакет безопасности Negotiate выбирает между Kerberos и NTLM. Согласование выбирает Kerberos, если только он не может использоваться одной из систем, участвующих в проверке подлинности.