***   欢迎转发,转发请注明出处 。 相关更新会在公众号公布更新,敬请关注。公众号:5G通信大家学  ***

目录

9. Authentication/Security流程。

0)准备知识

1) 鉴权流程

A. 鉴权流程(请求阶段):

B. 鉴权流程(响应阶段):

C. 鉴权流程(鉴权确认和注册绑定部分)

2)5G密钥相关推导图


9. Authentication/Security流程。

0)准备知识

该步骤为UE的5G的鉴权流程,本文以目前使用的5G AKA鉴权方式为例介绍。5G AKA相比4G增加了归属网络的鉴权功能。4G的鉴权由MME完成,而5G的鉴权由AMF和AUSF共同完成,且5G的鉴权向量不支持预取,也不支持一次获取多组鉴权向量。

归属网络的AUSF提供鉴权过程的锚点密钥(anchor key)KSEAF,它是由加密保存在AUSF中的中间密钥Kausf计算得到的。5G中,锚点密钥和和服务网络(Serving Network)进行绑定,向UE提供隐式的服务网络认证。绑定的方式是将5G SN名称作为密钥推导的输入参数。

15G SNNServing Network Name

5G SNN的作用:

  • 用于推导锚点密钥,作为AUSF推导Kseaf的输入参数,及作为UE推导RES*和XRES*的输入参数;
  • 将锚点密钥和服务网络绑定;
  • 通过将服务码(Service code)设置为“5G”来保证锚点密钥用于5G核心网和UE之间的鉴权认证。

5G SNN的构成:

SNN最长1020个字节,由两部分构成:SNN-service-code和SNN-network-identifier,中间用冒号“:”进行连接。

由于在认证和鉴权过程中,安全密钥需要在UE和SEAF(位于AMF中)中分别推导,因此,SNN作为密钥推导的输入参数,需要在UE和SEAF分别进行构造。

  • SNN-service-code:固定为“5G”。在通过non-3GPP接入时,也用于区分接入网络,作为Access Network Identity使用;
  • SNN-network-identifier:用于识别当前的移动网络。根据TS 24.501章节9.12.1规定,对于PLMN网络,该值为:mncXXX.mccXXX.3gppnetwork.org(都为小写字母)。对应中国移动的5G网络SNN-network-identifier为:mnc000.mcc460.3gppnetwork.org。

UE侧根据RAT和小区广播的PLMN信息可以很容易推导出SNN,进而用于安全密钥的推导;而AMF侧根据配置信息也可以构造出SNN,用于鉴权和认证。

2)鉴权流程的触发条件

通常,与UE建立信令连接的流程都可以触发鉴权流程。我们常见到的能够触发鉴权流程的场景为:

  • UE使用SUCI发起注册流程;
  • AMF没有UE的有效上下文;
  • Registration Request消息没有被完整性保护;
  • UE携带5G-GUTI注册,但是old AMF对注册请求消息执行完整性检查失败;

1 鉴权流程

本部分的鉴权流程分成三个部分:

  1. 鉴权流程(请求阶段)
  2. 鉴权流程(响应阶段)
  3. 鉴权流程(鉴权确认和注册绑定部分)

A. 鉴权流程(请求阶段):

(1)消息方向:AMF/SEAF -> AUSF

HTTP方法:POST

消息名称:Nausf_UEAuthentication_Authenticate Request

在整体注册流程的第8步中,AMF根据从UE得到的SUCI或者从old AMF得到的SUPI,选择对该UE进行鉴权的AUSF,构造Nausf_UEAuthentication_Authenticate Request消息并发送给该AUSF。

该请求的资源URI为:

{apiRoot}/nausf-auth/v1/ue-authentications

携带的参数类型为:AuthenticationInfo,具体的字段信息如下图,我们常见到的IE为SUPI或者SUCI,及SNN:

只要AMF得到了UE的SUPI,在Nausf_UEAuthentication_Authenticate Request消息中包括的都是SUPI,除非AMF不知道UE的SUPI,才会在该消息中包含SUCI。

AUSF收到请求消息后,会检查消息中的Serving Network Name是否得到了授权。如果检查失败,则返回:403 Forbidden,携带的原因值为:SERVING_NETWORK_NOT_AUTHORIZED。

(2)消息方向:AUSF -> UDM

HTTP方法:POST

消息名称:Nudm_UEAuthentication_Get Request

该请求的资源URI为:

{apiRoot}/nudm-ueau/v1/{supiOrSuci}/security-information/ generate-auth-data

