本文已参与「新人创作礼」活动,一起开启掘金创作之路。
相关文章会在公众号同步更新。公众号:5G通信大家学
持续更新的相关5G内容都是直接根据3GPP整理,保证更新内容的准确性,避免通过二手,甚至多手的资料,以讹传讹误导网友。
///////////
(6 )Authentication Request (NAS 消息)****
消息方向:AMF/SEAF -> UE
AMF/SEAF保存接收到的HXRES*,并向UE发送Authentication Request消息,启动T3560计时器,消息中包含RAND、AUTN、ngKSI、ABBA等参数。ME转发接收到的Authentication Request消息中的RAND和AUTN 给USIM。
5G AKA流程都是由网络发起的,UE可以拒绝网络发起的鉴权请求。
Authentication Request消息包含在N2接口的Downlink NAS Transport和Uu接口的RRC层DLInformationTransfer消息中发送给UE。
Authentication Request消息定义:
消息IE介绍:
- ngKSI
ngKSI是由SEAF生成的,取值范围0-6(3bit)(7保留)。如果UE发送给网络的ngKSI=7,表示没有密钥可用。ngKSI用于在UE和AMF中识别Kamf。在后续鉴权成功后,用于识别5G安全上下文。如果在初始NAS消息(Registration Request消息)中包含了ngKSI,AMF需要在Authentication Request中分配一个不同的ngKSI。
- ABBA
ABBA参数为保持前向兼容,其长度可变,在R16版本中,长度为2个字节,值规定为:0x0000,用于推导Kamf作为输入参数。该参数用于防止降级攻击。
- Authentication parameter RAND/ Authentication parameter AUTN
均为从AUSF收到的数据。
- EAP message
对于5G AKA鉴权,不包含该IE。
注:****
百度百科上的降级保护内容,供参阅:降级攻击(Downgrade attack)是一种对计算机系统或通讯协议的攻击。在降级攻击中,攻击者故意使系统放弃新式、安全性高的工作方式(如加密连接),反而使用为向下兼容而准备的老式、安全性差的工作方式(如明文通讯)。例如,在OpenSSL中曾经存在一个缺陷,从而使攻击者能够让SSL/TLS服务器与客户端创建老版本TLS连接,尽管双方事实上支持新版本。这样的攻击是最常见的降级攻击。
(7 )UE 计算RES*****
USIM收到RAND和AUTN,需要先检查AUTN中的MAC区域,验证接收的AUTN新鲜度。验证通过后,USIM计算RES,并和CK、IK一起返回给ME。如果USIM 根据CK和IK计算出了Kc (如GPRS Kc) 也发给了ME,则ME忽略该值,在USIM和ME上都不保存该值。之后,ME根据收到的RES计算RES*(serving network name、RAND等作为输入参数)。ME根据CK||IK 、serving network name 及AUTN中的SQN Å AK 计算出KAUSF,进而计算出 KSEAF (serving network name作为输入参数)。最后,ME检查AUTN的AMF域的"separation bit"是否为1。
(8 )Authentication Response (NAS 消息)****
消息方向: UE -> AMF/SEAF
UE构造Authentication Response消息发送给AMF/SEAF。AMF/SEAF收到Authentication Response消息后停止T3560计时器。
Authentication Response消息包含在Uu接口RRC层的ULInformationTransfer消息和N2接口的Uplink NAS Transport消息中发送给AMF/SEAF。
Authentication Response消息定义:
消息IE介绍:
- Authentication response parameter
该参数为UE计算的RES*。(在5G AKA中,RES*由ME计算得到,16字节长度,在4G中,RES由USIM计算得到,最短4字节,最长16字节。)
(9 )AMF/SEAF 计算HRES*****
AMF/SEAF根据UE发送的RES计算出HRES (输入参数有RES*、RAND等),SEAF比较HRES和HXRES,如果二者一致,则认为UE在当前的拜访网络鉴权成功。之后,执行第10步,通过Nausf_UEAuthentication_Authenticate Request消息将RES*发送给AUSF进行归属地鉴权。
如果HRES和HXRES不一致,则认为UE在拜访网络鉴权失败,仍然会继续执行第10步,只是此时不携带RES*,而是携带空值,以通知AUSF在拜访地鉴权失败。
如果此时UE不可达,SEAF不会收到RES* ,则SEAF认为本次鉴权失败,并通知AUSF。
注:
网络上及个别厂家文档写到:如果拜访网络鉴权失败,流程结束。该说法并不准确,即使拜访网络鉴权失败,仍然会通知归属地AUSF。
如果在后面第12步中AUSF返回给SEAF鉴权结果Nausf_UEAuthentication_Authenticate Response消息中,指示RES在归属地鉴权失败,或者RES在拜访网络的SEAF中鉴权失败,则认为UE本次鉴权失败。如果UE使用SUCI发起的注册请求,则SEAF向UE发送UE Authentication Reject消息;如果UE使用的5G-GUTI发起的注册请求,AMF会尝试向UE请求SUCI再次进行鉴权尝试。如果最终UE鉴权失败,会收到Authentication Reject消息。
在UE侧,如果UE对Authentication Reject消息完整性检查通过,UE会设置update status为5U3 ROAMING NOT ALLOWED,并删除保存的5G-GUTI、TAI list、last visited registered TAI和ngKSI。在UE关机或者USIM卡更换之前不会再进行重新注册。如果Authentication Reject完整性检查失败,在30分钟到60分钟之间,会再次发起注册。
(10 )Nausf_UEAuthentication_Authenticate Request****
消息方向: AMF/SEAF -> AUSF
HTTP方法:PUT(注意:EAP鉴权方式时本步骤为POST方法)
该请求消息调用AUSF的资源URI:
{apiRoot}/nausf-auth/v1/ue-authentications/{authCtxId}/5g-aka-confirmation
该URI在第5步的响应消息_links字段携带,也可以由AMF自行构造。如果构造的不准确,则会返回响应消息:404 Not Found,携带原因值:CONTEXT_NOT_FOUND,表示AUSF没有找到对应的资源URI。
该消息携带的确认数据只有ConfirmationData,包含:RES*。但是该值也有为空的情况,表示通知AUSF拜访地鉴权失败。具体场景如下:
-
UE不可达的情况,AMF不会收到RES*;
-
拜访地鉴权失败AMF比较HRES和HXRES不一致;
-
AMF收到UE的authentication failure消息,如:synchronization failure或者MAC failure。
(11 )AUSF 验证RES*
AUSF收到RES后,首先验证5G AV是否过期。如果5G AV过期了,则认为归属网络鉴权失败。如果5G AV验证不超期,AUSF加密保存Kausf。之后,AUSF比较接收到的 RES和保存的XRES*是否一致,如果一致,AUSF认为归属网络鉴权成功,并通知UDM鉴权结果,之后开启C. 鉴权确认和注册绑定流程。
(12 )Nausf_UEAuthentication_Authenticate Response****
消息方向: AUSF -> AMF/SEAF
如果AUSF鉴权成功,则向AMF/SEAF返回200 OK响应,携带ConfirmationDataResponse信息,具体内容如下:
消息IE介绍:
- authResult
该IE共有三个可选值:
-
AUTHENTICATION_SUCCESS:归属地鉴权成功
-
AUTHENTICATION_FAILURE:归属地鉴权失败
-
AUTHENTICATION_ONGOING:表示EAP Session鉴权正在进行,目前不涉及。
-
supi/kseaf
从整个流程中可以看到,只有当归属地鉴权成功后,AMF才能得到解密后的SUPI和锚点Kseaf。拜访网络在得到SUPI之前,不能使用任何网络服务。之后SEAF根据Kseaf、ABBA参数和SUPI推导出Kamf,并和ngKSI一起发送给AMF。