5G UE鉴权流程详解 UE Authentication-程序员宅基地

技术标签: 5G  网络  

名词
SUCI (Subscription Concealed Identifier)订阅隐藏标识符
SUPI (Subscription Permanent Identifier)订阅永久标识符
SNN (serving network name) 网络服务名
5G-GUTI(5G Globally Unique Temporary UE Identity ):5G全局唯一的临时UE标识

本文在学习UDM涉及UE认证相关服务,对UDM相关服务比较详细,其他部分可能比较粗略。

5G鉴权由AMF和AUSF共同完成
5G鉴权向量不支持预取,也不支持一次获取多组鉴权向量

SNN

SNN(Server Network Name)
5G SNN的作用:

  • 用于推导锚点密钥,作为AUSF推到Kseaf的输入参数,以及作为UE推到RES和XRES的输入参数。
  • 将锚点密钥和服务网路绑定
  • 通过服务码设置为5g来抱枕锚点密钥用于5G核心网和UE之间的鉴权认证。

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(都为小写字母)。

鉴权流程的触发条件

与UE建立信令连接的过程都可以触发鉴权流程:

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

鉴权流程

鉴权流程分为三个阶段:

  • 请求阶段
  • 响应阶段
  • 鉴权确认和注册绑定部分
请求阶段

Nausf_UEAuthentication_Authenticate Request

消息方向1 AMF/SEAF -> AUSF

http方法:POST url:{apiRoot}/nausf-auth/{v}/ue-authentications

AMF 根据 从UE 得到的SUCI(订阅隐藏标识符)或者从 old AMF中获得的SUPI,选择对该UE进行鉴权的AUSF,构造Nausf_UEAuthentication_Authenticate Request消息并发送给该AUSF。
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。

响应阶段
UDM生成鉴权向量

HRES Hash RESponse
HXRES Hash eXpected RESponse
IKE Internet Key Exchange
KSI Key Set Identifier

  • UDM/ARPF生成鉴权向量
    UDM/ARPF在生成鉴权向量时,需要将Authentication Management Field (AMF)的separation bit设置为"1"。separation bit为AUTN中AMF字段的第0比特,该值为1标识生成的鉴权向量用于EPS/5G AKA鉴权,对于鉴权向量来讲,如果设置为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)
AUSF获得鉴权信息回应

消息方向:UDM - >AUSF
在这里插入图片描述

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

(1).UDM

AUSF保存XRES*

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

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此时诞生。

消息方向: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。

消息方向: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可以拒绝网络发起的鉴权请求。

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。

消息方向: 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。

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。

消息方向: 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。

AUSF验证RES*

AUSF收到RES后,首先验证5G AV是否过期。如果5G AV过期了,则认为归属网络鉴权失败。如果5G AV验证不超期,AUSF加密保存Kausf。之后,AUSF比较接收到的 RES和保存的XRES*是否一致,如果一致,AUSF认为归属网络鉴权成功,并通知UDM鉴权结果,之后开启鉴权确认和注册绑定流程。

消息方向: AUSF -> AMF/SEAF

消息名称:Nausf_UEAuthentication_Authenticate Response

如果AUSF鉴权成功,则向AMF/SEAF返回200 OK响应,携带ConfirmationDataResponse信息

鉴权确认和注册绑定部分

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

消息方向:AUSF -> UDM

HTTP方法:POST

消息名称:Nudm_UEAuthentication_ResultConfirmation Request

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

{apiRoot}/nudm-ueau/v1/{supi}/auth-events
在这里插入图片描述

UDM保存AuthEvent相关信息

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

消息方向: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。

UDM对后续流程的鉴权

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

UDM工作流程

AUSF -> UDM

见上文请求阶段ausf向UDM请求鉴权向量
请求内容:AuthenticationInfoRequest

结构名: AuthenticationInfoRequest
字段名 数据类型 说明
servingNetworkName String
resynchronizationInfo ResynchronizationInfo 同步信息
suportedFeatures
ausfInstanceId String Ausf Id
结构名:ResynchronizationInfo
字段名 数据类型 说明
rand String
auts String AUTS由UE计算得到

回复内容:AuthenticationInfoResult

结构名: AuthenticationInfoResult
字段名 数据类型 说明
authtype AuthType enum
authenticationVector AuthenticationVector 鉴权向量
supi String supi 若请求为suci,返回解密后的supi
suportedFeatures

在UE鉴权中UE请求包含同步信息,则根据携带的RAND回推seq信息,再计算mac与UE传过来的auts中的mac部分比较确认。认证通过则数据库同步UE中的seq。
AK是一个匿名密钥,用于隐藏序列号,因为后者可能会暴露用户的身份和位置。序列号的隐藏只是为了防止被动攻击。
在这里插入图片描述

序列号同步流程

鉴权确认

在这里插入图片描述

鉴权确认,AUSF向UDM发送Post请求,资源URI中包含SUPI,消息体仅包含AuthEvent参数。succees是UE认证的状态,成功UDM需要在UDR中保存Authevent信息。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_53022668/article/details/123527648

智能推荐

如何使用SmS-Activate 服务接收海外短信验证码-程序员宅基地

文章浏览阅读7.8k次,点赞10次,收藏22次。有些国外应用不支持+86号注册,接收不到信息验证码,无法注册针对这一场景,市场上有很多成熟的解决方案,如sms-activate提供的服务。_sms-activate

Flink基础系列5-Flink 配置文件参数_sql-client-defaults.yaml-程序员宅基地

