IMS AKA鑑權及應用流程詳解
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%。
如果要編碼的二進位制資料不是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演算法有Milenage
與XOR
兩種具體實現方式,一般常用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頭域中NONCE
與RESPONSE
欄位值為空,指明鑑權機制為摘要認證,訊息經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請求;
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
如有講述不當之處,請批評指正。
相關文章
- 理解JWT鑑權的應用場景及使用建議JWT
- 關於鑑權流程的捕獲和冒泡子流程
- 歸併排序詳解及應用排序
- BS系統的登入鑑權流程演變
- Oracle minus用法詳解及應用例項Oracle
- 製作tld檔案及應用詳解
- 應用程式池屬性詳解及配置
- SpringSecurity認證和授權流程詳解SpringGse
- asp.net core3.1 實戰開發(授權,鑑權封裝詳解)ASP.NET封裝
- AI助手:Agent工作流程與應用場景詳解AI
- Node.js 應用:Koa2 使用 JWT 進行鑑權Node.jsJWT
- 詳解javascript拖拽(二)拖拽的應用及示例JavaScript
- IIS應用程式池配置詳解及優化優化
- C 語言中 void* 詳解及應用介紹
- AIGC神器CLIP:技術詳解及應用示例AIGC
- Linux網路卡的配置檔案詳解及應用Linux
- WebSphere IMS Connector V6.2 開發計費應用Web
- vmstat的應用詳解
- vue元件級鑑權Vue元件
- .net core jwt 鑑權JWT
- .net core cookie 鑑權Cookie
- API 鑑權新姿勢 – 簽名鑑權API
- API 鑑權新姿勢 - 簽名鑑權API
- .Net for Spark 實現 WordCount 應用及除錯入坑詳解Spark除錯
- 28頁PPT詳解騰訊資料探勘體系及應用
- 【impdp】資料泵impdp工具選項詳解及應用示例
- Android應用Loaders全面詳解及原始碼淺析Android原始碼
- XtraBackup工具詳解 Part 4 XtraBackup許可權及配置
- Linux NFS典型例項及許可權詳解LinuxNFS
- 在MVC中配置鑑權MVC
- 詳解百度ERNIE進化史及典型應用場景
- ERP系統開發 ERP系統詳解及應用
- 一看就懂,Python 日誌模組詳解及應用Python
- 詳解數倉中sequence的應用場景及最佳化
- Android應用AsyncTask處理機制詳解及原始碼分析Android原始碼
- 流程控制詳解
- Paypal授權登入流程及實現
- iOS應用重簽名ipa技術原理及流程iOS