<!-- title: 5G认证与密钥层级体系原理图解 -->

# 5G认证与密钥层级体系原理图解：你的手机和基站是如何“对上暗号”的

你有没有想过一个问题：手机开机到上网，中间那几秒钟到底发生了什么？信号格亮起来之前，你的手机和网络其实完成了一场严格的“身份互查”——手机要证明“我是我”，网络也要证明“我不是骗子”。这套机制叫**认证与密钥协商（AKA，Authentication and Key Agreement）**，它是整个移动通信安全的发动机。

这篇文章我们把它拆开看：为什么2G时代满街的“伪基站”能骗过手机？4G/5G用什么办法堵上了这些漏洞？一把藏在SIM卡里的根密钥，是如何长成一整棵“密钥树”的？看完你会发现，5G安全性的提升，靠的不是什么神秘新算法，而是一套非常精巧的**架构设计**。

---

## 一、从一个漏洞说起：为什么2G手机会被伪基站骗

先讲一个生活中的类比。你住的小区门禁是这样工作的：保安看到你，你出示门禁卡，保安刷一下，绿灯亮，放行。注意——**只有你向小区证明了身份，小区从没向你证明过“它真的是你们小区”**。

2G网络的认证就是这个模式：网络验证手机（通过SIM卡），但手机**无条件相信**任何向它发信号的网络。攻击者架一台功率够大的假基站，广播“我是你的运营商”，手机就会乖乖接入，把明文的IMSI（相当于你的身份证号）交出去，随后你的短信验证码、通话内容都可能被截获。这就是伪基站诈骗的技术根源。

4G引入了**双向认证**：手机也要验证网络。5G则补上了最后一块短板：**连你的身份标识本身都不再明文出现在空口**。这三个层层递进的设计——双向认证、身份隐藏、密钥分级——构成了现代移动网络安全的主干。

---

## 二、信任的根：一把永远不出门的密钥

整套体系的起点简单得出奇：**USIM卡里烧录了一把根密钥 K，运营商归属网络的核心网数据库里存着同一把 K。** 除此之外，世界上没有任何地方有这把钥匙。

两条铁律贯穿始终：

1. **K 永远不出卡**——USIM只回答“算出来的结果”，绝不交出密钥本身；
2. **K 永远不出归属网**——所有涉及 K 的计算都发生在你签约的那家运营商的域内。

为什么这样设计？这是密码学里最朴素也最深刻的道理：**密钥每多出现一个地方，泄露面就大一圈**。把秘密压缩到两个物理上隔离的端点（一张防物理攻击的智能卡 + 一个受控的归属网机房），中间的所有网络节点——无论漫游到国外的访问网络，还是路边那个基站——**永远接触不到根密钥，只接触从它派生出来的“一次性工牌”**。

---

## 三、AKA：一场精心设计的“对暗号”

### 3.1 认证向量：网络提前备好的考题

当手机要接入网络，归属网络不会直接把 K 拿出来用，而是先“出题”。它生成一组数据，业内俗称**认证五元组**（认证向量）：

| 参数 | 全称 | 作用 | 由谁持有 |
|------|------|------|----------|
| RAND | 随机数（128位） | 出给手机的“考题”，每次全新 | 全程明文传输 |
| AUTN | 认证令牌（128位） | 网络的“自证信物”，手机用来验证网络 | 全程明文传输 |
| XRES | 期望应答 | 网络留存的“标准答案”，与手机回传的RES比对 | 只留在网络侧 |
| CK | 加密密钥（128位） | 后续加密通信的原料 | 派生使用，不出归属网 |
| IK | 完整性密钥（128位） | 后续防篡改校验的原料 | 派生使用，不出归属网 |

这套机制基于对称密码：手机和网络共享同一把 K，各自对同一个 RAND 做同样的运算，结果对得上，就证明“我们手里有同一把钥匙”。典型的算法族叫 **Milenage**，核心是几个函数：

$$
RES = f2_K(RAND), \quad CK = f3_K(RAND), \quad IK = f4_K(RAND)
$$

