跳到主要内容

← 概述

OmniAUSF 操作

OmniAUSF 实现了 5G 核心的认证服务器功能 (AUSF),在 AMF (N12) 和 UDM (N13) 之间执行 5G-AKA 主要认证。它从 UDM 请求认证向量,将 RAND/AUTN 挑战 (和 HXRES*) 中继到 AMF,验证 UE 的响应,推导锚定密钥 K_SEAF,并将认证结果报告回 UDM。

3GPP 角色和规范参考

规范相关性
TS 23.501系统架构 - AUSF 在 5G 系统中的角色
TS 33.501安全架构 - 5G-AKA 认证 (6.1.3),K_AUSF/K_SEAF 密钥层次结构,HXRES*/HRES* (附录 A.5),K_SEAF 推导 (附录 A.6)
TS 29.509Nausf_UEAuthentication 服务 API (HTTP SBI)
TS 29.503Nudm_UEAuthentication 服务 API - 认证向量生成和认证结果报告
TS 29.510Nnrf_NFManagement 和 Nnrf_NFDiscovery 服务 API - NF 注册/心跳和 UDM 发现
TS 24.501NAS - 服务网络名称格式 (5G:mnc<MNC>.mcc<MCC>.3gppnetwork.org)

接口

接口对等方方向传输目的
N12 (Nausf_UEAuthentication)AMF入站HTTP SBIUE 认证初始化和 5G-AKA 确认
N13 (Nudm_UEAuthentication)UDM出站HTTP SBI认证向量生成和认证结果报告
NnrfNRF出站HTTP SBINF 注册、心跳和对等 NF (UDM) 发现 (Nnrf_NFDiscovery, TS 29.510)

SBI 端点

所有 SBI 端点都在基础 URL {sbi_scheme}://{sbi_addr}:{sbi_port} 下提供,并在请求中使用 Content-Type: application/json。成功的创建响应使用 application/3gppHal+json,符合 TS 29.509。

方法路径服务描述成功
POST/nausf-auth/v1/ue-authenticationsNausf_UEAuthentication初始化 UE 认证 (AMF → AUSF)。需要 supiOrSuciservingNetworkName201 Created (application/3gppHal+json, Location 头)
PUT/nausf-auth/v1/ue-authentications/{authCtxId}/5g-aka-confirmationNausf_UEAuthentication确认 5G-AKA - AMF 提交 resStar200 OK
DELETE/nausf-auth/v1/ue-authentications/{authCtxId}/5g-aka-confirmationNausf_UEAuthentication删除 5G-AKA 认证结果/上下文204 No Content
POST/nausf-auth/v1/ue-authentications/deregisterNausf_UEAuthentication删除给定 SUPI 的 UE 安全上下文204 No Content

请求/响应摘要

初始化 UE 认证 - 请求体携带 supiOrSuci (SUPI 或 SUCI;字段 suci 也被接受) 和 servingNetworkName;一个可选的 resynchronizationInfo 对象被传递给 UDM 进行 SQN 重新同步。AUSF 从 UDM 请求 5G-AKA 向量,然后返回 201 CreatedUEAuthenticationCtx 体:

  • authType: "5G_AKA"
  • 5gAuthData: { rand, autn, hxresStar } (十六进制字符串)
  • _links.5g-aka.href: 此上下文的绝对确认 URL
  • servingNetworkName

Location 头指向创建的上下文资源 (.../ue-authentications/{authCtxId})。

5G-AKA 确认 - 请求体携带 resStar (十六进制)。AUSF 将解码后的 resStar 与存储的 XRES* 进行比较 (TS 33.501 6.1.3.2;AMF 负责 HRES*/HXRES* 哈希检查)。它在 UDM 中记录结果 (auth-events),并始终返回 200 OKConfirmationDataResponse

  • 成功时: { authResult: "AUTHENTICATION_SUCCESS", supi, kseaf } (K_SEAF 作为十六进制字符串)。
  • 失败时: { authResult: "AUTHENTICATION_FAILURE", supi }。请注意,认证失败在体中通过 authResult 信号,而不是通过 HTTP 错误状态。

