<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/

    主站蜘蛛池模板: 久久久亚洲精品蜜桃臀| 亚洲不卡无码av中文字幕| 亚洲成AV人片在| 在线播放免费人成毛片乱码| 在线观看亚洲成人| 免费看一区二区三区四区| 亚洲人成中文字幕在线观看| 久久精品无码精品免费专区| 色播亚洲视频在线观看| 91精品视频免费| 亚洲a视频在线观看| 成人性生活免费视频| 豆国产96在线|亚洲| 亚洲精品国产电影| 男人天堂免费视频| 久久99亚洲网美利坚合众国| 国产h视频在线观看免费| 豆国产96在线|亚洲| 亚洲男同帅GAY片在线观看| 在线观看免费无码视频| 亚洲综合网美国十次| 成人毛片18女人毛片免费视频未 | 免费无码又爽又高潮视频| 妇女自拍偷自拍亚洲精品| 国产亚洲精久久久久久无码AV| 久章草在线精品视频免费观看| 久久精品亚洲AV久久久无码| 国产hs免费高清在线观看| a级片免费在线播放| 亚洲国产av美女网站| 亚洲 无码 在线 专区| 男人进去女人爽免费视频国产 | 最近免费中文字幕大全| 一区免费在线观看| 久久亚洲精品无码VA大香大香| 在线观看人成视频免费| 男女拍拍拍免费视频网站| 亚洲娇小性色xxxx| 亚洲麻豆精品国偷自产在线91| 黄瓜视频影院在线观看免费| 九九视频高清视频免费观看|