该消息用于AUSF请求UDM为UE选择一种鉴权方法,并计算新的鉴权向量(如果该鉴权需要鉴权向量的话)。如果请求中包含的是SUCI,UDM收到该请求后,首先,SIDF将SUCI解密为SUPI,之后根据SUPI为UE选择鉴权方式。目前,5G使用的鉴权方式有两种:EAP-AKA’ 和5G AKA。

请求消息AuthenticationInfoRequest的内容如下图:

- ResynchronizationInfo

该字段包含两项内容:rand和auts。在鉴权重同步过程中,AUTS由UE计算得到。

B. 鉴权流程(响应阶段):

(1)UDM生成鉴权向量

UDM/ARPF在生成鉴权向量时,需要将Authentication Management Field (AMF)的separation bit设置为"1"。separation bit为AUTN中AMF字段的第0比特,该值为1标识生成的鉴权向量用于EPS/5G AKA鉴权;如果设置为0,标识该鉴权向量用于GSM、UMTS等非EPS/5G AKA鉴权(具体原理详见TS33.102,6.4.3章节及附录F)。对于鉴权向量来讲,如果设置为1,AKS鉴权过程中产生的CK和IK鉴权密钥不会离开HSS。 UDM/ARPF推导出 KAUSF并计算XRES*(在推导Kausf和XRES*时都会将serving network name作为输入参数使用)。最后UDM/ARPF生成的5G HE AV包含RAND、AUTN、XRES*、KAUSF四个参数。(其中鉴权令牌AUTN = SQN Å AK || AMF || MAC)。

(2)消息方向:UDM -> AUSF

消息名称:Nudm_UEAuthentication_Get Response

  • 成功响应

返回200 OK响应。UDM计算出5G HE AV(RAND、AUTN、XRES*、KAUSF),并在响应消息中返回给AUSF。携带AuthenticationInfoResult内容。

该响应消息包含AuthenticationInfoResult,具体内容如下:

- supi

如果请求消息中是SUCI,UDM会使用SIDF解密出SUPI并在该字段中返回给AUSF。

- authType

AUSF根据该字段为UE开启"5G_AKA"鉴权流程或者"EAP_AKA_PRIME"鉴权流程。

选择的鉴权类型共有三个取值:"EAP_AKA_PRIME"、"5G_AKA"和"EAP_TLS",其中,"EAP_TLS"标准并不强制要求支持。

- AuthenticationVector

鉴权向量包含的内容如下:

其中:

- avType

取值两种:"5G_HE_AKA"和"EAP_AKA_PRIME"。

- rand

共128比特,16字节。

- autn

共128比特,16字节。AUTN的构成(SQN xor AK)||AMF||MAC,共48+16+64 bits。

  • 失败响应

- 403 Forbidden

可能的原因值为:AUTHENTICATION_REJECTED、INVALID_HN_PUBLIC_KEY_IDENTIFIER、INVALID_SCHEME_OUTPUT

- 404 Not Found

如果用户没有开户,则携带原因值:USER_NOT_FOUND

- 501 Not Implemented

原因值:UNSUPPORTED_PROTECTION_SCHEME。

(3)AUSF保存XRES*

AUSF临时保存从响应消息中的XRES*和SUPI,用于归属地的鉴权比较。

注:

在TS33.501中,该步骤的解释为:“The AUSF shall store the XRES* temporarily together with the received SUCI or SUPI.”。也就是说本步骤,AUSF也可能保存SUCI。不知道在什么场景下会出现AUSF临时保存SUCI?从上述Nudm_UEAuthentication_Get Response成功的200 OK响应AuthenticationInfoResult内容来看,并没有定义SUCI字段。在失败响应中,只有403 Forbidden,原因值:INVALID_SCHEME_OUTPUT,表示无法解密SUCI,也没有带回SUCI。怀疑3GPP该步骤的解释应该为编写错误。

(4)AUSF计算XRES*

AUSF根据接收到的5G HE AV(RAND、AUTN、XRES*、KAUSF)来计算5G AV(RAND、AUTN、HXRES*、KSEAF);根据XRES*计算出HXRES*;根据KAUSF计算出KSEAF(计算KSEAF仍然需要serving network name作为输入参数)。锚点密钥Kseaf此时诞生。

(5)消息方向:AUSF -> AMF/SEAF

消息名称:Nausf_UEAuthentication_Authenticate Response

AUSF 删除KSEAF,并在Nausf_UEAuthentication_Authenticate Response消息中向AMF返回5G SE AV (RAND, AUTN, HXRES*) 。

