Windows認證協議

2021-10-06 18:43:56 字數 2351 閱讀 3389

windows有兩種認證協議:ntlm(nt lan manager)和kerberos。

域成員計算機在登入的時候可以選擇登入到域中或此台電腦,選擇登入到域一般會採用kerberos協議在域控dc上進行認證

ntlm是一種網路認證協議,它是基於挑戰(chalenge)/響應(response)認證機制的一種認證模式。

這個協議只支援windows,ntlm認證協議大概流程:

可以看到ntlm協議基於ntlm hash,windows本地登入的密碼由lm hash和ntlm hash組成,儲存在sam檔案中,前一部分是lm hash,後一部分是ntlm hash。

administrator:500:6f08d7b306b1dad4ff17365faf1ffe89:032f3db689bf1ee44c04d08c785710de:::
在登入windows的時候,系統會將使用者輸入的密碼轉換成ntlm hash並與sam檔案中的密碼進行對比,如果相同,則認證成功。

kerberos是一種網路認證協議,整個認證過程涉及到三方:客戶端、服務端和 kdc(key distribution center),在 windows 域環境中,kdc 的角色由 dc(domain controller)來擔當。

kerberos基於票據(ticket)進行安全認證,票據是用來在認證伺服器和使用者請求的服務之間傳遞使用者身份的憑證。

以下是kerberos協議的認證流程:

krb_as_req:client-a傳送authenticator(通過a密碼加密的乙個時間戳timestamp)向kdc的as服務認證自己的身份;

krb_as_rep:as通過kdc資料庫中儲存的client-a密碼的副本,解密收到的authenticator,如果解密出的timestamp符合要求,則as服務認為client-a就是所謂的client-a;認證成功後,as服務生成乙個短期有效的sessionkeya-kdc,將該key使用a的密碼副本加密成密文1,另外將key連同時間戳標誌(控制該sessionkey的有效時間)通過tgs服務的密碼也就是kdc的密碼加密為密文2(稱為tgt),將這兩個密文組合成krb_as_rep返回給client-a;

krb_tgs_req:client-a在接收到krb_as_rep後,首先使用自身密碼解密密文1得到sessionkeya-kdc,此時需要注意的是,密文2(tgt)是被kdc的密碼加密的,所以client-a無法解密,這也是kerberos協議設計的精妙之處,既解決了server端(tgs相對於client-a也稱之為server端)無法及時接收sessionkey的問題,又不怕client-a對該tgt的偽造,因為client-a不知道server端的密碼。得到sessionkeya-kdc後,client-a利用其加密時間戳生成authenticator用於向tgs申請client-a與client-b進行認證所需的sessionkeya-b,連同剛才krb_as_rep接收的tgt一同組合成krb_tgs_req傳送給tgs

krb_tgs_rep:tgs在接收到krb_tgs_rep之後,利用kdc密碼解密tgt獲得本來就該傳送給自己的sessionkeya-kdc,然後用其解密krb_tgs_req中的authenticator得到client-a傳送過來的時間戳,如果時間戳符合要求,則生成乙個短期有效的sessionkeya-b,注意此時利用sessionkeya-kdc將sessionkeya-b加密為密文1,然後利用server-b的密碼將sessionkeya-b加密為密文2(稱為serviceticket),兩個密文一同構成krb_tgs_rep返回給client-a;

krb_ap_req:client-a在接收到krb_tgs_rep之後,首先使用快取的sessionkeya-kdc將密文1中的sessionkeya-b解密出來,然後利用其加密時間戳生成authenticator用於向b進行對自身的驗證,另外,和剛才tgt一樣,密文2也就是serviceticket是用server-b的密碼加密的,所以client-a無法解密,也就無法偽造,這也同樣解決了在三方認證中作為server端的b無法及時接收sessionkey的問題,又不怕client-a對serviceticket的偽造;

krb_ap_rep:server-b受到krb_ap_req之後,利用自身密碼解密serviceticket,得到sessionkeya-b,然後用sessionkeya-b解密authenticator得到時間戳,驗證a的身份。

Windows認證 Windows本地認證

windows的登陸密碼是儲存在系統本地的sam檔案中的,在登陸windows的時候,系統會將使用者輸入的密碼與sam檔案中的密碼進行對比,如果相同,則認證成功。sam檔案是位於 systemroot system32 config 目錄下的,用於儲存本地所有使用者的憑證資訊,但是這並不代表著你可以...

Windows認證 Windows本地認證

windows的登陸密碼是儲存在系統本地的sam檔案中的,在登陸windows的時候,系統會將使用者輸入的密碼與sam檔案中的密碼進行對比,如果相同,則認證成功。sam檔案是位於 systemroot system32 config 目錄下的,用於儲存本地所有使用者的憑證資訊,但是這並不代表著你可以...

Windows身份認證 NTLM認證

步驟一 使用者通過輸入windows帳號和密碼登入客戶端主機。在登入之前,客戶端會快取輸入密碼的雜湊值,原始密碼會被丟棄 原始密碼在任何情況下都不能被快取 這是一條基本的安全準則 成功登入客戶端windows的使用者如果試圖訪問伺服器資源,需要向對方傳送乙個請求。該請求中包含乙個以明文表示的使用者名...