<!-- title: 5G-AKA主鉴权向量推演与双端验证拆解 -->
<!-- domain: security -->

# 5G-AKA主鉴权向量推演与双端验证拆解

## 一、背景与问题域

5G-AKA（Authentication and Key Agreement）是5G系统最核心的安全锚点机制，定义于TS 33.501 Section 6.1。与4G EPS-AKA相比，5G-AKA引入了三层关键改进：**服务网络显式鉴权**、**XRES\*扩展响应机制**和**KSEAF安全锚点密钥层级**。

本文聚焦TS 33.501 V18.10.0 Section 6.1.1中定义的5G-AKA主鉴权流程，深入拆解从UDM/ARPF生成5G HE AV（Home Environment Authentication Vector）到UE侧完成AUTN验证并推衍完整密钥层级的过程，特别是XRES\*/HXRES\*双端验证这一5G独有的安全增强设计。

## 二、5G-AKA完整信令时序图

```mermaid
sequenceDiagram
    participant UE as UE/USIM
    participant SEAF as SEAF(AMF)
    participant AUSF as AUSF
    participant UDM as UDM/SIDF/ARPF

    Note over UE,UDM: 阶段一：初始注册触发鉴权
    UE->>SEAF: Registration Request(SUCI/5G-GUTI)
    Note right of SEAF: AMF决定需要执行主鉴权<br/>触发Nausf服务调用

    Note over UE,UDM: 阶段二：鉴权向量请求与生成
    SEAF->>AUSF: Nausf_UEAuthentication Authenticate Request<br/>(SUCI/SUPI, SNN)
    AUSF->>UDM: Nudm_UEAuthentication Get Request<br/>(SUCI/SUPI, SNN)
    
    Note over UDM: SIDF解密SUCI→SUPI<br/>ARPF检索长期密钥K<br/>执行MILENAGE算法集<br/>生成5G HE AV{RAND,AUTN,XRES*,KAUSF}
    
    UDM->>AUSF: Nudm_UEAuthentication Get Response<br/>(5G HE AV: RAND,AUTN,XRES*,KAUSF)
    
    Note over AUSF: 从XRES*派生HXRES*<br/>HXRES*=SHA-256(RAND⊕XRES*)<br/>存储XRES*和KAUSF
    
    AUSF->>SEAF: Nausf_UEAuthentication Authenticate Response<br/>(RAND,AUTN,HXRES*)

    Note over UE,UDM: 阶段三：UE侧鉴权挑战与响应
    SEAF->>UE: DL NAS Transport: Authentication Request<br/>(RAND,AUTN,ngKSI)
    
    Note over UE: USIM执行：<br/>1)f1(K,RAND,SQN,AMF)→XMAC<br/>2)比对XMAC==AUTN中MAC<br/>3)验证SQN freshness<br/>4)f2(K,RAND)→RES<br/>5)KDF→RES*<br/>6)KDF→CK',IK'→KAUSF
    
    UE->>SEAF: UL NAS Transport: Authentication Response<br/>(RES*)
    
    Note over UE,UDM: 阶段四：双端验证与密钥确认
    Note over SEAF: SEAF计算HRES*=SHA-256(RAND⊕RES*)<br/>比对HRES*==HXRES*<br/>（第一重验证：服务网络侧）
    
    SEAF->>AUSF: Nausf_UEAuthentication Authenticate Request<br/>(RES*)
    
    Note over AUSF: AUSF比对RES*与存储的XRES*<br/>（第二重验证：归属网络侧）<br/>若匹配，推衍KSEAF<br/>KSEAF=KDF(KAUSF,SNN)
    
    AUSF->>SEAF: Nausf_UEAuthentication Authenticate Confirmation<br/>(KSEAF,"true"/Supi)
    
    Note over SEAF: SEAF收到KSEAF<br/>KAMF=KDF(KSEAF,ABBA,SUPI)<br/>→派生NAS/RAN层密钥
    
    SEAF->>UE: Security Mode Command<br/>(NAS安全算法,ngKSI)
    UE->>SEAF: Security Mode Complete
```

## 三、鉴权向量（5G HE AV）生成过程深度拆解

### 3.1 ARPF内部向量生成流程

鉴权向量的生成是整个5G-AKA的信任根。在UDM内部的ARPF（Authentication credential Repository and Processing Function）中，使用长期共享密钥**K**和算法配置参数**OPc**，通过MILENAGE算法集（TS 35.206）生成中间参数。

