Share via


Microsoft NTLM

Windows 挑戰/回應 (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 安全性套件。 交涉可讓應用程式利用更進階 的安全性通訊協定 ,如果涉及驗證的系統支援這些通訊協定。 目前,交涉安全性套件會在 Kerberos 與 NTLM 之間選取。 交涉會選取 Kerberos,除非其中一個涉及驗證的系統無法使用 Kerberos。