首页 › security › 5G-AKA主认证全链路拆解

5G-AKA 主认证全链路拆解:从 AV 生成到 KSEAF 锚点密钥派生

本文聚焦 3GPP TS 33.501《Security architecture and procedures for 5G system》第 6.1.3 节(5G AKA primary authentication) 及 Annex A.2~A.7 的密钥派生函数(KDF),逐消息、逐 IE、逐字节地拆解 5G 主认证的完整信令链路,并对照说明其相对于 EPS-AKA 的三项安全增强点(服务网络显式绑定、HXRES* 双重确认、归属网络控制增强)。


一、为什么 5G 要重做一套 AKA

在 4G EPS 中,MME 直接从 HSS 拉取认证向量(AV),用 XRES 本地比对即完成认证。这种设计有两个先天的安全弱点:

  1. 服务网络对 UE 而言是"匿名的":EPS-AKA 中下发的 AV 不携带服务网络身份,UE 无法验证"我现在到底是被哪一个 PLMN 服务"。这正是伪基站(IMSI catcher)和虚假基站中继攻击的根源——攻击者可以冒充任意服务网络。
  2. 归属网络(HN)"被蒙在鼓里":EPS 中拜访网络拿到 AV 后自行鉴权,HN 并不知道这次鉴权到底成没成功。

5G AKA(5G Authentication and Key Agreement)在 TS 33.501 §6.1.3 中给出了修正方案,核心思想是:

下面我们沿着这条链路,从密钥层级、信令时序、IE 结构、KDF 派生一路拆到底。


二、参与功能实体与密钥层级总览

5G 主认证涉及四个角色:

角色 功能实体 位置 持有的密钥
被认证方 UE(USIM + ME) 终端 永久密钥 K(仅在 USIM 内)
服务网络锚点 SEAF(位于 AMF) 拜访/服务网络 KSEAF
归属鉴权裁决 AUSF 通常归属网络 KAUSF、XRES*
认证数据源 UDM / ARPF(含 SIDF 做 SUCI 解 concealment) 归属网络 K、生成 5G HE AV

注:K 永远不离开 USIM/UDM;USIM 用 K 执行 f1~f5* 运算后把 CK/IK/RES 交给 ME,由 ME 完成 5G 特有的 KDF 派生。

整个 5G 密钥层级以 KSEAF 为锚点,向下派生出 NAS/AS 安全所需的全部密钥:

graph TD
    K["永久密钥 K<br/>(USIM / UDM·ARPF)"] -->|f3,f4,f2,f1,f5*| F["CK, IK, RES, MAC-A, AK"]
    F -->|"KDF FC=0x6C, P0=SNN"| CKI["CK'‖IK' (256 bit)"]
    CKI -->|"KDF FC=0x6B, P0=RAND,P1=RES"| RES["RES* / XRES*"]
    CKI -->|"KDF FC=0x6A, P0=SNN,P1=SQN⊕AK"| KAUSF["KAUSF"]
    KAUSF -->|"KDF FC=0x6E, P0=SNN"| KSEAF["KSEAF<br/>(锚点密钥, 驻留SEAF)"]
    KSEAF -->|"KDF FC=0x6F, P0=SUPI,P1=ABBA"| KAMF["KAMF (AMF)"]
    KAMF --> DOWN["KNASenc / KNASint<br/>KgNB / NH / KRRCenc / ..."]
    style KSEAF fill:#cfe8ff,stroke:#0366d6,stroke-width:2px
    style K fill:#ffe0b3,stroke:#e65100,stroke-width:2px

需要强调:本图中的 KgNB/NH 部分(接入网密钥链)已在上一篇《5G 切换密钥链 NH 派生机制》中详述,本文聚焦认证段,即从 K → KSEAF → KAMF 这一段的派生与绑定逻辑。


三、5G AKA 完整信令时序(TS 33.501 §6.1.3)

主认证并非独立流程,它内嵌于注册流程(Registration)中:AMF 在收到 Initial Registration 且尚未建立安全上下文时,由 SEAF 触发本次主认证。