```mermaid
flowchart TB
    subgraph ARPF["UDM/ARPF内部"]
        K["长期密钥 K<br/>(128/256-bit)"]
        OPC["算法配置 OPc<br/>(128-bit)"]
        RAND["随机数 RAND<br/>(128-bit)"]
        SQN["序列号 SQN<br/>(48-bit)"]
        AMF["鉴权管理字段 AMF<br/>(16-bit)"]

        K --> MIL["MILENAGE算法集<br/>TS 35.206"]
        OPC --> MIL
        RAND --> MIL

        MIL --> f1["f1/f1*: MAC/XMAC<br/>(64-bit)"]
        MIL --> f2["f2: RES<br/>(≤256-bit)"]
        MIL --> f3["f3: CK<br/>(128-bit)"]
        MIL --> f4["f4: IK<br/>(128-bit)"]
        MIL --> f5["f5: AK<br/>(48-bit)"]

        f1 --> AUTN["AUTN构造<br/>= SQN⊕AK ‖ AMF ‖ MAC"]
        f5 --> AUTN
        SQN --> AUTN
        AMF --> AUTN

        f2 --> XRES_STAR["XRES*派生<br/>= KDF_CK‖IK<br/>('5G AKA',RAND,XRES)"]
        f3 --> XRES_STAR
        f4 --> XRES_STAR

        f3 --> KAUSF["KAUSF派生<br/>= KDF_CK‖IK<br/>(SN_Id,SQN⊕AK)"]
        f4 --> KAUSF
        f5 --> KAUSF
    end

    AUTN --> AV["5G HE AV<br/>{RAND,AUTN,XRES*,KAUSF}"]
    XRES_STAR --> AV
    KAUSF --> AV
```

### 3.2 关键IE参数详解

**表1：5G HE AV四元组参数说明**

| 参数 | 长度 | 来源/算法 | 作用 |
|------|------|-----------|------|
| RAND | 128-bit | ARPF随机数生成器 | 挑战值，确保每次鉴权新鲜性 |
| AUTN | 128-bit | f1(K,RAND,SQN,AMF)+SQN⊕AK+AMF | 网络鉴权令牌，UE据此验证网络真实性 |
| XRES\* | 可变(≤512-bit) | KDF(CK\|\|IK, "5G AKA"\|\|RAND\|\|XRES) | 扩展期望响应，AUSF侧验证UE |
| KAUSF | 256-bit | KDF(CK\|\|IK, SN_Id\|\|SQN⊕AK) | AUSF锚点密钥，后续推衍KSEAF的基础 |

**AUTN内部结构（128-bit）：**

| 字段 | 比特位 | 长度 | 说明 |
|------|--------|------|------|
| SQN⊕AK | [0:47] | 48-bit | 序列号异或匿名密钥，防止SQN被窃听 |
| AMF | [48:63] | 16-bit | 鉴权管理字段，bit0=0表示5G-AKA |
| MAC | [64:127] | 64-bit | 消息鉴权码，f1算法输出 |

### 3.3 AUTN验证的USIM侧逻辑

USIM在收到RAND和AUTN后，执行以下验证序列：

1. **f5算法**：计算匿名密钥 `AK = f5(K, RAND)`
2. **SQN恢复**：`SQN = (SQN⊕AK) ⊕ AK`，从AUTN前48-bit恢复明文SQN
3. **f1算法**：计算期望MAC `XMAC = f1(K, RAND, SQN, AMF)`
4. **MAC验证**：比对 `XMAC == AUTN[64:127]`，若不等则返回MAC Failure
5. **SQN新鲜性检查**：验证SQN是否在可接受窗口内（防止重放攻击）
6. **f2算法**：计算响应 `RES = f2(K, RAND)`
7. **RES\*派生**：`RES* = KDF(CK||IK, "5G AKA" || RAND || RES)`

```mermaid
stateDiagram-v2
    [*] --> ReceiveChallenge: 收到RAND+AUTN
    
    ReceiveChallenge --> ComputeAK: f5(K,RAND)→AK
    ComputeAK --> RecoverSQN: SQN=(SQN⊕AK)⊕AK
    RecoverSQN --> ComputeXMAC: f1(K,RAND,SQN,AMF)→XMAC
    
    ComputeXMAC --> CheckMAC: XMAC==MAC?
    CheckMAC --> MACFailure: 不匹配
    MACFailure --> [*]: 返回#2626(MAC Failure)
    
    CheckMAC --> CheckSQN: 匹配
    CheckSQN --> SQNFailure: SQN不在窗口
    SQNFailure --> [*]: 返回#2628(SYNC Failure)<br/>携带AUTS参数
    
    CheckSQN --> ComputeRES: SQN新鲜
    ComputeRES --> DeriveKeys: f2→RES, f3→CK, f4→IK
    DeriveKeys --> ComputeRESStar: RES*=KDF(CK‖IK,...)
    ComputeRESStar --> SendResponse: 发送Authentication Response(RES*)
    SendResponse --> [*]
```

