IMS AKA鑑權及應用流程詳解

doubleRabbit發表於2017-03-24

IMS AKA鑑權及應用流程詳解

@auth doubleRabbit
@date 2017-03-14

目的

  • 瞭解鑑權及通訊類業務相關鑑權演算法的概念原理
  • 瞭解IMS註冊流程
  • 瞭解IMS鑑權流程應用

鑑權含義

鑑權是指使用者訪問系統的權利,是提升系統安全性的一種方式,傳統鑑權方法就是使用者名稱與密碼。
鑑權與授權的區別聯絡。邏輯上授權過程發生在鑑權之後,而實際中有時鑑權與授權對於使用者來說體現為同一過程。例如在EPC附著過程中,先發生AIA鑑權過程,再發生ULR位置更新過程(授權)。
接下來講的是針對通訊類業務應用場景,具體涉及IMS註冊流程。

鑑權型別

單向鑑權:使用者鑑權,即網路對使用者鑑權,防止非法使用者接入網路。
雙向鑑權:使用者鑑權與網路鑑權。網路鑑權即使用者鑑權網路,防止使用者接入了非法的網路,例如偽基站。
手機入網採用訊號強弱來進行選擇,偽基站一般發射功率大,相信很多人在2G/3G情況下都碰到過這種情況下,當你到過某一區域時,手機突然離線馬上又上線,收到詐騙與廣告資訊,此時打不通電話,離開一段距離後,又恢復正常。這是由於2G/3G時代採用單向鑑權,偽基站鑑權使用者時直接通過,附著上然後獲取到了你的手機號與卡資訊,給你發資訊,如果雙向鑑權的話,偽基站不知道卡的密碼資訊,手機鑑權網路是肯定不通過的。

鑑權機制與演算法

鑑權機制

鑑權機制是指鑑權過程的執行方式,機制它規範了業務的操作流程。
摘要認證,HTTP/1.0中包括了基本訪問鑑別方案,該方案是採用明文的使用者名稱與密碼在網路傳輸,這樣非常的不安全,後來發展成為基於雜湊加密方式的摘要認證方式,摘要認證的基本意思為取需要認證的一部分資訊,然後利用雜湊加密方法計算得出其比較值。其根據使用協議分為HTTP摘要認證與SIP摘要認證,兩者的計算方法一樣,只是涉及到協議的欄位含義不一樣而己。
SIP摘要:適用於無ISIM 卡的移動和固定終端
HTTP摘要
IMS AKA(AKAV1_MD5與AKAV2_MD5):適用於具有ISIM 卡的移動和固定終端,是對HTTP摘要認證的擴充套件,主要用於使用者的認證和會話金鑰的分發
EARLY_IMS
NASS_BUNDLED

鑑權機制 鑑權型別
HTTP摘要 單向
SIP摘要 單向
IMS AKA 雙向

鑑權演算法

鑑權演算法是指鑑權過程中相關值(原始值、中間值及終值)的生成方法。

MD5

Message Digest Algorithm MD5,為電腦保安領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。另外雜湊函式還有sha-1,具有以下特點。
- 壓縮性:任意長度的資料,算出的MD5值長度都是固定的
- 容易計算:從原資料計算出MD5值很容易
- 抗修改性:對原資料進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別
- 強抗碰撞:已知原資料和其MD5值,想找到一個具有相同MD5值的資料(即偽造資料)是非常困難的
MD5以512位分組來處理輸入的資訊,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位雜湊值。目前各個版本語言都有其開源的實現,如linux系統下的實現檔案(md5.h/md5.c)。

Base64