认证上下文在确认后被删除,无论结果如何。

错误响应

错误作为 ProblemDetails 体返回。

HTTP 状态原因条件
400MANDATORY_IE_MISSING缺少必需字段 (supiOrSuci/servingNetworkName 在初始化时;resStar 在确认时;supi 在注销时)
404USER_NOT_FOUNDUDM 在生成向量时返回 404,表示找不到订阅者
404CONTEXT_NOT_FOUND确认请求中的 authCtxId 与任何活动上下文不匹配
500SYSTEM_FAILUREUDM 无法访问,或 UDM 返回了格式错误的认证向量

关键程序

5G-AKA 认证 (TS 33.501 第 6.1.3 节)

初始化。POST .../ue-authentications 时,AUSF 创建一个上下文,然后在 /nudm-ueau/v1/{supiOrSuci}/security-information/generate-auth-data 向 UDM 请求 5G-AKA 向量,包括 AUSF NF 实例 ID 和 AMF 提供的任何 resynchronizationInfo。UDM 返回一个认证向量 (rand, autn, xresStar, kausf) 和解析后的 supi (从 SUCI 中解密)。AUSF 从 RAND 和 XRES* 计算 HXRES*,从绑定到服务网络名称的 K_AUSF 中推导 K_SEAF,存储材料,并将挑战返回给 AMF。向量字段以十六进制解码,防止缺失或格式错误的向量导致崩溃,而是产生干净的 500 SYSTEM_FAILURE

确认。PUT .../{authCtxId}/5g-aka-confirmation 时,AUSF 查找上下文,解码 resStar,并直接与存储的 XRES* 进行比较。它通过 auth-events 向 UDM 报告结果 (尽力而为;失败的报告会被记录,但不会改变对 AMF 的响应) 并在体中返回结果。然后上下文被删除。未知的 authCtxId 返回 404 CONTEXT_NOT_FOUND

服务网络名称。 根据 mcc/mnc 构建为 5G:mnc<MNC>.mcc<MCC>.3gppnetwork.org,符合 TS 24.501,两个数字的 MNC 补零到三位数。服务网络名称将 K_SEAF 绑定到服务网络,因此 AMF 和 AUSF 必须就 PLMN 身份达成一致。

SQN 重新同步。 当 AMF 在初始化请求中包含 resynchronizationInfo (UE 生成的 RANDAUTS) 时,AUSF 检测到重新同步条件,验证 randauts 都是格式正确的十六进制,并将验证后的对发送到 UDM/ARPF 的 generate-auth-data 请求中,以便 UDM 可以重新推导序列号 (TS 33.501 6.1.3.3)。格式错误的重新同步输入会被丢弃,不会转发。AUSF 本身不计算序列号,但它并不是盲目的传递:它在转发之前检查和验证重新同步数据块。

密钥层次结构和推导分离 (TS 33.501 附录 A)

5G-AKA 密钥层次结构在 UDM 和 AUSF 之间分离。AUSF 从不看到长期密钥 (Ki) ��� CK/IK - 它接收 UDM 在认证向量中已经推导的 K_AUSF,并仅从中推导锚定密钥 K_SEAF。AMF (而不是 AUSF) 继续链条,直到 K_AMF 和接入层密钥。

密钥/值来源推导AUSF 中的目的
K_AUSFUDM (ARPF)KDF(CK‖IK, servingNetworkName, SQN⊕AK),FC 0x6A (A.2)在向量中接收;AUSF 锚定密钥,从中推导 K_SEAF。保存在上下文中,永不返回给 AMF
K_SEAFAUSFKDF(K_AUSF, servingNetworkName),FC 0x6C (A.6)服务网络锚定密钥。仅在 AUTHENTICATION_SUCCESS 时返回给 AMF;AMF 从中推导 K_AMF
HXRES*AUSFSHA-256(RAND ‖ XRES*) 的低 128 位 (A.5)在初始化时返回给 AMF,以便 AMF 可以在转发 RES* 之前匹配 UE 的 HRES*
XRES*UDM (ARPF)KDF(CK‖IK, SNN, RAND, XRES),FC 0x6B (A.4)在向量中接收;AUSF 在确认时将 RES* 与之进行比较的预期响应