sequenceDiagram
    autonumber
    participant UE as UE (USIM+ME)
    participant SEAF as SEAF / AMF
    participant AUSF as AUSF
    participant UDM as UDM / ARPF
    Note over UE,UDM: 注册流程内触发主认证 (TS 33.501 §6.1.3)
    SEAF->>AUSF: Nausf_UEAuthentication_Authenticate<br/>(SUCI/SUPI, SNN)
    AUSF->>UDM: Nudm_UEAuthentication_Get<br/>(SUCI, SNN)
    Note over UDM: ARPF 用永久密钥 K 生成 5G HE AV:<br/>{RAND, AUTN, XRES*, KAUSF}
    UDM-->>AUSF: 5G AV {RAND, AUTN, XRES*, KAUSF}
    Note over AUSF: 计算 HXRES* = SHA-256(RAND ‖ XRES*)
    AUSF-->>SEAF: {RAND, AUTN, HXRES*}<br/>(XRES*, KAUSF 留在 AUSF)
    SEAF->>UE: NAS Authentication Request<br/>(RAND, AUTN, ngKSI, ABBA)
    Note over UE: USIM 验证 AUTN(MAC/SQN/分离位)<br/>ME 计算 RES* 与 KAUSF
    alt AUTN 验证通过
        UE-->>SEAF: NAS Authentication Response (RES*)
        Note over SEAF: 计算 SHA-256(RAND ‖ RES*)<br/>与 HXRES* 比对 → 本地预确认
        SEAF->>AUSF: Nausf_UEAuthentication_Authenticate (RES*)
        Note over AUSF: RES* 与 XRES* 比对 → 最终确认
        AUSF-->>SEAF: Authenticated + KSEAF = KDF(KAUSF, SNN)
        Note over SEAF: KSEAF → KAMF → 建立 NAS/AS 安全上下文
    else AUTN 验证失败
        UE-->>SEAF: NAS Authentication Failure<br/>(#20 MAC / #21 Synch / #23 Non-5G)
    end

逐步解析

步骤 1~3(取 AV):SEAF 构造 SNN(格式见第五节),通过 SBI 接口 Nausf_UEAuthentication_Authenticate 向 AUSF 发起请求;AUSF 再用 Nudm_UEAuthentication_Get 向 UDM 取认证向量。若 UE 上报的是 SUCI,则 UDM 内的 SIDF(Subscription Identifier De-concealing Function) 先用归属网络公钥解出 SUPI,再交由 ARPF 生成向量。

步骤 4(5G HE AV 生成):ARPF 在归属网络用永久密钥 K 调用经典 AKA 函数集生成 5G Home Environment AV:

步骤 5~6(AUSF 裁剪):AUSF 拿到 AV 后做两件事——一是计算 HXRES* = SHA-256(RAND ‖ XRES*)(TS 33.501 Annex A.4);二是把 XRES* 和 KAUSF 留在自己这里,只把 {RAND, AUTN, HXRES*} 下发给 SEAF。这一步是"归属网络控制"的关键:拜访网络拿不到能反推 XRES* 的材料。

步骤 7~8(空口挑战-应答):SEAF 通过 NGAP 把 NAS Authentication Request(含 RAND、AUTN、ngKSI、ABBA)下发给 UE。UE 端 USIM 验证 AUTN 并计算 RES,ME 再派生出 RES*,回送 NAS Authentication Response(RES*)。

步骤 9(SEAF 本地预确认):SEAF 计算 SHA-256(RAND ‖ RES*) 并与 AUSF 下发的 HXRES* 比对。匹配则 UE 身份在服务网络被初步确认。

步骤 10~11(AUSF 最终裁决):SEAF 把 RES* 上送 AUSF,AUSF 与本地 XRES* 严格比对,通过后派生 KSEAF = KDF(KAUSF, SNN) 并回送 SEAF,认证结束、安全上下文建立。


四、关键 IE 与 AUTN 字节结构

认证相关消息(TS 24.501 §8.2.25~8.2.26)中携带的关键 IE 如下:

IE 所在消息 含义 长度 / 来源
ngKSI Auth Request/Response 临时密钥集标识,指向本次建立的 5G 安全上下文 4 bit
ABBA Auth Request 接入网隔离参数,含 5G 接入指示,参与 KAMF 派生 变长
RAND Auth Request 128 bit 随机挑战 128 bit
AUTN Auth Request 认证令牌(网络对 UE 的身份证明 + 防重放) 128 bit
RES* Auth Response UE 对挑战的扩展响应 128~256 bit
SNN SBI 接口 服务网络名,绑入 KDF 字符串
HXRES* AUSF→SEAF 哈希响应,供 SEAF 本地比对 256 bit
KAUSF / KSEAF SBI 接口 派生密钥(KAUSF 不出 AUSF) 256 bit

其中 AUTN 的 128 bit 内部结构是 5G 兼容性判断的核心(TS 33.102 中定义的 AKA 令牌沿用至 5G):

graph LR
    A["AUTN (128 bit)"] --> B["SQN ⊕ AK<br/>(序列号异或匿名密钥)<br/>48 bit"]
    A --> C["AMF<br/>(认证管理字段)<br/>16 bit"]
    A --> D["MAC-A / MAC-F<br/>网络鉴权码<br/>64 bit"]
    C --> E["AMF 分离位<br/>(LSB = 1 → 5G AV)<br/>LSB = 0 → EPS AV"]
    style C fill:#ffd6d6,stroke:#b71c1c
    style E fill:#fff3cd,stroke:#856404

设计意图:3G/4G/5G 共用同一张 USIM、同一把 K,靠 AMF 的最低位(separation bit) 来区分这套 AV 到底给哪个系统用。当 LSB=1,UE 知道这是 5G AV,于是走 5G AKA 流程并计算 RES*、KAUSF;若收到 LSB=0,UE 会判定"这不是 5G 认证"并以 #23 Non-5G authentication rejected 拒绝。这一位是防止 4G/5G 密钥体系相互污染的"单比特闸门"。

另外,TS 33.501 强制要求:ME 在用 CK/IK 派生出 CK'‖IK' 后必须清零(zeroize)原始 CK、IK。这是为了堵死"用 5G USIM 降级到 2G AKA 再生 CK/IK"这一类降级攻击路径。


五、SNN 服务网络名与 KDF 派生详解

5.1 SNN 的构造

服务网络名 SNN 是 5G 密钥"绑定"的核心参数,其字符串形式为:

SNN = "5G:mnc<MNC>.mcc<MCC>.3gppnetworks.org"
例:  5G:mnc012.mcc345.3gppnetworks.org

它由 SEAF 根据当前服务 PLMN(MCC+MNC)拼接而成,并以 SBI 参数一路传递给 AUSF、UDM。由于 KAUSF 和 KSEAF 都把 SNN 作为 KDF 输入,任何对 PLMN 身份的篡改都会导致派生出的密钥与 UE 不一致,从而在后续 NAS SMC 或 PDU 会话建立时失败——这正是 5G 抵御伪服务网络的根本机制。

5.2 KDF 函数族(TS 33.501 Annex A.2~A.6)

5G 所有派生密钥都遵循统一的 HMAC-SHA-256 框架:

KDF(KEY) = HMAC-SHA-256(KEY, S)
S = FC ‖ P0 ‖ L0 ‖ P1 ‖ L1 ‖ ...
其中 FC 为功能码,Pi 为输入参数,Li 为 2 字节长度。

本流程涉及的 5 个功能码汇总如下:

派生密钥 FC 输入密钥 KEY P0 P1 规范章节
CK'‖IK' 0x6C CK ‖ IK SNN — A.5
RES* / XRES* 0x6B CK' ‖ IK' RAND RES / XRES A.2
KAUSF 0x6A CK' ‖ IK' SNN SQN ⊕ AK A.6
KSEAF 0x6E KAUSF SNN — A.7
KAMF 0x6F KSEAF SUPI ABBA A.8

注意一个关键细节:KAUSF 的派生不仅用 SNN,还用 SQN ⊕ AK(与 AUTN 中携带的序列号异或匿名密钥值)作为第二输入。这意味着同一个用户每次认证(SQN 递增)得到的 KAUSF 都不同,天然具备前向/后向隔离性,即便某次 KSEAF 泄露也无法回溯或前推。

而 KAMF 的派生引入 SUPI(用户永久身份)与 ABBA(接入网隔离参数),把密钥与"是谁、从哪种接入网来"再次绑定,为后续 NAS/AS 密钥分层打下基础。


六、HXRES* 双重确认机制的设计意图

很多初学者会问:既然 SEAF 已经拿到了 RES*,为什么还要先算一遍 HXRES*?这里藏着 5G 安全架构最精妙的一处权衡。

两个目标存在张力: - 拜访网络(VPLMN 的 SEAF)希望本地、快速地确认 UE,减少跨网往返时延; - 归属网络(HPLMN 的 AUSF)希望掌控最终裁决权,并保留可向 HN 证明"鉴权已成功"的证据,同时不让 VPLMN 拿到完整 XRES*。

HXRES* 机制同时满足两者:

  1. HXRES* 是单向哈希——VPLMN 即便长期持有也无法反推出 XRES*,归属网络的秘密得以保护;
  2. SEAF 用 HXRES* 完成毫秒级本地预确认,可在等待 AUSF 最终裁决期间就启动后续信令(如并发处理),缩短端到端时延;
  3. 高强度的 RES*/XRES* 比对仍由 AUSF 完成,提供归属网络可审计的成功证据。

对比 EPS-AKA 中 HSS 把 XRES 全权交给 MME、归属网络事后无从核验,这一改动正是 TS 33.501 所称的 "home-control enhancement"。


七、5G AKA 与 EAP-AKA' 的对比

5G 定义了两种主认证方法(§6.1.2 EAP-AKA'、§6.1.3 5G AKA),由 UDM 根据用户签约的"认证方法"字段选择。两者最终都收敛到同一密钥层级 KSEAF → KAMF,但绑定方式与适用场景差异显著:

维度 5G AKA EAP-AKA'
协议框架 3GPP 原生 NAS 信令 EAP 框架(RFC 9048)
认证向量 5G AV EAP AV + AT_RAND/AT_AUTN/AT_KDF 属性
SNN 绑定 隐式:SNN 作为 KDF(KAUSF/KSEAF)输入 显式:经 AT_KDF 属性协商,UE 直接校验 SNN 字符串
本地预确认 SEAF 用 HXRES* 预确认 无 HXRES*,依赖 AUSF 最终确认
典型接入 3GPP 接入(NR) 不可信非 3GPP 接入(N3IWF)
UE 对服务网络的验证 间接(通过密钥上下文) 直接(看到并比对网络名字符串)
中间产物 CK'‖IK' → KAUSF MK → KAUSF

一句话总结:5G AKA 把服务网络身份"溶进"密钥,EAP-AKA' 把它"写在脸上"让 UE 主动核对。前者更紧凑,后者对 UE 的可见性更强。


八、抓包识别与故障排错实战

8.1 Wireshark 抓包识别

5G 主认证横跨空口 NAS 与核心网 SBI 两段,分别用不同过滤器:

排查时优先确认两点:AUTN 中 AMF 分离位是否为 1(解析 AUTN 的第 7~8 字节即 AMF,其 LSB 应为 1);RES* 长度是否落 128~256 bit 区间。

8.2 常见故障点与排错思路

现象 NAS Cause 根因 排错方向
MAC 不匹配 #20 MAC failure USIM 与 UDM 的 K 不一致、或 AV 被重放 核对 USIM/UDM 密钥;检查 SQN 是否被复用
序列号失步 #21 Synch failure UE 的 SQN 与 UDM 记录差距超窗 UE 回 AUTS 触发重同步,检查 UDM 侧 SQN 步长配置
非法 5G AV #23 Non-5G authentication rejected AMF 分离位=0(USIM 非 5G 或误下发 EPS AV) 检查 UDM 选用的认证方法与 USIM 5G 能力
HXRES 不匹配 SEAF/AUSF 内部拒绝 SNN 构造错误(MCC/MNC 错)或 RES* 计算异常 核对 SEAF 拼接的 SNN 与 KDF 输入是否一致
认证后 SMC 失败 Security mode 拒绝 KAMF 派生输入(SUPI/ABBA)不一致 检查 ABBA 字段与 SUPI 编码

8.3 SQN 重同步(AUTS)子流程

当 UE 判定 SQN 越界,回送 Authentication Failure (#21) 并携带 AUTS(内含 UE 当前 SQN 经 f1* 计算的 MAC)。UDM 据此重算 SQN 基线,下发新 AV,完成重同步。这一子流程在终端长期关机后重新入网、或 UDM 数据库异常导致 SQN 回退时高发。

九、常见问题

Q1:5G AKA 与 EPS-AKA 的本质区别是什么? A:三点:(1) 服务网络 SNN 显式注入密钥派生(KAUSF/KSEAF 均以 SNN 为输入),杜绝伪基站冒充任意服务网络;(2) HXRES* 双重确认——SEAF 本地预确认、AUSF 最终裁决;(3) 归属网络控制增强——HN 现在能拿到 UE 成功鉴权的证据,而非像 EPS 那样把 XRES 全权交给拜访网络。

Q2:为什么 SEAF 要先用 HXRES* 比对,而不是直接比 RES*? A:HXRES* 是 SHA-256 单向哈希,拜访网络长期持有也无法反推 XRES*,保护了归属网络秘密;同时 SEAF 可借此做毫秒级本地预确认、降低跨网往返时延;高强度的 RES*/XRES* 终判仍由 AUSF 完成,实现"快速本地确认 + 归属最终裁决"的平衡。

Q3:AUTN 里那个 AMF 分离位到底有什么用? A:AMF 的最低位(separation bit)=1 表示本 AV 用于 5G。同一张 USIM 的 K 在 3G/4G/5G 共用,靠这一位区分体系。若 UE 收到分离位=0(EPS AV),会以 #23 Non-5G authentication rejected 拒绝,防止 4G/5G 密钥体系相互污染与降级。

Q4:KAUSF 为什么必须留在归属网络的 AUSF,不下发给拜访网? A:KAUSF 是派生 KSEAF 的中间密钥。让它驻留归属 AUSF(甚至不发给 SEAF),可保证拜访网络只拿到派生后的 KSEAF,无法获得更高级别密钥材料,从而实现密钥分层与最小权限原则——即便拜访网被攻陷,也无法回溯到 KAUSF 或永久密钥 K。

Q5:SQN 失步后怎么恢复? A:UE 检测到 SQN 越出可接受窗口,回送 Authentication Failure (#21 Synch failure) 并携带 AUTS(含 UE 当前 SQN 经 f1* 计算的 MAC)。UDM 解析 AUTS、以 UE 的 SQN 为基准重算序列号,下发新 AV,完成重同步后再进入正常认证。


参考来源

  1. 3GPP TS 33.501 V18.10.0 — Security architecture and procedures for 5G system — §6.1.2 EAP-AKA'、§6.1.3 5G AKA、Annex A.2~A.7 KDF
  2. 3GPP TS 24.501 — NAS protocol for 5G — Authentication Request/Response/Failure 消息定义与 cause codes
  3. RFC 9048 — EAP-AKA' — EAP 框架下的 AKA' 机制与 AT_KDF 协商
  4. 5G6G Academy — 5G-AKA and EAP-AKA Prime: Complete Authentication Procedure — 双重确认与归属控制增强解读
  5. free5GC — Introduction to 5G AKA — UE/SEAF/AUSF/UDM 交互的开源实现视角
  6. ETSI TS 133 535 V19.0.0 — AKMA (Authentication and Key Management for Applications) — 基于主认证派生应用层密钥的次级认证扩展

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。 后构造非法上下文。

Q4:鉴权和 Security Mode Command 是什么关系? A:鉴权(Authentication)产出密钥根KSEAF→KAMF,但密钥还没"激活"。Security Mode Command才是把选定的NAS加密/完整性算法与对应密钥真正下发、并开始空口加密的过程。简言之:鉴权"算出"密钥,SMC"启用"密钥。

Q5:如果只抓到空口,能完整复现鉴权吗? A:能复现UE侧与AMF侧的交互(Authentication Request/Response明文可见,含RAND/AUTN/RES*),但无法看到归属网侧的XRES*/HXRES*与最终裁决——这部分只在SBI接口(AUSF↔UDM、AMF↔AUSF)上出现。完整排错需同时抓空口与SBI。


参考来源

  1. 3GPP TS 33.501 V19.x — Security architecture and procedures for the 5G system — §6.1.3 (5G AKA procedure)、Annex A.2/A.3/A.5/A.6 (KDF参数)
  2. ShareTechnote — 5G Core Authentication — N12/N13接口消息细节与时序图解读
  3. free5GC — Introduction to 5G AKA — 开源实现中的AV生成与XRES*/HRES*比对源码视角
  4. Techplayon — 5G Authentication and Key Management (5G-AKA) — HRES* vs HXRES*服务网预验证流程详解
  5. 腾讯云开发者社区 — 基于free5gc+UERANSIM的5G_AKA协议解析 — 抓包与源码对照的MAC/RES验证实战分析

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入