如果UE确认SQN在正确的范围之内,则接着计算保密性密钥CK和完整性密钥IK。
至此,UE和S-CSCF都知道了密钥对CK和IK,可以用于进行下面的数据加密。UE将会保存CK和IK,直到下一次成功执行了AKA过程。
最后,UE在发往S-CSCF的第二个REGISTER请求中返回认证挑战应答RES。
(5)网络认证用户身份
P-CSCF将这个携带认证应答的REGISTER消息转发给I-CSCF,I-CSCF重新查询HSS以发现S-CSCF,然后将REGISTER消息转发给S-CSCF。当S-CSCF接收到REGISTER消息之后,进行解析并从认证头域Authorization中取出相应的参数:
如果Authorization头域中的response字段为空,再检查重同步参数字段auts是否为空:如果AUTS参数不为空,说明UE检查出了SQN同步失败,S-CSCF使用这个重同步参数AUTS重新向HSS请求认证数据,当下载认证数据成功后,再用新的认证向量重新向UE提问。如果AUTS参数也为空,说明S-CSCF的提问无效,S-CSCF选择下一个认证向量,重新用401消息进行提问。如果S-CSCF用完了所有的认证向量后,用户仍然无法确认网络身份,S-CSCF认为本次认证失败,放弃本次认证过程,并发送403Forbidden消息通知用户。
如果Authorization头域中的response字段不为空,则S-CSCF取出其中的认证应答RES参数,并将其和保存在S-CSCF中的认证应答XRES相比较。如果一致,S-CSCF就认为用户回答提问正确,认证用户身份成功,允许用户接入网络,同时向UE回送200OK消息;如果不一致,S-CSCF就认为用户回答提问错误,认证用户身份失败,S-CSCF不允许用户接入网络,那么S-CSCF应该发送403Forbidden应答消息给UE,通知认证失败,并且放弃本次认证过程。
3、IMSAKA机制的安全性分析
3.1IMSAKA机制实现的安全能力
从上述对基于AKA的IMS接入认证机制的原理和实现过程的分析可以看出,IMSAKA机制实现了以下安全目标。
(1)用户和网络之间的双向认证
S-CSCF对UE的认证是通过RES实现的:如果UE合法,它能够正确地计算出RES,且RES等于XRES;UE对S-CSCF的认证是通过MAC实现的:UE收到S-CSCF转发的MAC后,计算期望的消息认证码(XMAC),如果MAC和XMAC一致,则认证成功。
(2)UE和P-CSCF之间的密钥协商分配
P-CSCF收到的来自HSS的AV中包含了保密性密钥(CKHSS)和完整性密钥(IKHSS)。合法的用户在收到正确的RAND之后,能正确地产生CKUE和IKUE,且CKHSS等于CKUE,IKHSS等于IKUE。CK和IK用于其后的保密通信,而CK和IK并没有在空中接口中传输,确保了密钥的安全性。
(3)UE与S-CSCF间密钥的新鲜性
由于每次通信前的认证选择了不同的AV,保证了每次通信采用的CK和IK都是由不同的RAND计算得到的。而每次使用的MAC是由不断递增的SQN作为输入变量之一,从而确保了密钥的新鲜性,有效地防止了重放攻击。
(4)认证应答RES的安全
当UE计算出认证应答RES之后,使用名为“AKAv1-MD5”的摘要算法(实际上就是一个单向的哈希函数)来计算RES的摘要,然后将该摘要发送到S-CSCF。S-CSCF也使用同样的方法计算出期望的认证应答(XRES)的摘要值,通过比较这两个摘要值是否一致来认证用户的身份。通过这样的方法,即使攻击者窃听到RES的值,但是由于摘要算法是单向的哈希函数,根本无法反推出RES的值,因此不能危害网络安全。