## 四、XRES\*/HXRES\*双端验证机制

5G-AKA最关键的创新之一是引入了**双重响应验证**机制。4G中MME直接比对RES与XRES，而5G中将验证分为SEAF侧和AUSF侧两重独立验证。

### 4.1 为什么需要双重验证？

在4G EPS-AKA中，MME直接拿到完整的鉴权向量（包含XRES），这意味着：
- 服务网络拥有完整的XRES明文
- 归属网络对鉴权结果缺乏独立确认能力
- 恶意服务网络可能伪造鉴权成功

5G-AKA通过以下设计解决了这些问题：
- **AUSF不向SEAF发送XRES\***，只发送其哈希HXRES\*
- SEAF只能验证UE响应的哈希值（第一重），无法获知完整密钥材料
- AUSF独立完成XRES\*与RES\*的精确比对（第二重）

### 4.2 HXRES\*计算方法

根据TS 33.501 Annex A.5：

```
HXRES* = SHA-256(RAND || XRES*)[:128]
```

即取RAND与XRES\*拼接后经SHA-256运算的前128-bit。

### 4.3 SEAF与AUSF验证对比

**表2：SEAF与AUSF双重验证对比**

| 维度 | SEAF侧验证 | AUSF侧验证 |
|------|-----------|-----------|
| 输入 | HXRES\*(预存) vs HRES\*(现场计算) | XRES\*(预存) vs RES\*(来自SEAF) |
| 比对方式 | 哈希值相等性比对 | 完整参数精确比对 |
| 通过后动作 | 转发RES\*给AUSF | 推衍KSEAF并下发 |
| 安全语义 | 确认UE确实持有密钥K | 确认UE身份且授权服务网络 |
| 失败处理 | 向UE返回Reject#3GPP(2625) | 向SEAF返回"false" |

```
HRES* = SHA-256(RAND || RES*)[:128]
验证：HRES* == HXRES* ?
```

## 五、密钥层级推演链（KDF Chain）

5G-AKA的密钥推演是一棵从K到各层会话密钥的树状结构。所有KDF均基于HMAC-SHA-256，定义于TS 33.501 Annex A。

### 5.1 完整密钥推演路径

```mermaid
flowchart TD
    K["K (长期共享密钥)<br/>USIM ↔ ARPF"]

    K --> MILENAGE["MILENAGE算法集"]
    MILENAGE --> CK["CK (128-bit)"]
    MILENAGE --> IK["IK (128-bit)"]
    MILENAGE --> RES["RES"]
    MILENAGE --> AK["AK"]

    CK --> KAUSF_Input["CK‖IK"]
    IK --> KAUSF_Input

    KAUSF_Input -->|"KDF(CK‖IK, FC=0x6A,<br/>P0=SN_Id, P1=SQN⊕AK)"| KAUSF["KAUSF (256-bit)<br/>AUSF锚点密钥"]

    KAUSF -->|"KDF(KAUSF, FC=0x6C,<br/>P0=SNN)"| KSEAF["KSEAF (256-bit)<br/>服务网络锚点密钥"]

    KSEAF -->|"KDF(KSEAF, FC=0x6F,<br/>P0=ABBA, P1=SUPI)"| KAMF["KAMF (256-bit)<br/>AMF锚点密钥"]

    KAMF -->|"KDF(KAMF, FC=0x69,<br/>P0=NAS-int-AlgId)"| KNAS_INT["KNASint<br/>NAS完整性密钥"]
    KAMF -->|"KDF(KAMF, FC=0x69,<br/>P0=NAS-enc-AlgId)"| KNAS_ENC["KNASenc<br/>NAS加密密钥"]
    KAMF -->|"KDF(KAMF, FC=0x6D,<br/>P0=AccessType)"| KGNB["KgNB<br/>gNB锚点密钥"]

    KGNB --> KRRC_INT["KRRCint"]
    KGNB --> KRRC_ENC["KRRCenc"]
    KGNB --> KUP_ENC["KUPenc"]
    KGNB --> KUP_INT["KUPint"]

    style K fill:#e74c3c,color:#fff
    style KAUSF fill:#e67e22,color:#fff
    style KSEAF fill:#f39c12,color:#fff
    style KAMF fill:#27ae60,color:#fff
    style KGNB fill:#3498db,color:#fff
```

