<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認證過程

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

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

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

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

    下:

    Client向KDC的Authentication Service發送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的大體包含以下的內容:

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

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

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

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

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

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

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

    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)發送Ticket Granting Service Request

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

    TGT:Client通過AS Exchange獲得的Ticket

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

    密。
    Authenticator:用以證明當初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在發給Client真正的Ticket之前,先得整個Client提供的那個TGT是否是AS頒發給它的。于是它不得不通過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進行驗證。驗證通過向對方發送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大體包含以下一些內容:

    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是一種高效的認證方式,它可以直接通

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

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

    Exchange。

    3. CS(Client/Server )Exchange

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

    送給Server。除了上述兩項內容之外,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)進行加密,并將其發送給Client用于

    Client驗證Server的身份。

    想要更深入的理解kerberos,請參考官方網站

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

    主站蜘蛛池模板: 亚洲国产熟亚洲女视频| 在线看片韩国免费人成视频| 亚洲情A成黄在线观看动漫软件| 中文字幕在线亚洲精品| 尤物永久免费AV无码网站| free哆啪啪免费永久| 毛片在线播放免费观看| gogo免费在线观看| 亚洲av日韩av永久无码电影| 亚洲综合久久一本伊伊区| 亚洲狠狠久久综合一区77777| 国产亚洲自拍一区| 亚洲AV之男人的天堂| 国产高清免费的视频| 免费看韩国黄a片在线观看| 亚洲成人免费电影| 99久久99久久免费精品小说| 国产白丝无码免费视频| 国产在线观a免费观看| 国产精品内射视频免费| 一级做a爱过程免费视频高清| 美女无遮挡免费视频网站| 久久精品国产亚洲AV天海翼| 亚洲成av人无码亚洲成av人| 国产成人亚洲合集青青草原精品 | 国产精品亚洲lv粉色| 亚洲综合av一区二区三区不卡| 亚洲一线产区二线产区精华| 亚洲区视频在线观看| 亚洲一级毛片视频| 亚洲依依成人亚洲社区| 亚洲欧美综合精品成人导航| 亚洲精品成a人在线观看☆| 亚洲日韩AV一区二区三区中文| 亚洲精品无码久久久久秋霞| 亚洲av综合av一区二区三区| 婷婷亚洲综合五月天小说在线| 老外毛片免费视频播放| 亚洲免费在线观看| 国产精品免费看久久久 | 亚洲美女视频网站|