共用方式為


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安全性套件;相反地,它應該使用交涉安全性套件。 交涉可讓應用程式在涉及驗證的系統支援時,利用更進階 的安全性通訊協定 。 目前,交涉安全性套件會選取 Kerberos 與 NTLM。 交涉會選取 Kerberos,除非其中一個涉及驗證的系統無法使用它。