其中,各个参数的计算公式如下(?茌表示按位异或,||表示串接):
计算消息认证码(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包含在401Unauthorized应答消息的WWW-Authenticate头域中向用户提问,401应答主要的头域和字段如图5所示。

其中,在nonce字段填入了将RAND和AUTN参数串接后进行Base64编码后的字符串。在ik和ck字段加入完整性密钥和保密性密钥。在algorithm字段放入值“AKAv1-MD5”,表示使用的是3GPPAKA认证机制。
当接收到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消息重新发起注册请求。