由于 K_SEAF 绑定到 servingNetworkName (而上游的 K_AUSF 绑定到相同的 SN 名称和 SQN⊕AK),AMF、AUSF 和 UDM 必须就 PLMN 身份达成一致,以便推导出的密钥与 UE 的匹配。服务网络名称不匹配在确认时表现为 AUTHENTICATION_FAILURE,而不是作为显式错误。

删除 5G-AKA 认证结果 (TS 29.509)

AMF 可以在没有确认交换的情况下显式删除认证结果/上下文。这映射到 TS 29.509 中的 Delete5gAkaAuthenticationResult

AUSF 无条件删除上下文 (未知的 authCtxId 是无操作),并始终返回 204 No Content;不进行 UDM 调用。

注销 (TS 29.509)

删除 AUSF 为给定 SUPI 持有的任何 UE 安全上下文。

supi 是必需的 (缺失/空值返回 400 MANDATORY_IE_MISSING)。AUSF 遍历其内存中的上下文,删除任何存储的 supisuci 等于请求的 SUPI 的上下文;该操作仅限于本地,不会调用 UDM。它始终返回 204 No Content,即使没有匹配的上下文存在。

UE 认证上下文

每次初始化都会创建一个内存中的 UE 认证上下文,以生成的 authCtxId (UUID) 为键。上下文保存完成交换所需的材料,是 OAM 会话端点 (GET /api/ausf_sessions, DELETE /api/ausf_sessions/{id}) 列出和清除的单位。

字段设置于含义
ctx_id初始化authCtxId UUID;出现在确认 URL 和 OAM 会话列表中
suci初始化AMF 最初呈现的 supiOrSuci (SUCI 或 SUPI)
supi向量响应UDM 解析的纯 SUPI (解密)
serving_network_name初始化密钥绑定的 SN 名称
rand, xres_star, hxres_star, kausf, kseaf向量响应在交换期间持有的向量和推导密钥
auth_type向量响应5G_AKA
auth_result-为已解决的会话填充;仍在进行中的上下文没有结果,并在 GET /api/statistics 中计为 pending

上下文通常仅在初始化和结算之间存在。它在确认时被删除 (成功 失败),在显式 DELETE .../5g-aka-confirmation 时,在其 SUPI 的 deregister 时,以及在进程重启时。此外,闲置或被遗弃的上下文由监督的定期清理程序进行垃圾收集:AMF 发起但从未确认的上下文在超过 context_ttl_seconds (默认 3600 秒) 后被清理,清理程序每 context_reap_interval_ms (默认 60000 毫秒) 扫描一次。这限制了被遗弃上下文的生命周期,而无需操作员干预。有关如何手动检查和清除上下文的信息,请参见 增长的活动上下文计数

NRF 注册

在启动时,AUSF 注册一个 AUSF NF 配置文件到 NRF,广告 nausf-auth 服务 (v1, 1.0.0)、其 SBI 地址/端口/方案和配置的 PLMN。它每 heartbeat_interval 毫秒发送心跳。可以通过 POST /api/oam/nrf/reregister 在运行时强制重新注册。AUSF 还使用 NRF 发现 UDM:在每个 Nudm 调用之前,它查询 Nnrf_NFDiscovery (TS 29.510) 以获取 udm 实例并以发现的 UDM 为目标。只有在发现没有实例 (或 NRF 无法访问) 时,它才会回退到静态配置的 udm_uri,因此单 UDM 和静态部署仍然可以正常工作。