文章浏览阅读1.6w次。文章目录一.Flink配置文件概述1.1 基础配置1.2 高可用性配置1.3 容错和检查点 配置1.4 web 前端配置1.5 高级配置1.6 Flink 集群安全配置1.7 Zookeeper 安全配置1.8 HistoryServer1.9 masters1.10 slaves1.11 zoo.cfg1.12 日志配置1.13 sql-client-defaults.yaml参考:一.Flink配置文件概述安装目录下主要有 flink-conf.yaml 配置、日志的配置文件、zk 配置、Flink_sql-client-defaults.yaml

探索Fofa-hack:一款强大的网络数据搜索工具-程序员宅基地

文章浏览阅读368次,点赞5次,收藏3次。探索Fofa-hack:一款强大的网络数据搜索工具项目地址:https://gitcode.com/Cl0udG0d/Fofa-hack在网络安全和渗透测试的世界里,数据搜索是至关重要的一个环节。Fofa-hack 是一个基于Fofa API开发的工具,旨在帮助安全研究人员、开发者以及爱好者更有效地发现和定位目标信息。本文将详细介绍Fofa-hack的功能、技术实现和应用场景,以期吸引更多用户...

钉钉小程序怎么实现日期和时间段的选择-程序员宅基地

文章浏览阅读675次。1、访问日期是不可以用picker的,这样会重复出现弹框。2、我在这里使用的是view。就可以实现日期的选择了。

sensor简介-程序员宅基地

文章浏览阅读617次。http://wenku.baidu.com/view/404957da5022aaea998f0ffa.html_sensor

[UVM]一文搞懂UVM callback-程序员宅基地

文章浏览阅读2.2k次,点赞6次,收藏49次。一文搞懂UVM callback 前言:在UVM验证平台中,callback的最大用处就是提高验证平台的复用性。很多情况下,我们期望在一个项目中开发的验证平台能够用于另外一个项目。但是,通常来说,完全的复用是比较难实现的,两个不同的项目之间或多或少会有一些差异。如果把两个项目不同的地方使用callback来做,而..._uvm callback

随便推点

怎么用matlab剔除数据的异常值(3σ准则)_3sigma原则matlab-程序员宅基地

文章浏览阅读5.2w次,点赞27次,收藏379次。参考:https://blog.csdn.net/weixin_30633405/article/details/951770093σ准则又称为拉依达准则,它是先假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差,含有该误差的数据应予以剔除。且3σ适用于有较多组数据的时候。这种判别处理原理及方法仅局限于对正态或近似正态分布的样本数据处理,它是以测量次数充分大为前提的,当测量次数较少的情形用准则剔除粗大误_3sigma原则matlab

导入PYQT5不能使用的坑_pdroid3已经导入pyqt5怎么不管用-程序员宅基地

文章浏览阅读5.1k次,点赞4次,收藏17次。如图:import进来之后里面的类全都不能用是因为这个引用路径下面有中文。改成英文的就不报错了,如果还是报错,那就新建一个项目命名成英文_pdroid3已经导入pyqt5怎么不管用

手推线性模型及最小二乘法(房价预测实例)_基于最小二乘法的房价预测实验报告-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏24次。手推线性模型及最小二乘法(房价预测实例)线性模型及最小二乘法推导房价预测实例Reference线性模型及最小二乘法推导房价预测实例生成数据#生成数据import numpy as np#生成随机数np.random.seed(1234)x = np.random.rand(500,3)#构建映射关系,模拟真实的数据待预测值,映射关系为y = 4.2 + 5.7*x1 + 1..._基于最小二乘法的房价预测实验报告

多文件使用全局变量时extern的规范用法_extern变量多个文件中修改-程序员宅基地

文章浏览阅读494次。关键字extern用来声明变量或者函数是一个外部变量或者外部函数,也就是说告诉编译器是在其他文件中定义的,编译的时候不要报错,在链接的时候按照字符串寻址可以找到这个变量或者函数。(函数默认是外部类型的,不需要显示声明,但是变量必须,如果想把一个函数声明为只在本文件范围有效,那么可以用static来说明) 在某个头文件,比如A.h中定义了全局变量比如int a;,那么在其他文件中的函数调用变量a的时候需要在对应头文件或者定义文件中(保证在使用这个变量前)使用extern int a;..._extern变量多个文件中修改

为 OpenBMC 添加一个新的系统_openbmc对meta名字有要求吗-程序员宅基地

文章浏览阅读773次,点赞15次,收藏27次。在上一篇文章中向大家介绍了OpenBMC的是什么以及它的作用和应用场景,并且以一个自带的示例平台romulus展示了从下载源码包开始到启动系统并访问Web控制页面的整体构建流程。通过前文已经了解到如何为已有的平台构建系统镜像,下面我们来探索一下如何为我们自己的平台构建OpenBMC的系统镜像。_openbmc对meta名字有要求吗

闹钟+秒表+倒计时三合一_时钟和倒计时同时显示-程序员宅基地

文章浏览阅读652次。这个是一个可以实现闹钟,计时,倒计时的安卓简单APP。特别提醒,闹钟部分,国产手机会把后台闹钟服务功能杀掉,延迟几分钟闹甚至不闹。没办法国产手机为了对付某些狗血APP只能强制性。。。倒计时可以在后台运行,但是秒表部分只能在当前界面运行,重新进入就清零了。_时钟和倒计时同时显示