AKA認證初探

DreamerJ發表於2018-07-23

       近期工作中遇到了有關SIP AKA認證的相應協議規範,目前在IMS中已得到應用支援,本文主要是希望探索一下AKA認證的具體機制,以及相應演算法。為簡便起見,暫時先拋開IMS內部架構,從引數著手分析AKA認證。

       AKA認證主要還是基於DIGEST認證方式,在此基礎上加入了對稱加密機制。先簡單看一下AKA的流程圖與信令:

    如圖所示,AKA認證流程與DIGEST認證流程一致,引數MS新增了RAND和AUTN,加下來看一下具體的信令:

1) Initial request
   REGISTER sip:home.mobile.biz SIP/2.0
2)Response containing a challenge
   SIP/2.0 401 Unauthorized
   WWW-Authenticate: Digest
              realm="RoamingUsers@mobile.biz",
              nonce="CjPk9mRqNuT25eRkajM09uTl9nM09uTl9nMz5OX25PZz==",
              qop="auth,auth-int",
              opaque="5ccc069c403ebaf9f0171e9517f40e41",
              algorithm=AKAv1-MD5
3)REGISTER sip:home.mobile.biz SIP/2.0
   Authorization: Digest
              username="jon.dough@mobile.biz",
              realm="RoamingUsers@mobile.biz",
              nonce="CjPk9mRqNuT25eRkajM09uTl9nM09uTl9nMz5OX25PZz==",
              uri="sip:home.mobile.biz",
              qop=auth-int,
              nc=00000001,
              cnonce="0a4f113b",
              response="6629fae49393a05397450978507c4ef1",
              opaque="5ccc069c403ebaf9f0171e9517f40e41"
4)SIP/2.0 200 OK
   Authentication-Info:
              qop=auth-int,
              rspauth="6629fae49393a05397450978507c4ef1",
              cnonce="0a4f113b",
              nc=00000001

       熟悉SIP DIGEST的會發現,參數列面上看,除了algorithm指定為AKAv1-MD5之外,沒有什麼區別,那RAND和AUTN引數跑哪兒去了呢?AKA認證耍了個花招,儘量相容DIGEST,他將RAND(128位)和AUTN(128位)引數進行BASE64編碼後放置在了nonce引數中進行傳遞,如下圖所示:

     RAND為伺服器端生成的128位隨機值,AUTN的生成演算法如下圖所示:

      AUTN的解析演算法如下:

      至於f1-f5演算法通常採用Milenage演算法,具體不在此贅述,此處解析之後,終端將會得到RES引數,然而此RES引數並非DIGEST認證中Authorization頭域的response引數,而是使用RES作為DIGEST認證時的金鑰,從而生成最終的response引數。

       至此,AKA認證流程基本完成,CK和IK引數是作為IPSec SA的加密金鑰以及完整性金鑰,有興趣的可以翻閱相應的IMS文件。總的說來AKA認證較DIGEST認證更為安全可靠:

  1. 實現了雙向認證:伺服器對UE的認證是通過RES實現的:如果UE合法,它能夠正確地計算出RES,且RES等於XRES;UE對伺服器的認證是通過MAC實現的:UE計算期望的訊息認證碼(XMAC),如果MAC和XMAC一致,則認證成功;
  2. 每次使用的MAC是由不斷遞增的SQN作為輸入變數之一,從而確保了金鑰的新鮮性,有效地防止了重放攻擊;
  3. 這種機制更利於將伺服器分離成認證伺服器與鑑權伺服器,認證伺服器收到請求後,請求鑑權伺服器生成AUTN、RAND等健全資訊從而進行認證,而鑑權伺服器也無需將密碼等資訊透露給認證伺服器。

相關文章