从上述可见,AUSF产生的5G AV并没有直接发送给AMF,而是分两步发送:第一步,发送5G SE AV用于拜访地鉴权;第二步,如果拜访地鉴权成功,返回RES*归属地鉴权成功后,将锚点密钥Kseaf发送给AMF,此时才将完整的5G AV发送给了AMF。

该Response的内容如下:

消息IE介绍:

- authType

指示UE本次鉴权网络选择的鉴权方法,共有三个取值:"EAP_AKA_PRIME"、"5G_AKA"和"EAP_TLS"。

- _links

该字段包含本次鉴权后,UE返回的RES*,AMF返回RES*时需要调用的AUSF的资源URI。如果是5G AKA,该字段的值为“5g-aka”和执行鉴权确认的超链接URI,如http://172.16.141.122:8080/nausf-auth/v1/ue-authentications/06120902071/5g-aka-confirmation。如果是EAP鉴权,该字段的值为:"eap-session"及执行EAP Session的URI。

- 5gAuthData

包含上一步骤的5G SE AV (RAND, AUTN, HXRES*)。

(6)消息方向:AMF/SEAF -> UE

消息名称:Authentication Request(NAS消息)

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。

(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)消息方向: UE -> AMF/SEAF

消息名称:Authentication Response(NAS消息)

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)消息方向: AMF/SEAF -> AUSF

HTTP方法:PUT(注意:EAP鉴权方式时本步骤为POST方法)

消息名称:Nausf_UEAuthentication_Authenticate Request

该请求消息调用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鉴权结果,之后开启鉴权确认和注册绑定流程。

(12)消息方向: AUSF -> AMF/SEAF

消息名称:Nausf_UEAuthentication_Authenticate Response

如果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。

C. 鉴权流程(鉴权确认和注册绑定部分)

该步骤主要用于防止AMF的虚假注册,如UE所处拜访网络没有的AMF,确发起了Nudm_UECM_Registration_Request,导致UE注册在了一个不存在的AMF上。

(1)消息方向:AUSF -> UDM

HTTP方法:POST

消息名称:Nudm_UEAuthentication_ResultConfirmation Request

该请求消息的资源URI如下:

{apiRoot}/nudm-ueau/v1/{supi}/auth-events

资源URI中包含SUPI,消息体仅包含AuthEvent参数,内容如下:

消息IE介绍:

- nfInstanceId

执行鉴权的NF instance (如AUSF)。

- success

该值为布尔类型,true表示AUSF鉴权成功,false 表示鉴权不成功。false值也用于AUSF请求UDM删除鉴权结果。

- authRemovalInd

可选项,用于指示UDM中的鉴权结果是否删除,true表示删除。默认值为false。

(2)UDM保存AuthEvent相关信息

UDM保存UE的鉴权状态,如SUPI、鉴权结果、时间戳、serving network name等。

(3)消息方向:UDM -> AUSF

消息名称:Nudm_UEAuthentication_ResultConfirmation Response

  • 成功响应

返回201 Created,消息体可以为空。如果不为空,则返回AuthEvent内容。HTTP消息头的Location字段包含创建的资源,URI如下:

{apiRoot}/nudm-ueau/v1/{supi}/auth-events/{authEventId}

  • 失败响应

404 Not Found,原因值:USER_NOT_FOUND。

(3)UDM对后续流程的鉴权

如果UDM收到了UE的后续流程,如:AMF发送的Nudm_UECM_Registration_Request消息,UDM会根据运营商策略执行相关检测和保护操作(详见TS 33.501,3GPP仅提供了建议操作)。

25G密钥相关推导图