Base64是一種用64個字元來表示任意二進位制資料的方法。其64個字元如下。
['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然後對二進位制數進行處理,以每3個位元組一組,共24位,再次進行劃分為4組,以6bit表示一組,最後以6bit一組所代表的數值進行查64個字元表中該位置所對應的字元,所得出的字元即為編碼後的字元。可想而知Base64編碼會把3位元組的二進位制資料編碼為4位元組的文字資料,長度增加33%。
base64原理圖
如果要編碼的二進位制資料不是3的倍數,最後會剩下1個或2個位元組怎麼辦?Base64用\x00位元組在末尾補足後,再在編碼的末尾加上1個或2個=號,表示補了多少位元組,解碼的時候,會自動去掉。
Base64適用於小段內容的編碼,比如數字證書籤名、Cookie的內容等。
示例:
EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=
解碼:以上示例總為44個字元,即44*6=264個bit,由於末尾有一個=表示補充了1個位元組8位,所以真實長度為264-8=256位,即標準32個位元組。

AKA

AKA機制是由IETF制定、並被3GPP採用,廣泛用於3G無線網路的鑑權機制。IMS的鑑權機制沿用了這種機制的原理和核心演算法,演算法的詳細介紹查閱TS33.102文件。
AKA
以上為AKA演算法的原理結構圖,AKA演算法有MilenageXOR兩種具體實現方式,一般常用Milenage實現方式,目前對於演算法基本(f1-f5)實現均有不同語言的開源實現。

引數 長度(bits) 備註
SQN 48 序列號
AK 48 匿名鑰匙
CK 128 加密金鑰
IK 128 完整性金鑰
AMF 16 鑑權管理域
MAC 64 訊息鑑權碼
MAC-A 64 網路鑑權碼,一般鑑權時作為MAC值
MAC-S 64 重同步鑑權碼,重同步鑑權時作為MAC值
RES 64 鑑權響應
XRES 64 期望鑑權響應,HSS下發給MME,UE響應後計算響應與此比較,一致則通過
c1,c2,c3,c4,c5 128 常數,與或運算的中間變數
r1,r2,r3,r4,r5 0-127的整數,目標引數的週期性旋轉量

Milenage演算法使用的符號含義

符號 備註
= 等於
十字圓 與或運算
|| 串聯運算,如0000||1111=00001111

IMS業務流程

註冊流程

IMS作為IP融合架構下統一的呼叫會話控制中心,詳細的網元意圖在些不表,涉及到的協議為SIP、Diameter,在UE接入註冊時需要執行鑑權過程,如下圖所示。
註冊流程
鑑權關鍵點:
1,第6步SCSCF向HSS通過MAR請求鑑權向量AV,圖為五元向量組,實際為四元向組(AUTH,XRES,CK,IK);
2,第16步SCSCF計算UE的挑戰回應。
抓包流程如下
抓包
信令內容如下
1,UE發起REGISTER訊息,攜帶註冊內容與鑑權相關引數,nonce與response均為空;

Security-Client: ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=des-ede3-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=aes-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-sha-1-96;prot=esp;mod=trans;ealg=null;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=des-ede3-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=aes-cbc;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800,ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=10056063;spi-s=50257488;port-c=31100;port-s=31800
Authorization: Digest username="460001023420005@ims.mnc000.mcc460.3gppnetwork.org",
realm="ims.mnc000.mcc460.3gppnetwork.org",
uri="sip:ims.mnc000.mcc460.3gppnetwork.org",
nonce="",response=""

2,SCSCF針對初始註冊發起401鑑權挑戰,注入nonce值;

WWW-Authenticate: Digest nonce="EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=",
algorithm=AKAv1-MD5,
realm="ims.mnc000.mcc460.3gppnetwork.org",
ik=c38457266f24afc342f74258a1c9bd48,
ck=8301e8fb4ac1a2e45e591c3a00c08a2f

3,UE回應挑戰,SCSCF鑑權使用者響應

Authorization: Digest nonce="EFHcj+MdcOJcptPq9IiBG+K8+3koDIAALYGFWwW8BZM=",
username="460001023420005@ims.mnc000.mcc460.3gppnetwork.org",
uri="sip:ims.mnc000.mcc460.3gppnetwork.org",
realm="ims.mnc000.mcc460.3gppnetwork.org",
algorithm=AKAv1-MD5,
response="230aecb0480f1db901de081c8b62b964",
integrity-protected="yes"

IMS AKA鑑權流程

IMS AKA鑑權流程涉及到終端UE、PCSCF、SCSCF及HSS網元,UE與HSS共享統一的金鑰,HSS充當鑑權中心生成鑑權向量,不會將原始的金鑰暴露在網路上,PCSCF與UE之間建立IPSEC安全通道,直接與UE之間傳輸通訊,SCSCF負責以HSS的鑑權向量為基準真正執行鑑權決策過程。大體流程如上一節己講,接下來講一下與鑑權相關的具體實現過程。
1,UE發起初始REGISTER請求,即一個不帶integrity-protected引數的或者在認證頭中integrity-protected引數設為No的REGISTER請求,且Authorization頭域中NONCERESPONSE欄位值為空,指明鑑權機制為摘要認證,訊息經P/ICSCF傳遞給SCSCF,SCSCF向HSS傳送MAR請求鑑權向量,HSS生成四元鑑權向量組過程如下;

AV = AUTH||XRES||CK||IK
AUTH = SQN@AK || AMF || MAC
MAC = F1K(SQN || RAND || AMF)
CK = F3K(RAND)
IK = F4K(RAND)
AK = F5K(RAND)
XRES = F2K(RAND)

2,SCSCF收到鑑權向量後,將AUTH值經過Base64編碼後填充到401響應的Authorization頭域中的nonce欄位中,並且將IK與CK值填充到ik與ck欄位中,這兩值不需要編碼,因為屬於內部網元之間的資料交換;
3,PCSCF收到SCSCF傳送的響應,協商建立與UE之間的IPSEC通道,並且將CK與IK欄位去掉,然後將訊息傳送給UE;
4,UE收到401呼應後,通過如下方法計算XMAC值與NONCE值中的MAC值進行比較,如果通過則發起第二次REGISTER請求(CSeq遞增),說明使用者鑑權網路成功,否則繼續傳送第一次REGISTER請求;
UEAKA
5,SCSCF收到第二次REGISTER請求後,該請求攜帶UE計算好的RESPONSE值,SCSCF按摘要認證的方式計算出期望的RESPONSE值,如果兩者一致則說明網路鑑權使用者成功,從而完成整個雙向鑑權的過程,否則返回錯誤響應。

A1 = unq(username-value) ":" unq(realm-value) ":" passwd   // 特別注意此處的passwd即為從HSS獲取的xres值
A2 = Method ":" digest-uri-value
RESPONSE=MD5(MD5(A1),":" nc-value":" unq(cnonce-value)":" unq(qop-value)":" MD5(A2))

參考文件

IMS:移動領域的IP多媒體概念和服務
RFC 2617 摘要認證
RFC 3261 初始會話控制協議
RFC 3588 Diameter基礎協議
3GPP TS35.206 33.102 AKA核心演算法

Q&A

如有講述不當之處,請批評指正。

相關文章