周 瑋,雒江濤
(重慶郵電大學(xué) 通信網(wǎng)與測試技術(shù)重點(diǎn)實(shí)驗室,重慶 400065)
IMS被認(rèn)為是下一代網(wǎng)絡(luò)的核心技術(shù)[1],也是解決移動與固網(wǎng)融合,引入語音、數(shù)據(jù)、視頻三重播放等差異化業(yè)務(wù)的重要方式,而IMS客戶端逐漸成為開發(fā)和研究的熱點(diǎn)。作為相對獨(dú)立的安全體系,IMS要求所有的用戶在使用IMS服務(wù)之前都必須進(jìn)行鑒權(quán),協(xié)商建立安全的接入通道。IMS終端需要包括IMS網(wǎng)絡(luò)鑒權(quán)中包含的參數(shù)(如身份識別、用戶授權(quán)和終端設(shè)置數(shù)據(jù)等),并存儲共享密鑰和相應(yīng)的AKA算法。筆者通過對IMS客戶端認(rèn)證的研究與實(shí)現(xiàn),為更好地開發(fā)客戶端提供基礎(chǔ)。
3GPP TS 33.203定義了IMS接入網(wǎng)絡(luò)的安全機(jī)制,在IMS的安全體系中,從終端到網(wǎng)絡(luò)的各個實(shí)體 (PCSCF,S-CSCF,HSS)都涉及到了接入和核心網(wǎng)部分的安全概念。其安全結(jié)構(gòu)如圖1所示[2]。
由圖1可以看出,IMS的接入安全體系結(jié)構(gòu)包括5個層面:1)提供用戶和網(wǎng)絡(luò)之間的雙向認(rèn)證。HSS產(chǎn)生認(rèn)證數(shù)據(jù),并且委托S-CSCF執(zhí)行用戶認(rèn)證,認(rèn)證基于保存在HSS中的密鑰和函數(shù);2)為終端和P-CSCF間的通信提供1個安全連接;3)提供網(wǎng)絡(luò)域內(nèi)CSCF和HSS間的安全;4)為不同網(wǎng)絡(luò)間的CSCF提供安全;5)為網(wǎng)絡(luò)內(nèi)部的CSCF提供安全。
圖1 IMS安全體系結(jié)構(gòu)
IMS接入安全是由安全層面1)和安全層面2)的部分組成。筆者主要研究安全層面1)中終端和HSS之間的用戶認(rèn)證部分,該認(rèn)證采用的是AKA機(jī)制。
IMS的鑒權(quán)機(jī)制采用3GPP AKA機(jī)制的原理和核心算法,因此被稱為IMS AKA,該機(jī)制是基于SIP協(xié)議來實(shí)現(xiàn)的。RFC3310中定義的3GPP AKA參數(shù)映射到HTTP摘要認(rèn)證中,AKA作為摘要式認(rèn)證的一次性密鑰產(chǎn)生機(jī)制,以支持終端對網(wǎng)絡(luò)的認(rèn)證[3]。
由于IMS中的認(rèn)證過程[4]與SIP消息的注冊過程直接結(jié)合在一起,以IMS終端的注冊過程(見圖2)分析其AKA的認(rèn)證機(jī)制。
圖2 IMS終端注冊流程圖
IMS終端在使用IMS網(wǎng)絡(luò)之前需要先注冊用戶,這就需要在發(fā)送注冊請求的時候攜帶用戶的認(rèn)證信息。比如用戶的私有身份(IMPI)、共享密鑰等。首先終端發(fā)送注冊請求到P-CSCF,P-CSCF將這個注冊信息轉(zhuǎn)發(fā)給ICSCF,然后I-CSCF聯(lián)系HSS,以獲取S-CSCF的地址。根據(jù)IMPI,S-CSCF從HSS下載適合的認(rèn)證向量AV。圖3是HSS生成AV的過程:AKA參數(shù)核心算法由3GPP TS35.206[5]提供。
圖3 認(rèn)證向量產(chǎn)生過程
S-CSCF保存XRES值,發(fā)送401響應(yīng)到P-CSCF。終端收到401響應(yīng)后進(jìn)行鑒權(quán)。根據(jù)接收到的Nonce值通過解碼得到隨機(jī)數(shù)RAND,根據(jù)RAND計算出匿名密鑰AK,然后利用AK恢復(fù)出序列號SQN。根據(jù)RAND,SQN和用戶保存的認(rèn)證管理域AMF,利用圖4所示的算法計算出期待的鑒權(quán)值XMAC、隨機(jī)數(shù)的響應(yīng)RES、加密密鑰CK、完整性校驗密鑰IK。終端比較MAC和XMAC,如果相同,則驗證接收到的SQN是否在正確的范圍內(nèi),若不在,則向S-CSCF發(fā)送一個同步失敗的信息,并中止認(rèn)證流程,如果在,則將RES發(fā)送給S-CSCF。
圖4 終端產(chǎn)生AV的過程
在終端實(shí)現(xiàn)認(rèn)證主要是對服務(wù)器返回的401響應(yīng)中SIP消息頭的解析[6],它是通過SIP協(xié)議棧與服務(wù)器之間的管道返回帶有鑒權(quán)信息的消息頭。其算法的實(shí)現(xiàn)流程如圖5所示。
圖5 AKA算法流程圖
當(dāng)服務(wù)器返回401響應(yīng)時,通過底層的SIP協(xié)議棧,把帶有鑒權(quán)信息的SIP消息傳送到應(yīng)用層,也就是終端。終端收到這個響應(yīng)后,開始鑒權(quán)。首先提取SIP消息頭中的鑒權(quán)信息。鑒權(quán)信息中最主要的參數(shù)是Nonce值,它是由服務(wù)器端根據(jù)RAND和AUTN串接后進(jìn)行BASE64編碼得到的。另外還可以從解析出的消息中得到Algorithm值,用來指示服務(wù)器采用的認(rèn)證機(jī)制,客戶端則應(yīng)該用同樣的認(rèn)證機(jī)制去匹配服務(wù)器。提取關(guān)鍵信息后,終端開始調(diào)用AKA處理方法,計算出終端鑒權(quán)所需要的RES,以及為以后安全傳送信息而使用的CK和IK。并且把計算出的XMAC與從AUTN中解析出的MAC進(jìn)行匹配。若相同,則用戶認(rèn)證網(wǎng)絡(luò)身份通過。終端繼續(xù)比較SQN,通過隨機(jī)數(shù)RAND計算出匿名密鑰AK,然后使用AK來恢復(fù)序列號SQN。若SQN在正確的范圍內(nèi),向服務(wù)器發(fā)送攜帶RES的SIP消息到服務(wù)器,等待服務(wù)器端的認(rèn)證。
OSIP2協(xié)議棧是對OSIP協(xié)議棧的升級,其整體結(jié)構(gòu)和功能同OSIP一樣。OSIP是根據(jù)RFC3261(SIP)和RFC2327(SDP)標(biāo)準(zhǔn),使用標(biāo)準(zhǔn)C語言編寫的1個SIP協(xié)議棧,主要是提供SIP/SDP消息解析的API接口。OSIP主要由狀態(tài)機(jī)模塊、解析器模塊和工具模塊3部分組成。其中解析器模塊主要是對SIP消息、SDP消息、URL的解析以及SIP消息頭域的解析處理。筆者對AKA認(rèn)證的實(shí)現(xiàn),主要是通過解析器模塊中對SIP消息頭中攜帶WWW-Authenticate參數(shù)的頭域解析函數(shù)的調(diào)用,實(shí)現(xiàn)其認(rèn)證信息的獲取。
eXosip是對OSIP2協(xié)議棧的封裝和調(diào)用。它使用UDP socket套接字實(shí)現(xiàn)底層SIP協(xié)議的接收/發(fā)送。并且封裝了SIP消息的解析器。eXosip使用jevent消息管道通知上層調(diào)用程序底層發(fā)生的事件,調(diào)用程序只需讀取該消息管道,獲得相應(yīng)的事件,進(jìn)行相關(guān)的處理。本文中的AKA認(rèn)證實(shí)現(xiàn)采用eXosip中jevent消息管道傳輸服務(wù)器返回的響應(yīng),獲取需要的認(rèn)證信息,并作相應(yīng)的處理。
根據(jù)上述對AKA算法的設(shè)計以及對OSIP2協(xié)議棧中SIP消息頭域函數(shù)的調(diào)用,獲取SIP消息鑒權(quán)信息,完成了對AKA認(rèn)證的實(shí)現(xiàn)。終端發(fā)送用戶的注冊信息,服務(wù)器收到用戶注冊請求后,發(fā)送401響應(yīng)給用戶。用戶收到服務(wù)器返回的401響應(yīng)時,開始處理鑒權(quán)。
1)步驟1
調(diào)用 void imsue_process_401(eXosip_event_t*je),對服務(wù)器返回的401消息進(jìn)行解碼。解碼的結(jié)果保存在eXosip_event_t結(jié)構(gòu)體變量中,je指向該結(jié)構(gòu)體變量。
2)步驟2
調(diào)用osip_message_get_www_authenticate(je->response,0,&www_header),提取返回的401消息的頭域信息,將該頭域信息寫入www_header內(nèi),其結(jié)構(gòu)定義為:
3)步驟3
調(diào)用osip_www_authenticate_get_algorithm(www_head er),得到服務(wù)器返回的用戶用來生成摘要的算法。然后調(diào)用 osip_www_authenticate_get_nonce (www_header),獲取nonce64,該值是將128 bit的RAND、128 bit的AUTN和可選的服務(wù)器數(shù)據(jù)串連后進(jìn)行Base64編碼后得到的。
4)步驟4
調(diào) 用 base64_decode_string (nonce64.s,nonce64.len,&noncelen),對獲得的nonce64進(jìn)行解碼,提取認(rèn)證中重要的參數(shù)RAND和AUTN。調(diào)用AKA(int version,str nonce 64,str k),獲得 RES,CK 和 IK。 其中 version 是終端將采用的AKA算法的版本,例如Algorithm為AKAv1-MD5,設(shè)置version為1。K是共享密鑰,對于軟終端來說是用戶輸入的密碼。 其中比較重要的函數(shù)有 f2(),f3(),f4(),為Milenage算法[5]中的3個子算法:f2為消息鑒權(quán)函數(shù),用于用戶鑒權(quán)計算RES期望的響應(yīng)值;f3為密鑰生成函數(shù),用于計算加密密鑰CK;f4為密鑰生成函數(shù),用于計算消息完整性密鑰IK。
5)步驟5
調(diào)用 f1star(u8 k[16],u8 rand[16],u8 sqn[6],u8 amf[2],u8 mac_s[8]),獲取 XMAC。 f1()是 Milenage 算法[5,7]中的 1個子算法,用于計算網(wǎng)絡(luò)鑒權(quán)時的XMAC。然后將從AUTN中提取的MAC,與XMAC進(jìn)行比較,結(jié)果一致,則繼續(xù)對SQN進(jìn)行判斷,其值在規(guī)定的范圍內(nèi),則終端認(rèn)證結(jié)束,上傳RES。
IMS終端用戶注冊O(shè)penims網(wǎng)絡(luò)時抓取的數(shù)據(jù)表明這是一次成功的用戶注冊。下面是實(shí)測的一條終端發(fā)送的第2次注冊攜帶鑒權(quán)信息的SIP消息數(shù)據(jù):41 75 74 68 6f 72 69 7a 61 74 69 6f 6e 3a 20 44 69 67 65 73 74 20 75 73 65 72 6e 61 6d 65 3d 22 61 6c 69 63 65 40 6f 70 65 6e 2d 69 6d 73 2e 74 65 73 74 22 2c 50 72 65 61 6c 6d 3d 22 6f 70 65 6e 2d 69 6d 73 2e 74 65 73 74 22 2c 20 6e 6f 6e 63 65 3d 22 55 78 4b 57 76 65 56 39 5a 59 47 50 64 62 77 63 41 78 47 46 78 30 71 62 64 4e 48 4b 73 67 41 41 76 33 78 6b 6d 43 66 4d 5a 4d 41 3d 22 2c 20 75 72 69 3d 22 73 69 70 3a 6f 70 65 6e 2d 69 6d 73 2e 74 65 73 74 22 2c 20 72 65 73 70 6f 6e 73 65 3d 22 62 38 37 32 30 37 35 39 62 34 39 62 31 35 36 31 38 31 63 34 33 32 35 63 35 35 32 30 64 66 37 36 22 2c 20 61 6c 67 6f 72 69 74 68 6d 3d 41 4b 41 76 31 2d 4d 44 35。
終端實(shí)現(xiàn)AKA算法后進(jìn)行消息的解析,其解析結(jié)果在協(xié)議分析儀中實(shí)際解析出來的消息如圖6所示。
圖6 實(shí)測鑒權(quán)信息
從圖6中可以看出,字段Digest Authentication Res ponse是通過AKA算法實(shí)現(xiàn)后得到的RES,其值為“b8720759b49b156181c4325c5520df76”,對應(yīng)的數(shù)據(jù)是:22 62 38 37 32 30 37 35 39 62 34 39 62 31 35 36 31 38 31 63 34 33 32 35 63 35 35 32 30 64 66 37 36 22。
在IMS時代,終端是IMS產(chǎn)業(yè)鏈的重要組成部分。IMS終端作為IMS網(wǎng)絡(luò)最終的受益者,其如何更安全的介入IMS網(wǎng)絡(luò)成為今后研究的重要課題。IMS接入安全的進(jìn)一步研究,需要不斷完善IMS的安全機(jī)制。IMS AKA的采用使得用戶接入網(wǎng)絡(luò)的安全性越來越高。本算法可以實(shí)現(xiàn)成功注冊到IMS網(wǎng)絡(luò),具有很高的實(shí)用性。
[1]程劍齋.關(guān)于構(gòu)建下一代網(wǎng)絡(luò)問題的討論[J].電視技術(shù),2006(8):4-5.
[2]3GPP TS 33.203 V9.0.0,3rd generation partnership project;technical specification group services and system aspects; 3G security; access security for IP-based services (release 9)[S].2009.
[3]程寶平,梁守青.IMS原理與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.
[4]RFC3310,Hypertext transfer protocol (HTTP)digest authentication using authentication and key agreement(AKA)[S].2002.
[5]3GPP TS 29.228v7.5.0,IP multimedia (IM)subsystem Cx and Dx interfaces signalling flows and message contents (Release 7)[S].2007.
[6]POIKSELKA M,MAYER G.IMS:移動領(lǐng)域的lP多媒體概念和服務(wù)[M].趙鵬,周勝,望玉梅,等,譯.北京:機(jī)械工業(yè)出版社,2005.
[7]3GPP TS 35.206 V8.0.0,Specification of the MILENAGE algorithm set:an example algorithm set for the 3GPP authentication and key generation functions f1, f1*, f2, f3, f4, f5 and f5*;document 2:algorithm specification(release 8)[S].2008.