15GS密钥推导图(TS 33.501

25GS密钥分布及生成模式图(TS 33.501

3UDM鉴权向量推导图(TS 33.102

4UE鉴权推导图(TS 33.102

后续流程,留待下回分解  ......

5G注册流程分级详解(鉴权)Step9相关推荐

  1. 5G注册流程分级详解Step4-8

    ***   欢迎转发,转发请注明出处    *** 4. AMF调用old AMF的Namf_Communication_UEContextTransfer服务获取UE上下文. 如果UE的Regist ...

  2. 5GC注册流程(详解)

    首先附上三篇好文,如果这三篇全部看完并记忆,那么本文可略过 5GC注册过程(这个相当于23502协议中注册流程的原文翻译) 5G中携带SUCI的初始注册流程(这个是博主自理的初始注册,流程简单明了) ...

  3. 2022还不知道登陆邮箱账号怎么填写?个人邮箱登录注册流程看详解

    今年入冬以来,我国多地散发新冠肺炎疫情.浙江三地同日报告新增.满洲里大规模核酸共检出阳性431例.上海新增本土1例."奥密克戎"以惊人的速度传播,目前已至少在38个国家和地区出现. ...

  4. 目前互联网最详细的5G注册流程

    经过一个多月的详细分析<5G技术详解系列>的第一个课题:5G注册流程终于分析完成,不知道你有没有豁然开朗的感觉.我在分析的过程中也学到了很多,之前很多没注意到的细节,这次在整理成材料时也搞 ...

  5. ebay注册流程_2017年eBay注册开店流程图文详解

    原标题:2017年eBay注册开店流程图文详解 今天跟大家分享最新的eBay注册开店流程,希望对卖家小伙伴们有所帮助.我们先简单了解一下eBay注册条件. 企业注册eBay需满足以下条件: 合法登记的 ...

  6. 科普:5G网络关键技术详解

    不久前,中国华为公司主推的Polar Code(极化码)方案,成为5G控制信道eMBB场景编码方案.消息一出,在网络上就炸开了锅,甚至有媒体用"华为碾压高通,拿下5G时代"来形容这 ...

  7. 怎么在手机上取消双重认证_用手机在淘宝上怎么开网店?流程步骤详解

       这是一篇关于"用手机在淘宝上怎么开网店?流程步骤详解"的文章: 开网店因为门槛低.收益大,成为众多年轻人创业的首选.很多新手朋友们都想开一家属于自己的网店,但是苦于没有经验, ...

  8. 5G QoS控制原理专题详解-基础概念(3)

    最近比较忙,很多文章公众号上排版完发了,没来得及发布到CSDN上,各位同学可以先关注公众号,以便可以及时收到新的详解文章. 3.1.1.10 5G QoS characteristics 5G QoS ...

  9. 数据仓库电商建模_真实电商数据仓库全流程开发详解,资源教程下载

    课程名称 Hadoop大数据视频教程-第一季:真实电商数据仓库全流程开发详解(共46讲),资源教程下载 课程目录 第一部分:数据仓库基础理论与技术圈 第一章:互联网电商大数据环境 第二章:商业智能与数 ...

最新文章

  1. R语言使用latticeExtra包可视化双Y轴线图实战(Dual Y axis):单y轴线图、双y轴图线图、双y轴图线图(添加图例)
  2. matlab用于系统框图建模的函数,MATLAB产品家族中文
  3. android onLayout死循环
  4. 移动Web开发图片自适应两种常见情况解决方案
  5. 实现HOOK其他进程的Messagebox(2) DLL注入工具
  6. python 接口测试多线程_python多线程测试接口性能,就是这么简单
  7. 【Docker从入门到精通_1】Ubuntu16.04版本安装与配置
  8. mat opencv 修改roi_设置图片ROI(OpenCV学习笔记之二)
  9. LeetCode 1252. 奇数值单元格的数目
  10. jinja Extends Blocks Include
  11. android shape使用总结
  12. vue使用element案列
  13. 发放2013年迅雷vip账号了~!
  14. 讯飞语音转文字_踩坑记:讯飞语音转文字SDK的坑
  15. 英雄联盟闪退显示无法连接服务器,英雄联盟一直闪退显示重新连接什么原因?lol崩溃进不去游戏怎么办...
  16. iPone实现快速切换表情输入法?
  17. 2019成长复盘2020成长规划
  18. SpringBoot引入Dubbo问题解析
  19. [洪流学堂]Hololens开发:Unity3d与Visual Studio最佳实践
  20. 2020年千兆路由器推荐 数码宅男来带路 赶紧M

热门文章

  1. 看大型成功项目案例—中巴地球资源卫星CBERS研制
  2. MySql获取某年数据,获取年与年之间数据。用YEAR()函数
  3. SSL证书的工作原理是怎么样的?
  4. HashMap深度解释推导
  5. 工厂控制灯光系统小结(观小蜜蜂老师教学视频有感)
  6. typescript中的 as、问号、感叹号
  7. 24核超级计算机,从CPU内部详解电脑CPU的性能:24核CPU什么样?
  8. java开发eclipse配置文件_配置eclipse开发环境
  9. 有了这7个搜索引擎,不去百度找资源都不用担心啦
  10. console h3c 波特率_H3C(华三)路由器交换机SecureCRT软件设置|连接Console口方法