自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Windows安全認(rèn)證是如何進行的?

云計算
Windows認(rèn)證協(xié)議有兩種NTLM(NT LAN Manager)和Kerberos,前者主要應(yīng)用于用于Windows NT 和 Windows 2000 Server(or Later) 工作組環(huán)境,而后者則主要應(yīng)用于Windows 2000 Server(or Later) 域(Domain)環(huán)境。

最近一段時間都在折騰安全(Security)方面的東西,比如Windows認(rèn)證、非對稱加密、數(shù)字證書、數(shù)字簽名、TLS/SSL、WS-Security等。如果時間允許,我很樂意寫一系列的文章與廣大網(wǎng)友分享、交流。對于很多讀者來說,今天討論的可能是一個既熟悉、又陌生的話題——Windows認(rèn)證。

目錄

一、Kerberos認(rèn)證簡介

二、如何獲得“認(rèn)購權(quán)證”?

三、如何通過“認(rèn)購權(quán)證”購買“入場券”?

四、憑票入場

一、Kerberos認(rèn)證簡介

 

image

 

Windows認(rèn)證協(xié)議有兩種NTLM(NT LAN Manager)和Kerberos,前者主要應(yīng)用于用于Windows NT 和 Windows 2000 Server(or Later) 工作組環(huán)境,而后者則主要應(yīng)用于Windows 2000 Server(or Later) 域(Domain)環(huán)境。Kerberos較之NTLM更高效、更安全,同時認(rèn)證過程也相對復(fù)雜。Kerberos這個名字來源于希臘神話,是冥界守護神獸的名字。Kerberos是一個三頭怪獸,之所以用它來命名一種完全認(rèn)證協(xié)議,是因為整個認(rèn)證過程涉及到三方:客戶端、服務(wù)端和KDC(Key Distribution Center)。在Windows域環(huán)境中,KDC的角色由DC(Domain Controller)來擔(dān)當(dāng)。

某個用戶采用某個域帳號登錄到某臺主機,并遠(yuǎn)程訪問處于相同域中另一臺主機時,如何對訪問者和被訪問者進行身份驗證(這是一種雙向的驗證)?這就是Kerberos需要解決的場景。接下來我盡量以比較直白的語言來介紹我所知道的Kerberos認(rèn)證的整個流程。

Kerberos實際上是一種基于票據(jù)(Ticket)的認(rèn)證方式??蛻舳艘L問服務(wù)器的資源,需要首先購買服務(wù)端認(rèn)可的票據(jù)。也就是說,客戶端在訪問服務(wù)器之前需要預(yù)先買好票,等待服務(wù)驗票之后才能入場。在這之前,客戶端需要先買票,但是這張票不能直接購買,需要一張認(rèn)購權(quán)證??蛻舳嗽谫I票之前需要預(yù)先獲得一張認(rèn)購權(quán)證。這張認(rèn)購權(quán)證和進入服務(wù)器的入場券均有KDC發(fā)售。右圖(點擊看大圖)一張圖基本揭示了Kerberos整個認(rèn)證的過程。

二、如何獲得“認(rèn)購權(quán)證”?

 

image

 

首先,我們來看看客戶端如何獲得“認(rèn)購權(quán)證”。這里的認(rèn)購權(quán)證有個專有的名稱——TGT(Ticket Granting Ticket),而TGT的是KDC一個重要的服務(wù)——認(rèn)證服務(wù)(KAS:Kerberos Authentication Service)。當(dāng)某個用戶通過輸入域帳號和密碼試圖登錄某臺主機的時候,本機的Kerberos服務(wù)會向KDC的認(rèn)證服務(wù)發(fā)送一個認(rèn)證請求。該請求主要包括兩部分內(nèi)容,明文形式的用戶名和經(jīng)過加密的用于證明訪問者身份的Authenticator(我實在找不到一個比較貼切的中文翻譯沒,Authenticator在這里可以理解為僅限于驗證雙反預(yù)先知曉的內(nèi)容,相當(dāng)于聯(lián)絡(luò)暗號)。

當(dāng)KDC接收到請求之后,通過AD獲取該用戶的信息。通過獲取的密碼信息生成一個秘鑰對Authenticator進行解密。如果解密后的內(nèi)容和已知的內(nèi)容一致,則證明請求著提供的密碼正確,即確定了登錄者的真實身份。

KAS成功認(rèn)證對方的身份之后,會先生成一個用于確保該用戶和KDC之間通信安全的會話秘鑰——Logon Session Key,并采用該用戶密碼派生的秘鑰進行加密。KAS接著為該用戶創(chuàng)建“認(rèn)購權(quán)證”——TGT。TGT主要包含兩方面的內(nèi)容:用戶相關(guān)信息和Logon Session Key,而整個TGT則通過KDC自己的密鑰進行加密。最終,被不同密鑰加密的Logon Session Key和TGT返回給客戶端。(以上的內(nèi)容對應(yīng)流程圖中的步驟1、2)

三、如何通過“認(rèn)購權(quán)證”購買“入場券”?

 

image

 

經(jīng)過上面的步驟,客戶端獲取了購買進入同域中其他主機入場券的“認(rèn)購憑證”——TGT,以及Logon Session Key,它會在本地緩存此TGT和Logon Session Key。如果現(xiàn)在它需要訪問某臺服務(wù)器的資源,它就需要憑借這張TGT向KDC購買相應(yīng)的入場券。這里的入場券也有一個專有的名稱——服務(wù)票據(jù)(ST:Service Ticket)。

