《上篇》中我們介紹Kerberos認證的整個流程。在允許的環境下,Kerberos是首選的認證方式。在這之前,Windows主要採用另一種認證協議——NTLM(NT Lan Manager)。NTLM使用在Windows NT和Windows 2000 Server(or later)工作群組環境中(Kerberos用在域模式下)。在AD域環境中,如果需要認證Windows NT系統,也必須採用NTLM。較之Kerberos,基於NTLM的認證過程要簡單很多。NTLM採用一種質詢/應答(Challenge/Response)訊息交換模式,右圖反映了Windows2000下整個NTLM認證流程。
步驟一
使用者通過輸入Windows帳號和密碼登入用戶端主機。在登入之前,用戶端會緩衝輸入密碼的雜湊值,原始密碼會被丟棄(“原始密碼在任何情況下都不能被緩衝”,這是一條基本的安全準則)。成功登入用戶端Windows的使用者如果試圖訪問伺服器資源,需要向對方發送一個請求。該請求中包含一個以明文表示的使用者名稱。
步驟二
伺服器接收到請求後,產生一個16位的隨機數。這個隨機數被稱為Challenge或者Nonce。伺服器在將該Challenge發送給用戶端之前,該Challenge會先被儲存起來。Challenge是以明文的形式發送的。
步驟三
用戶端在接收到伺服器發回的Challenge後,用在步驟一中儲存的密碼雜湊值對其加密,然後再將加密後的Challenge發送給伺服器。
步驟四
伺服器接收到用戶端發送回來的加密後的Challenge後,會向DC(Domain)發送針對用戶端的驗證請求。該請求主要包含以下三方面的內容:用戶端使用者名稱;用戶端密碼雜湊值加密的Challenge和原始的Challenge。
步驟五、六
DC根據使用者名稱擷取該帳號的密碼雜湊值,對原始的Challenge進行加密。如果加密後的Challenge和伺服器發送的一致,則意味著使用者擁有正確的密碼,驗證通過,否則驗證失敗。DC將驗證結果發給伺服器,並最終反饋給用戶端。
Windows安全認證是如何進行的?[Kerberos篇]Windows安全認證是如何進行的?[NTLM篇]