$$
MAC = f1_K(SQN \| RAND \| AMF), \quad AK = f5_K(RAND)
$$

而网络发给手机的自证信物 AUTN，就是这三样东西拼起来的：

$$
AUTN = (SQN \oplus AK) \;\|\; AMF \;\|\; MAC
$$

### 3.2 完整流程：谁在验证谁

```mermaid
sequenceDiagram
    participant U as 手机/USIM
    participant S as 服务网络(AMF/SEAF)
    participant A as 认证服务(AUSF)
    participant H as 归属网(UDM+密钥库)

    U->>S: 接入请求(携带加密身份SUCI)
    S->>A: 发起认证
    A->>H: 请求认证数据
    H->>H: 用根密钥K生成五元组<br/>RAND/AUTN/XRES/CK/IK
    H->>A: 返回认证数据(锚定密钥)
    A->>S: 下发RAND+AUTN
    S->>U: 认证挑战(RAND, AUTN)
    U->>U: USIM用K计算:<br/>验MAC? 验SQN新鲜度?
    alt 网络验证通过
        U->>S: 回传RES
        S->>A: 转交RES
        A->>A: 比对RES与XRES
        A->>S: 认证成功+锚定密钥确认
        S->>U: 进入安全模式(派生通信密钥)
    else MAC不对(网络是假的)
        U->>S: 拒绝(Authentication Reject)
    else SQN序列号异常
        U->>S: 同步失败(携带AUTS)
        S->>H: 重新同步序列号后重试
    end
```

这场“对暗号”里藏着两个精妙的防攻击设计：

**防重放：SQN序列号。** 攻击者就算录下一次合法的挑战应答，回放给手机也是没用的——因为AUTN里藏着一个不断递增的序列号SQN，USIM卡里记着自己见过的最新值。旧题重考，立刻识破。如果两边序列号意外错位（比如换卡、数据回滚），手机不直接拒绝，而是回一个带AUTS参数的“同步失败”，让归属网重新对齐后重试——既安全又不误伤。

**双向验证：AUTN与RES各管一边。** 手机验AUTN的MAC，等于网络证明了“我有K”；网络比对RES与XRES，等于手机证明了“我也有K”。一把钥匙，两个方向各出一道证明，缺一不可。

### 3.3 身份隐私：5G给身份证号套上了“信封”

解决了“假网络”问题，还剩“偷看名字”问题。4G及之前，手机初始接入时发出的IMSI是**明文**的，空口抓包就能拿到，追踪一个人的行踪不需要攻破任何加密。

5G的解法是把身份标识拆成两层：

- **SUPI**：真正的订阅永久标识（本质还是IMSI那一套），**永远不在空口明文出现**；
- **SUCI**：SUPI经过加密后的“信封”，手机每次接入发的是它。

这个加密用的正是密码学里经典的 **ECIES（椭圆曲线集成加密方案）**。它的流程值得细看：

```mermaid
flowchart TD
    subgraph 手机侧加密
        A1[取出归属运营商公钥] --> A2[生成一次性临时密钥对 r]
        A2 --> A3[ECDH计算共享秘密 S=r·公钥]
        A3 --> A4[KDF派生加密密钥与MAC密钥]
        A4 --> A5[用对称加密封装SUPI]
        A5 --> A6[输出: 临时公钥rG + 密文 + MAC校验码]
    end
    subgraph 归属网侧解密
        B1[收到临时公钥rG] --> B2[用自己的私钥k计算<br/>S=k·rG = r·kG 与手机侧相同]
        B2 --> B3[同一KDF派生出相同密钥]
        B3 --> B4[解密还原SUPI]
    end
    A6 -- SUCI经基站/访问网络透传 --> B1
```

手机侧：用归属运营商的**公钥**加密SUPI，同时生成一对**只用一次就丢弃的临时密钥**（记为 r），把临时公钥 rG 一起塞进信封。