具體來說,ST是通過KDC的另一個服務(wù)TGS(Ticket Granting Service)出售的??蛻舳讼认騎GS發(fā)送一個ST購買請求,該請求主要包含如下的內(nèi)容:客戶端用戶名;通過Logon Session Key加密的Authenticator;TGT和訪問的服務(wù)器(其實是服務(wù))名。

TGS接收到請求之后,現(xiàn)通過自己的密鑰解密TGT并獲取Logon Session Key,然后通過Logon Session Key解密Authenticator,進而驗證了對方的真實身份。

TGS存在的一個根本的目有兩點:其一是避免讓用戶的密碼客戶端和KDC之間頻繁傳輸而被竊取。其二是因為密碼屬于Long Term Key(我們一般不會頻繁的更新自己的密碼),讓它作為加密密鑰的安全系數(shù)肯定小于一個頻繁變換得密鑰(Short Term Key)。而這個Short Term Key就是Logon Session Key,它確保了客戶端和KDC之間的通信安全。

TGS完成對客戶端的認(rèn)證之后,會生成一個用于確??蛻舳?服務(wù)器之間通信安全的會話秘鑰——Service Session Key,該會話秘鑰通過Logon Session Key進行加密。然后出售給客戶端需要的入場券——ST。ST主要包含兩方面的內(nèi)容:客戶端用戶信息和Service Session Key,整個ST通過服務(wù)器密碼派生的秘鑰進行加密。最終兩個被加密的Service Session Key和ST回復(fù)給客戶端。(以上的內(nèi)容對應(yīng)流程圖中的步驟3、4)

四、憑票入場

 

image

 

客戶端接收到TGS回復(fù)后,通過緩存的Logon Session Key解密獲取Service Session Key。同時它也得到了進入服務(wù)器的入場券——ST。那么它在進行服務(wù)訪問的時候就可以借助這張ST憑票入場了。該Serivce Session Key和ST會被客戶端緩存。

但是,服務(wù)端在接收到ST之后,如何確保它是通過TGS購買,而不是自己偽造的呢?這很好辦,不要忘了ST是通過自己密碼派生的秘鑰進行加密的。具體的操作過程是這樣的,除了ST之外,服務(wù)請求還附加一份通過Service Session Key加密的Authenticator。服務(wù)器在接收到請求之后,先通過自己密碼派生的秘鑰解密ST,并從中提取Service Session Key。然后通過提取出來的Service Session Key解密Authenticator,進而驗證了客戶端的真實身份。

實際上,到目前為止,服務(wù)端已經(jīng)完成了對客戶端的驗證,但是,整個認(rèn)證過程還沒有結(jié)束。談到認(rèn)證,很多人都認(rèn)為只是服務(wù)器對客戶端的認(rèn)證,實際上在大部分場合,我們需要的是雙向驗證(Mutual Authentication)——訪問者和被訪問者互相驗證對方的身份?,F(xiàn)在服務(wù)器已經(jīng)可以確??蛻舳耸撬暦Q的那么用戶,客戶端還沒有確認(rèn)它所訪問的不是一個釣魚服務(wù)呢。

為了解決客戶端對服務(wù)器的驗證,服務(wù)要需要將解密后的Authenticator再次用Service Session Key進行加密,并發(fā)揮給客戶端??蛻舳嗽儆镁彺娴腟ervice Session Key進行解密,如果和之前的內(nèi)容完全一樣,則可以證明自己正在訪問的服務(wù)器和自己擁有相同的Service Session Key,而這個會話秘鑰不為外人知曉(以上的內(nèi)容對應(yīng)流程圖中的步驟5、6)

以上的內(nèi)容僅僅講述的是基于Kerberos的Windows認(rèn)證的大體流程,并不涉及到一些細(xì)節(jié)的東西,比如如何確保時間的同步,如何抵御Replay Attack等。此外,由于本文對Windows底層的知識有限,不能確保所有的內(nèi)容都是完全正確,如有錯誤,還往不吝指正。

責(zé)任編輯:王程程 來源: 紅黑聯(lián)盟
相關(guān)推薦

2013-04-15 17:55:12

Windows認(rèn)證安全認(rèn)證

2024-05-08 08:16:11

2021-08-26 10:05:31

APP安全加密網(wǎng)絡(luò)攻擊

2009-12-08 11:34:40

WCF Windows

2013-10-17 23:12:12

Windows 8.1Windows 8.1

2015-05-18 09:54:39

2020-08-06 00:14:16

Spring IoC依賴注入開發(fā)

2021-08-12 14:24:38

Windows 10Windows微軟

2023-10-17 00:01:34

Linux操作系統(tǒng)

2019-08-16 09:46:51

2021-12-01 15:52:56

安全開發(fā)測試

2011-07-25 10:48:34

服務(wù)器虛擬服務(wù)器

2013-12-02 15:36:31

Windows Ser系統(tǒng)映像還原Windows Ser

2010-02-02 10:04:58

2011-09-14 14:02:49

2011-07-27 15:09:04

2010-05-24 16:21:55

SVNServer安裝

2014-09-19 10:46:36

LuaCC++

2011-08-17 16:25:44

windows7系統(tǒng)鏡像備份和還原

2020-04-06 14:50:43

MySQLSQL數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號