<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 72, comments - 66, trackbacks - 0, articles - 0

    kerberos認(rèn)證過程

    Posted on 2008-04-22 23:21 Fingki.li 閱讀(2696) 評論(0)  編輯  收藏 所屬分類: About security

    由于最近的項目中要用到kerberos and spnego protocol,查了一些資料,結(jié)合網(wǎng)上的資料和對它一定的理解,整理如下,以備后查.(如有不對之處,肯請高手指教)
    kerberos是一個很重要的網(wǎng)絡(luò)認(rèn)證協(xié)議,它實現(xiàn)了在一個非安全的網(wǎng)絡(luò)環(huán)境中,一個實體向另一個實體證實自己的身份,從而以安全的方式進行交流.kerberos protocol已經(jīng)被廣泛應(yīng)用于各種應(yīng)用中,最為典型的莫過于windows中的kerberos認(rèn)證,它在spnego protocol之下,為windows域用戶登錄提供安全保障.
    首先相關(guān)名詞:
    Long term key:就是長期保持不變的key.
    Master key:就是Long term key經(jīng)過Hash運算得到的Hash code.
    Short term key:就是只在一定時間內(nèi)有效的key.有時也叫Session key.
    原則上Long term key 是不能在網(wǎng)絡(luò)上傳輸?shù)?因為很可能Long term key在傳輸過程中被人截獲,一旦它被截獲,原則上只要有足夠的時間,就可以被破解.另外,對于一個帳戶而言,密碼僅限于該用戶知道,對于domain的Administrator也應(yīng)該保密,但由于密碼是用戶向Administrator證明身份的憑據(jù),所以要基于用戶的密碼生成來的信息來證明用戶的身份,通常做法是對密碼進行Hash運算,生成Hash code,這個Hash code就是我們說的Master key.因為Hash Algorithm具有不可逆,同時保證了密碼與Master key一一對應(yīng)的特性,保證了密碼的保密性,也保證了Master key可以代表密碼作為用戶身份的憑證.而作為 Short term key,用來加密在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù),由于它只在一定時間內(nèi)有效,即使被人截獲,等到被破解時,這個key早就過期了.
    Client 服務(wù)請求者
    Server 服務(wù)提供者
    KDC kerberos distribution certer.在整個認(rèn)證過程中作為client和server共同信認(rèn)的第三方.
    以windows2003中的Domain為例,Domain Controller扮演著kdc的角色.

    下面我來介紹一下這kerberos協(xié)議如何實現(xiàn)認(rèn)證的.
    前提:client和server都在kdc上已注冊.
    第一步 Authentication Service Exchange
    第二步 Ticket Granting Service Exchange
    第三步 Client/Server Exchange
      首先Client向kdc申請server服務(wù),kdc查看server服務(wù)是受保護的服務(wù),所以要驗證client的身份,這就是第一步,kdc驗證client的身份(Authentication Service Exchange).當(dāng)kdc核實client的身份正確后,會給client一個證明,用這個證明我們可以得到訪問server服務(wù)的許可證(Ticket),所以我們把這個證明叫做TGT(Ticket Granting Ticket).
    當(dāng)client得到TGT后,用TGT來向kdc索要訪問server服務(wù)的通行證(Ticket),這就是第二步Ticket Granting Service Exchange.
    當(dāng)client得到通行證(Ticket)后,就與server交互,向server出示通行證(Ticket),即第三步Client/Server Exchange,從可得到server的服務(wù).
    以上三步的具體實現(xiàn)要復(fù)雜得多,簡單介紹如下:
    1. Authentication Service Exchange

    通過這個Sub-protocol,KDC(確切地說是KDC中的Authentication Service)實現(xiàn)對Client身份的確認(rèn),并頒發(fā)給該Client一個TGT。具體過程如

    下:

    Client向KDC的Authentication Service發(fā)送Authentication Service Request(KRB_AS_REQ), 為了確保KRB_AS_REQ僅限于自己和KDC知道,

    Client使用自己的Master Key對KRB_AS_REQ的主體部分進行加密(KDC可以通過Domain 的Account Database獲得該Client的Master Key)。

    KRB_AS_REQ的大體包含以下的內(nèi)容:

    Pre-authentication data:包含用以證明自己身份的信息。說白了,就是證明自己知道自己聲稱的那個account的Password。一般地,它的內(nèi)容是

    一個被Client的Master key加密過的Timestamp。
    Client name & realm: 簡單地說就是Domain name\Client Server Name:注意這里的Server Name并不是Client真正要訪問的Server的名稱,而我們也說

    了TGT是和Server無關(guān)的(Client只能使用Ticket,而不是TGT去訪問Server)。這里的Server Name實際上是KDC的Ticket Granting Service的Server Name。
    AS(Authentication Service)通過它接收到的KRB_AS_REQ驗證發(fā)送方的是否是在Client name & realm中聲稱的那個人,也就是說要驗證發(fā)送放是

    否知道Client的Password。所以AS只需從Account Database中提取Client對應(yīng)的Master Key對Pre-authentication data進行解密,如果是一個合法

    的Timestamp,則可以證明發(fā)送放提供的是正確無誤的密碼。驗證通過之后,AS將一份Authentication Service Response(KRB_AS_REP

    )發(fā)送給Client。KRB_AS_REQ主要包含兩個部分:本Client的Master Key加密過的Session Key(

    SKDC-Client:Logon Session Key)和被自己(KDC)加密的TGT。而TGT大體又包含以下的內(nèi)容

    Session Key: SKDC-Client:Logon Session Key
    Client name & realm: 簡單地說就是Domain

    name\Client
    End time: TGT到期的時間。
    Client通過自己的Master Key對第一部分解密獲得Session Key(SKDC-Client:Logon Session Key)之后,攜帶著TGT便可以進入下一步:TGS(

    Ticket Granting Service)Exchange。

    2. TGS(Ticket Granting Service)Exchange

    TGS(Ticket Granting Service)Exchange通過Client向KDC中的TGS(Ticket Granting Service)發(fā)送Ticket Granting Service Request

    (KRB_TGS_REQ)開始。KRB_TGS_REQ大體包含以下的內(nèi)容:

    TGT:Client通過AS Exchange獲得的Ticket

    Granting Ticket,TGT被KDC的Master Key進行加

    密。
    Authenticator:用以證明當(dāng)初TGT的擁有者是否就是自己,所以它必須以TGT的辦法方和自己的Session Key(SKDC-Client:Logon Session Key

    )來進行加密。
    Client name & realm: 簡單地說就是Domain name\Client。
    Server name & realm: 簡單地說就是Domain name\Server,這回是Client試圖訪問的那個Server。
    TGS收到KRB_TGS_REQ在發(fā)給Client真正的Ticket之前,先得整個Client提供的那個TGT是否是AS頒發(fā)給它的。于是它不得不通過Client提供的

    Authenticator來證明。但是Authentication是通過Logon Session Key(SKDC-Client)進行加密的,而自己并沒有保存這個Session Key。所以

    TGS先得通過自己的Master Key對Client提供的TGT進行解密,從而獲得這個Logon Session Key(SKDC-Client),再通過這個Logon Session

    Key(SKDC-Client)解密Authenticator進行驗證。驗證通過向?qū)Ψ桨l(fā)送Ticket Granting Service Response(KRB_TGS_REP)。這個KRB_TGS_REP有

    兩部分組成:使用Logon Session Key(SKDC-Client)加密過用于Client和Server的Session Key(SServer-Client)和使用Server的Master

    Key進行加密的Ticket。該Ticket大體包含以下一些內(nèi)容:

    Session Key:SServer-Client。
    Client name & realm: 簡單地說就是Domain name\Client。
    End time: Ticket的到期時間。
    Client收到KRB_TGS_REP,使用Logon Session Key(SKDC-Client)解密第一部分后獲得Session Key(SServer-Client)。有了Session Key和

    Ticket,Client就可以之間和Server進行交互,而無須在通過KDC作中間人了。所以我們說Kerberos是一種高效的認(rèn)證方式,它可以直接通

    過Client和Server雙方來完成,不像Windows NT 4下的NTLM認(rèn)證方式,每次認(rèn)證都要通過一個雙方信任的第3方來完成。

    我們現(xiàn)在來看看 Client如果使用Ticket和Server怎樣進行交互的,這個階段通過我們的第3個Sub-protocol來完成:CS(Client/Server )

    Exchange。

    3. CS(Client/Server )Exchange

    Client通過TGSExchange獲得Client和Server的Session Key(SServer-Client),隨后創(chuàng)建用于證明自己就是Ticket的真正所有者的Authenticator,并使用Session Key(SServer-Client)進行加密。最后將這個被加密過的Authenticator和Ticket作為Application Service Request(KRB_AP_REQ)發(fā)

    送給Server。除了上述兩項內(nèi)容之外,KRB_AP_REQ還包含一個Flag用于表示Client是否需要進行雙向驗證(Mutual Authentication)。

    Server接收到KRB_AP_REQ之后,通過自己的Master Key解密Ticket,從而獲得Session Key(SServer-Client)。通過Session Key(SServer

    -Client)解密Authenticator,進而驗證對方的身份。驗證成功,讓Client訪問需要訪問的資源,否則直接拒絕對方的請求。

    對于需要進行雙向驗證,Server從Authenticator提取Timestamp,使用Session Key(SServer-Client)進行加密,并將其發(fā)送給Client用于

    Client驗證Server的身份。

    想要更深入的理解kerberos,請參考官方網(wǎng)站

    http://web.mit.edu/Kerberos/

    主站蜘蛛池模板: 亚洲永久无码3D动漫一区| 国产色爽免费视频| 久久夜色精品国产嚕嚕亚洲av| 国产av无码专区亚洲av毛片搜| 黄a大片av永久免费| 香港经典a毛片免费观看看| 免费va在线观看| 一级美国片免费看| 国产亚洲无线码一区二区 | 99热在线免费观看| 无码乱人伦一区二区亚洲| 久久久久国色av免费看| 亚洲欧洲综合在线| 啦啦啦高清视频在线观看免费| 中文字幕亚洲综合久久综合| 日本不卡在线观看免费v| 成年网在线观看免费观看网址| 亚洲精品岛国片在线观看| 中文在线观看永久免费| 亚洲午夜未满十八勿入| 欧洲一级毛片免费| 亚洲精品国产高清在线观看| 亚洲成a人无码av波多野按摩 | 亚洲国产超清无码专区| 精品免费国产一区二区三区| 阿v免费在线观看| 久久精品国产亚洲av麻豆| 国产精品入口麻豆免费观看| 亚洲精品永久在线观看| 国产成人综合亚洲亚洲国产第一页| 国产高清不卡免费视频| 亚洲最大的成人网| 国产偷国产偷亚洲清高动态图| 99精品一区二区免费视频| 亚洲欧洲无码AV不卡在线| 国产亚洲精品不卡在线| 国产h肉在线视频免费观看| 麻豆va在线精品免费播放| 久久精品亚洲视频| 四虎在线免费播放| 毛片在线播放免费观看|