归属网侧：用自己的**私钥** k 和收到的 rG 做一次椭圆曲线运算，就能得到和手机侧完全相同的共享秘密（因为 $k \cdot rG = r \cdot kG = rkG$，这就是 Diffie–Hellman 的巧妙之处——两边从未传输过任何共享秘密本身，却能各自算出同一个值），再派生出解密密钥拆信封。

**为什么必须用一次性临时密钥对，而不是直接用公钥加密？** 两个原因：一是同样的SUPI每次加密出来的SUCI都不同，偷窥者无法通过“密文长得一样”来关联追踪；二是临时私钥用完即弃，即使未来某天归属网私钥意外泄露，历史抓包数据依然安全（前向保护）。基站和访问网络全程只见到密文——它们既解不开，也不需要解开。

---

## 四、密钥层级树：一把根密钥如何长成一棵树

认证成功只是拿到了“入场券”。接下来真正保护你通话和数据的，是一整套**逐级派生**的密钥体系。这是5G安全架构中最值得工程师理解的部分。

### 4.1 锚定密钥思想：CK/IK不再出归属网

先看一个4G时代的教训。在4G的EAP-AKA机制里，认证产生的 CK/IK 曾经会被分发到访问网络的节点使用。IETF在定义改进版 EAP-AKA' 时写下了明确的设计动机：**绑定接入网络的名称来派生新密钥，且要求中间密钥（CK/IK）绝不允许离开归属签约系统**——因为历史上这些密钥散落在访问网络中，一个节点被攻破，攻击者就能拿密钥冒充接入点。

5G把这个思想制度化：归属网在认证后只向服务网络下发一个**锚定密钥**（K_AUSF），访问网络侧再派生出自己用的服务网密钥（K_SEAF）。层层往下，每级只拿到自己那一级的“工牌”，谁也见不到别人的，更见不到根密钥。

### 4.2 一棵完整的密钥树

```mermaid
flowchart TD
    K["根密钥 K<br/>(USIM与归属网共享,永不出卡/不出归属网)"]
    KA["锚定密钥 K_AUSF<br/>(归属网→认证服务级)"]
    KS["服务网密钥 K_SEAF<br/>(接入网络可见的最高级密钥)"]
    KM["AMF级密钥 K_AMF"]
    KN1["NAS加密密钥"]
    KN2["NAS完整性密钥"]
    KG["基站级密钥 K_gNB"]
    KR1["RRC加密密钥"]
    KR2["RRC完整性密钥"]
    KU["用户面加密密钥"]
    NH["NH链:每次切换注入新鲜随机数<br/>派生新K_gNB,前后向隔离"]

    K -->|"归属网内派生(不出归属网)"| KA
    KA -->|"认证成功后下发给服务网络"| KS
    KS -->|"注册/移动性管理更新时派生"| KM
    KM --> KN1
    KM --> KN2
    KM -->|"安全模式命令后下发基站"| KG
    KG --> KR1
    KG --> KR2
    KG --> KU
    KG -.-> NH
    NH -.->|"切换后新K_gNB"| KG
```

每一级派生都用密钥推导函数（KDF）完成，输入除了上级密钥，还**刻意混入了场景参数**——比如服务网络的名称、算法选择、UE标识等。示意如下：

$$
K_{SEAF} = KDF\big(K_{AUSF},\; SUPI,\; \text{服务网络名}\big)
$$

**为什么参数里一定要掺“网络名”？** 这正是EAP-AKA'带来的关键改进：密钥与接入网络**密码学绑定**。假设某接入网节点的密钥被泄露，攻击者拿着这把密钥去冒充另一个接入点时，因为网络名对不上，派生出来的密钥完全不同，密钥“失效于出国”——泄露的损失被限制在单一网络名称之内。规范化的描述是：密钥与网络名绑定后，“恶意接入点无法冒用从别的网络偷来的密钥”。

**为什么要长成一棵树，而不是一把密钥用到底？** 核心是**密钥隔离**：NAS层密钥、RRC层密钥、用户面密钥互为兄弟节点，从密码学上彼此独立——攻破其中任何一把，既推不出它的“父节点”，也推不出它的“兄弟”。这就是密码学里说的密钥语义分离：树越深，单点失守的爆炸半径越小。