### 5.2 KDF参数详解

**表3：密钥层级KDF参数一览（TS 33.501 Annex A）**

| 密钥 | KDF输入（FC值） | 关键参数P0/P1 | 生成的层级 |
|------|-----------------|---------------|-----------|
| KAUSF | FC=0x6A | P0=SN_Id, P1=SQN⊕AK | 归属网络层 |
| KSEAF | FC=0x6C | P0=SNN(Serving Network Name) | 服务网络层 |
| KAMF | FC=0x6F | P0=ABBA参数, P1=SUPI | 接入与移动性层 |
| KNASint | FC=0x69 | P0=0x01‖NAS-int-AlgId | NAS完整性 |
| KNASenc | FC=0x69 | P0=0x02‖NAS-enc-AlgId | NAS加密性 |
| KgNB | FC=0x6D | P0=AccessType(0=3GPP) | RAN层 |

### 5.3 ABBA参数的防降级设计

KAMF推衍中引入的ABBA（Anti-Bidding-down Between Architecture）参数是5G特有的防降级机制。ABBA参数确保即使攻击者试图将5G安全上下文降级到4G级别，密钥推衍结果也会不同：

- ABBA = 0x0000：表示当前为5G安全上下文
- KAMF推衍时将ABBA作为KDF输入的一部分，使得从相同KSEAF推衍出的5G KAMF与任何4G密钥均不同

## 六、5G-AKA与EAP-AKA'双轨鉴权对比

TS 33.501 Section 6.1定义了两种主鉴权方法：5G-AKA和EAP-AKA'。网络侧通过AMF字段（AUTN[48:63]）的bit 0区分：

**表4：5G-AKA与EAP-AKA'关键差异对比**

| 对比维度 | 5G-AKA | EAP-AKA' |
|---------|---------|----------|
| TS参考 | TS 33.501 §6.1.1 | TS 33.501 §6.1.2 |
| AMF bit0 | 0 | 1 |
| UE响应消息 | Authentication Response(RES\*) | EAP Response(RES\*) |
| 挑战传输 | 直接NAS消息 | EAP封装（EAP-5G容器） |
| 典型适用场景 | 3GPP接入（NR/E-UTRA） | Non-3GPP接入（N3IWF/Wi-Fi） |
| 密钥推衍起点 | KAUSF→KSEAF | MK→MSK→KSEAF |
| 服务网络鉴权 | SNN嵌入KDF链 | RE-Auth值+SNN嵌入 |
| HXRES\*机制 | SEAF执行哈希比对 | SEAF执行EAP Success/ailure |

## 七、抓包识别与排错实战

### 7.1 Wireshark过滤5G-AKA流程

```
# NAS Authentication Request
nas-5gs.mm.message_type == 0x56

# NAS Authentication Response  
nas-5gs.mm.message_type == 0x57

# NAS Authentication Failure
nas-5gs.mm.message_type == 0x58

# NAS Authentication Reject
nas-5gs.mm.message_type == 0x59

# SBI: Nausf_UEAuthentication
http2.path contains "nausf-ueauth"

# SBI: Nudm_UEAuthentication  
http2.path contains "nudm-ueauth"
```

### 7.2 常见故障点及排错思路

**表5：5G-AKA常见故障诊断表**

| 故障现象 | NAS Cause值 | 可能原因 | 排错步骤 |
|---------|------------|---------|---------|
| MAC Failure | #2626 (0x20) | K/OPc不匹配、RAND被篡改 | ①核对USIM与UDM的K/OPc<br/>②检查RAND传输完整性 |
| SYNC Failure | #2628 (0x22) | SQN不同步 | ①检查UDM侧SQN计数器<br/>②验证AUTS中的SQN_MS<br/>③触发重新同步流程 |
| Authentication Reject | #2625 (0x21) | XRES\*比对失败/订阅无效 | ①检查AUSF日志中XRES\*比对结果<br/>②核实UDM中订阅状态 |
| SBI超时无响应 | N/A | UDM不可达/AUSF配置错误 | ①检查NRF中UDM/AUSF注册状态<br/>②验证SBI路由可达性 |
| HRES\*不匹配 | 内部错误 | SEAF计算异常/RES\*传输损坏 | ①在SEAF(AMF)日志比对HRES\*与HXRES\*<br/>②检查NAS消息完整性 |
## 八、SQN同步失败与恢复机制

当UE检测到SQN不在可接受窗口内时，USIM返回AUTS参数触发重同步流程（TS 33.501 Section 6.1.1.2）：

