無線端安全登入與鑑權一之Kerberos

muzhi121發表於2017-04-02

無線端登入與鑑權是安全登入以及保證使用者資料安全的第一步,也是最重要的一步。之前做過一個安全登入與鑑權的方案,借這個機會,系統的思考一下,與大家交流交流

先介紹一下TX系統使用的Kerberos方案,參考了 http://blog.csdn.net/wulantian/article/details/42418231 的文章

一、概念介紹

Kerberos:起源於希臘神話,是一支守護著冥界長著3個頭顱的神犬,在keberos Authentication中,Kerberos的3個頭顱代表中認證過程中涉及的3方:Client、Server和KDC,而Kerberos的認證過程就是通過這3方協作完成。

KDC:Kerberos Distribution Center,KDC在整個Kerberos Authentication中作為Client和Server共同信任的第三方起著重要的作用,KDC有兩個模組,一個是AuthenticationService,鑑權模組,就是用來認證使用者身份的,另一個叫GrantingService,授權模組,頒發訪問Service的Ticket給客戶端;

TGT:Ticket Granting Ticket,獲取Ticket的授權,類似股票中的認購證;

Ticket:票據,入場券,訪問伺服器資源的憑證

MasterKey:主金鑰,使用者的明文密碼經過hash演算法後儲存在資料庫的密碼,不可逆;

SessionKey:會話金鑰,客戶端與服務端通訊期間的金鑰;

Skdc_client:KDC和Client之間的SessionKey

Skdc_service:KDC和Service之間的SessionKey

Sserver_client:Service和Client之間的SessionKey

二、原理

整個Kerberos是基於ticket(票據的),先借用一個形象的例子解釋下原理

Kerberos原理:我(Client)到遊樂場去玩,在遊樂場的售票處(KDC的AuthenticationService模組)買了一張門票(Ticket),遊樂場有很多娛樂專案,像摩天輪啊、過山車、海盜船……等等的,我先排隊玩摩天輪(Service),然後到摩天輪的入口處,驗票員美女要驗我的票,她就拿著我的票到授權伺服器(KDC的GrantingService模組)去刷一下,然後滴……學生卡,出來了一個座位號(Ticket),然後就拿著座位號去玩摩天輪(Service),摩天輪的驗票員檢查我的座位號(Ticket),能過後,我就可以開心地玩過山車了;然後我又來到摩天輪的地方,按照同樣的流程去玩……

Kerberos就是實現了這樣的一個過程

 

三、時序圖

 

有一個有意思的地方,TGT本來是應該KDC直接發給Server的,這裡KDC交給了Client轉發,為什麼?因為KDC懶,哈哈……

如果同時發給Client和Server會存在一個先後的問題,必須保證Server在Client之前收到,這個是沒辦法的,所以比較好的方式是Client帶過去。

 

以上這個就是Kerberos最基本的認證方式,叫域內認證模式,這種方式是有點問題的,就是伺服器金鑰加密的資料直接返回給客戶端了,違背了LongTermKey/MasterKey加密的資料不在網上傳輸的原則,所以有一種改進方案,請看 無線端安全登入與鑑權二 

 

相關文章