| 密钥 | 所在位置 | 保护对象 | 泄露影响范围 |
|------|----------|----------|--------------|
| K | USIM / 归属网密钥库 | 一切密钥的根 | 理论上全局（但物理上最难触达） |
| K_AUSF | 归属网 | 认证锚定 | 单用户认证链 |
| K_SEAF | 服务网络核心网侧 | 本网络内派生 | 单次接入 |
| K_AMF | AMF | NAS信令 | 单注册上下文 |
| K_gNB | 基站 | 空口RRC+用户面 | 单基站连接 |
| 各业务密钥 | 基站/UE | 单一功能面 | 单一功能 |

### 4.3 切换时的“换锁”机制

注意树上那根虚线：**NH链**。每次切换基站，系统会注入新的随机数参与派生，生成全新的 K_gNB。目的是：新旧基站用的密钥在密码学上完全独立——你从A基站走到B基站，B基站拿到的密钥推不出A基站用过的密钥（反之亦然）。走路时通话不断，但锁已经悄悄换了好几把。

---

## 五、5G-AKA 与 EAP-AKA'：同一个问题的两种答案

5G认证允许两种方法，它们解决的是同一个问题——“如何在不暴露根密钥的前提下完成双向认证并挂好密钥树”，但实现路径不同：

| 维度 | 5G-AKA | EAP-AKA' |
|------|--------|----------|
| 设计渊源 | 直接沿用AKA挑战应答思想 | 源自IETF的EAP框架（RFC 5448定义） |
| 消息承载 | 核心网服务化接口消息 | 标准EAP消息封装 |
| 网络名绑定 | 服务网络名参与密钥派生 | AT_KDF_INPUT携带网络名，参与CK'/IK'派生 |
| 哈希算法 | 现代派生函数 | 明确从SHA-1升级到SHA-256 |
| 双向确认方式 | 网络比对RES后即完成 | EAP-Success显式确认，双方密钥确认更完整 |
| 密钥输出 | 锚定密钥逐级派生 | 派生MSK/EMSK，再挂入5G密钥树 |
| 典型场景 | 3GPP无线接入默认 | 非3GPP接入（如可信WLAN）及互通 |

两者都要求一个细节级别的防线：认证算法中的 **AMF分离位必须置1**，手机侧会检查它——这是防止新旧两代密钥派生方式被混用、进而被“降级攻击”利用的开关。看似不起眼的一个比特，是协议作者踩过坑之后的防御补丁。

---

## 六、现网实战：这些原理在调试中长什么样

**注册失败排查的第一站。** 手机附着失败，信令跟踪里看到认证失败，第一步是区分两种失败：如果是“认证失败（MAC错误）”，方向指向根密钥数据或卡片问题（比如补卡后密钥数据没同步）；如果是**SQN同步失败（出现AUTS）**，方向指向归属网序列号管理或换卡、测试卡反复回刷的场景——这两种失败在核心网日志里是一眼可辨的，而能一眼辨出来的前提，就是你脑子里有3.2节那张流程图。

**SUCI解密失败。** 现网偶发注册卡在认证第一步：手机发了SUCI，归属网解不开。通常是归属网侧的**公钥配置文件**（算法标识、公钥版本）与手机侧不一致，或者换卡后新卡支持的加密方案更老/更新。排查思路就来自第三节的原理：SUCI信封里明确写着“用了哪个公钥、哪种椭圆曲线”，解不开先核对这串元数据。

**安全模式失败不等于认证失败。** 认证成功后还有一步“NAS安全模式激活”。如果这一步失败，问题不在“对暗号”，而在**两边密钥派生不一致**——最常见的工程原因是服务网络名的构造成两边约定不同（多一个字符、大小写、域名校验差异），导致同一棵密钥树在两侧长出了不同的果子，完整性校验自然全挂。这类问题靠抓包比对派生参数才能定位，而“网络名参与派生”这个知识点，就是那把解题钥匙。