```
AUTS = SQN_MS ⊕ f5*(K, RAND) || MAC-S
```

其中：
- SQN_MS：USIM侧当前维护的序列号
- f5\*：特殊匿名密钥函数（仅在重同步中使用，与f5区分）
- MAC-S = f1\*(K, RAND, SQN_MS, AMF)：重同步消息鉴权码

**重同步流程：**
1. UE发送Authentication Failure(SYNC Failure, AUTS)
2. SEAF转发AUTS给AUSF
3. AUSF发送Nudm_UEAuthentication_Get（携带AUTS）给UDM
4. UDM/ARPF验证MAC-S，从AUTS恢复SQN_MS
5. UDM调整SQN并生成新的5G HE AV
6. 新AV下发给UE重新发起鉴权挑战

## 九、设计意图总结

5G-AKA的每一层设计都有明确的安全目标：

1. **RAND引入随机性**：每次鉴权挑战唯一，防止重放攻击
2. **AUTN中的MAC**：UE验证网络真伪，实现网络鉴权
3. **SQN⊕AK**：隐藏SQN防止用户位置追踪（与SUCI互补）
4. **XRES\*取代XRES**：更长的密钥材料支撑后续KDF推衍
5. **HXRES\*中间层**：SEAF只能做哈希比对，无法获取完整密钥材料
6. **KAUSF引入SN_Id**：将服务网络身份绑定到密钥，防止跨网密钥滥用
7. **KSEAF引入SNN**：服务网络名字成为密钥推衍因子，实现显式网络鉴权
8. **ABBA参数**：防止攻击者将5G安全降级为4G

## 常见问题

**Q1: 5G-AKA和4G EPS-AKA最核心的区别是什么？**
A: 三个核心差异：①5G-AKA引入KSEAF密钥层级将服务网络身份（SNN）绑定到密钥推衍链，UE可显式验证服务网络；②XRES\*比4G XRES长得多（最多512-bit vs 128-bit），提供更强的密钥材料；③HXRES\*双端验证机制使SEAF无法获取完整鉴权向量。

**Q2: AUTN中的AMF字段有什么作用？**
A: AMF（Authentication Management Field，16-bit）有两个关键用途：①bit 0区分5G-AKA（=0）和EAP-AKA'（=1）；②运营商可自定义其他bit位实现差异化鉴权策略（如指示设备类型、触发特定密钥推衍路径）。

**Q3: 为什么SEAF不直接比对RES\*和XRES\*？**
A: 因为AUSF不向SEAF发送XRES\*明文，只发送其哈希HXRES\*。这是为了防止恶意或被入侵的SEAF（AMF）获取完整鉴权向量后冒充UE。SEAF只能验证"UE确实计算了正确的RES\*"，但无法利用这个信息伪造UE身份。

**Q4: SQN同步失败后一定会触发重同步吗？**
A: 不一定。UE侧维护SQN接受窗口，只有当SQN略超前或滞后时才会触发重同步。如果SQN偏差过大（如长期未使用的SIM卡），UDM可能直接重置SQN。部分运营商实现中连续多次SYNC Failure后会锁定USIM并要求用户到营业厅处理。

**Q5: MILENAGE和TUAK两种算法集有什么区别？**
A: MILENAGE（TS 35.206）基于AES-128，是3G/4G/5G默认算法集。TUAK（TS 35.231）基于Keccak/SHA-3，是Rel-12引入的可选替代方案。两者功能等价（均实现f1-f5函数族），但TUAK提供更好的长期安全裕度。运营商在USIM和UDM中必须使用相同算法集。

## 参考来源

1. [3GPP TS 33.501 V18.10.0](https://www.etsi.org/deliver/etsi_ts/133500_133599/133501/18.10.00_60/ts_133501v181000p.pdf) — Section 6.1 Primary Authentication, Annex A KDF Specifications
2. [free5GC: Introduction to 5G AKA](https://free5gc.org/blog/20251029/20251029/) — 开源5G核心网项目对5G-AKA流程的工程实现解读
3. [3GPP TS 35.206](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2350) — MILENAGE算法集规范定义
4. [ShareTechnote: 5G Core Authentication](https://www.sharetechnote.com/html/5G/5G_Core_Authentication.html) — 含完整信令流程图和EAP-AKA'对比
5. [arXiv: The 5G-AKA Authentication Protocol Privacy](https://arxiv.org/abs/1811.06922) — 5G-AKA隐私属性的形式化分析

---
> 本文由「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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
