Поделиться через


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. Сервер отправляет следующие три элемента контроллеру домена:

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

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

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