AKA--基于AKA的IMS接入认证机制(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IMS AKA机制是对HTTP摘要认证机制[5]的扩展,主要用于用户的认证和会话密钥的分发,它的实现基于一个长期共享密钥(Key)和一个序列号(SQN),它们仅在HSS的认证中心模块(AuC)和UE的ISIM中可见。
由于HSS不与UE直接通信,而是由S-CSCF执行认证过程,因此它们不会将真实的Key暴露给外界。
IMS AKA机制使用“提问/回答”的模式实现用户和网络之间的双向认证,并通过协商产生的密码对(CK, IK)作为IPSec SA所需的密钥,为后续的通信提供安全保护。
IMS AKA机制是基于SIP协议来实现的。
AKA与SIP的结合在IETF RFC3310中定义。
在IMS的注册过程中,携带AKA参数的SIP信令在UE和IMS网络认证实体之间进行交互,按照AKA机制来传输和协商AKA参数,从而实现接入认证和密钥协商的过程。
2.2IMS接入认证的实现
通过IMS注册过程实现基于AKA机制的IMS接入认证的具体流程[6] 如图2所示。
(1) 用户发起注册请求
用户在使用IMS服务之前必须向IMS网络进行注册,注册的目的是将用户的私有身份(IMPI)与用户想要注册的公开身份(IMPU)绑定。
每个用户只有一个IMPI,而可拥有多个IMPU,每个IMPU对应相应的服务配置。
UE在初始的注册请求SIP REGISTER消息中发送它的IMPI,该IMPI保
存在ISIM应用中,只用于认证和注册过程。
这个初始的REGISTER消息的主要头域和参数如图3所示。
由于3GPP AKA被映射到HTTP摘要机制,因此认证方案的值被设置为“Digest”,而“response”和“nonce”域的值在初始注册请求消息中都设置
为空。
P-CSCF将这个REGISTER消息转发给I-CSCF,I-CSCF联系HSS,以选择
为用户提供服务的S-CSCF,然后将REGISTER请求消息转发给选定的S-CSCF。
当
S- CSCF收到REGISTER消息后,如果发现该用户还没有被认证,则S-CSCF向HSS 发送多媒体认证请求(MAR)消息[7]以请求认证数据。
(2) 计算认证向量
HSS收到MAR消息之后,运行AKA算法,为该用户计算认证向量(AV),计算过程如下:HSS中的AuC运行AKA机制,首先产生最新的序列号SQN和一
个不可预测的随机提问数(RAND)。
然后HSS将根据它与该UE之间的共享密钥Key,以及刚刚产生的SQN和RAND来计算其他的参数,其原理如图4所示,AKA参数核心算法由3GPP TS35.206[8]提供。
其中,各个参数的计算公式如下( ?茌表示按位异或,|| 表示串接):
计算消息认证码(MAC):MAC=F1K(SQN|| RAND || AMF) ;
计算期望的认证应答(XRES):XRES=F2K(RAND);
计算保密性密钥(CK):CK=F3K(RAND);
计算完整性密钥(IK):IK=F4K(RAND);
匿名密钥(AK):AK=F5K(RAND);
网络认证令牌(AUTN):AUTN=SQN?茌AK|| AMF || MAC;
AV:AV=RAND||XRES||CK||IK||AUTN;
AK用来隐藏SQN,因为SQN可能会暴露用户的位置信息。
如果不需要隐藏SQN,那么AK被设置为0。
(3) 网络向用户提问
HSS通过上述的计算过程得到了一组AV,其中每个AV都是一个五元组(RAND, XRES, AUTN, CK, IK),该认证五元组并不包括Key和SQN本身。
然后,HSS将这些认证数据通过多媒体认证应答(MAA)消息发送给S-CSCF。
S-CSCF从HSS得到所需的安全相关的参数,即所谓的AV。
这些参数使得S-CSCF可以在不需要知道共享密钥Key和SQN的情况下就可以执行认证过程。
S-CSCF将剔除XRES的AV包含在401 Unauthorized应答消息的
WWW-Authenticate头域中向用户提问,401应答主要的头域和字段如图5所示。
其中,在nonce字段填入了将RAND和AUTN参数串接后进行Base64编码后的字符串。
在ik和ck字段加入完整性密钥和保密性密钥。
在algorithm
字段放入值“AKAv1-MD5”,表示使用的是3GPP AKA认证机制。
当接收到S-CSCF返回的401应答消息后,P-CSCF在将其发往UE之前,将其中的完整性密钥IK和保密性密钥CK保存下来,并将它们从AV中删除掉(IK,CK这两个参数不能暴露,网络认证通过后,UE的ISIM会根据收到的AV,重新计算出来)。
(4) 用户认证网络身份
接收到网络返回的401应答消息后,UE将接收到的AKA参数传递给ISIM 应用,由ISIM模块运行AKA算法,执行以下工作:
首先基于ISIM中存储的共享密钥Key来校验网络认证令牌AUTN,如果AUTN校验成功,网络就被认证通过(即确认认证数据是从归属网络中发来的)。
ISIM计算AKA参数的过程如图6所示。
UE中的认证服务模块通过随机数RAND 计算出匿名密钥AK,然后使用匿名密钥AK来恢复序列号SQN,接着通过得到的序列号SQN、 RAND和ISIM中保存的认证管理域AMF来计算期望的消息认证码XMAC。
将计算得到的期望的消息认证码XMAC和从网络认证令牌AUTN中取得的由HSS计算的消息认证码MAC相比较。
如果这两个参数一致,那么用户认证网络身份成功,接着进行下面的步骤;如果不一致,则用户认证网络身份失败,UE向网络发送不携带response字段的REGISTER消息,以此通知网络提问无效。
如果用户认证网络身份成功,UE将接着检查序列号SQN是否在正确的范围之内(比较这次提问的序列号SQN是否比上次提问时使用的SQNi 大)。
如果SQN在正确的范围之内(即SQN>SQNi,将SQNi更新为SQN,并保存,以备下次使用),UE将会计算认证应答(RES)。
如果 SQN不大于SQNi,则认为本次提问的AV 是不新鲜的,UE与网络失同步,则UE计算重同步参数AUTS,使用携带该重同步参数的REGISTER消息重新发起注册请求。