**三个常见误解，顺手澄清：**

1. **“SUCI每次都在变，所以它是临时身份”** —— 不准确。SUCI是SUPI的加密形态，内容稳定（加密同一把SUPI），只是由于ECIES的一次性临时密钥，**密文看起来每次都不同**。真正“每次会变”的是注册成功后网络分配的临时标识。
2. **“5G更安全是因为换了新加密算法”** —— 大错特错。认证算法族（Milenage一类）十几年没换，真正的质变在**架构**：双向认证补齐、身份加密上马、密钥树分级隔离、CK/IK锁死在归属网。安全是设计出来的，不是算法名堆出来的。
3. **“加密密钥是基站生成的”** —— 基站从不“生成”任何密钥，它只**持有**从K_AMF派生下来的K_gNB，以及自己再派生的三把功能密钥。整个体系里只存在一个密钥源头：那张卡和归属网里的K。理解这一点，很多“密钥不同步”的疑难杂症就有了统一的排查方向：**派生链路上任何一环的输入参数不一致，输出必不一致。**

---

## 常见问题

**Q: 5G-AKA和EAP-AKA'，运营商实际怎么选？**
A: 不是“二选一”，而是**按接入类型分场景**。3GPP无线接入（5G基站）默认走5G-AKA，链路短、消息少；非3GPP接入（比如可信WLAN融合组网）走EAP-AKA'，因为它天然适配EAP框架，且网络名绑定机制对异构接入的安全隔离更强。同一个用户、同一张卡，两种方法可并存。

**Q: SUCI和5G-GUTI都是“不暴露真身”的标识，区别在哪？**
A: 作用阶段和保护机制都不同。SUCI用于**注册前**——手机还没和网络建立信任时自报家门，靠**归属网的公钥加密**保护；5G-GUTI用于**注册后**——双方已经认证并建立安全上下文，网络分配的临时标识，靠**已建立的加密信道**传输并定期更换。一个是“密封的挂号信”，一个是“进门后的临时工牌”。

**Q: 为什么规定CK/IK这类中间密钥绝不允许离开归属网？**
A: 历史教训：这些密钥一旦下发到访问网络，就多了一份暴露面——漫游合作的境外网络、聚 合点的中转设备都可能被攻破，攻击者拿到CK/IK就能冒充合法接入点。改进后的做法是归属网把中间结果“消化”成锚定密钥再下发，访问网络只接触一级派生品，**泄露可锁定、可隔离、不可上溯**。

**Q: 手机回AUTS（同步失败）是不是坏事？**
A: 多数情况是正常的自我修复。序列号错位常见于换卡、测试环境反复刷写、归属网数据回滚等场景，AUTS机制就是为此设计的“对表”流程，重新同步后认证即可成功。只有当AUTS高频出现且无法收敛时，才需要查归属网序列号管理是否存在异常。

**Q: 切换基站后密钥为什么要刷新？直接复用不行吗？**
A: 可以复用，但那是安全上的倒退。若切换前后用同一把基站级密钥，攻破任何一个基站的攻击者就能解密你在相邻基站的历史和后续数据。NH链让每次切换注入新鲜随机数重新派生，前后向隔离——**密钥的新鲜度和密钥的强度同样重要**，这是移动通信安全区别于固定网络的关键认知。

---

## 参考来源

1. [RFC 5448: Improved EAP Method for 3G Authentication and Key Agreement (EAP-AKA')](https://www.rfc-editor.org/rfc/rfc5448.html) — 网络名绑定密钥派生（AT_KDF_INPUT）、CK'/IK'派生规则、AMF分离位、SHA-256升级与降级攻击防御的第一手权威描述
2. [RFC 4187: EAP-AKA](https://www.rfc-editor.org/rfc/rfc4187.html) — AKA五元组（RAND/AUTN/XRES/CK/IK）定义、SQN防重放与AUTS同步失败机制、双向认证流程图原文

---
> 本文由「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)
