<!-- title: 先验证件再发钥匙：5G入网认证 -->

手机开机，几秒内连上网，看起来天经地义。但你想过一个更根本的问题吗：**手机怎么确定，头顶上这个基站不是别人架的假站？基站又怎么确定，这部手机不是克隆卡？**

在商场连一个陌生的Wi-Fi你都要犹豫一下，而移动网络面对的处境更极端——空口是广播信道，你发出的每一个比特，半径几百米内的天线都听得见。在这样的信道上完成“你是谁”的确认，还不许把任何秘密明文送出门，这是移动网络安全要解的第一道题。

这道题的答案叫认证与密钥协商，业内简称AKA。本文把它拆开讲透：挑战应答为什么安全、AUTN这个小结构凭什么证明“网络是真的”、5G相比4G把哪三处设计推倒重做，以及一线工程师在信令里见到的那些鉴权失败，各自对应什么病根。

## 一、报密码行不通，那怎么办

先想一个最朴素的方案：手机把密码发给网络，网络一比对，对上就放行。

这个方案在空口上等于裸奔。空口是广播的，密码发出去就永远收不回来，谁听到谁就“是你”了。网站登录传密码好歹还有TLS加密套着，而手机入网那一刻，恰恰是加密还没建立的时刻——**典型的鸡生蛋问题：加密需要的钥匙，得靠认证来发；而认证这个动作本身，还没法加密。**

解法是一套用了三十年的老智慧：挑战应答。原则只有一句话——

> 证明“我知道秘密”，而不是把秘密本身传出去。

具体做法：网络出一道一次性随机题（记作RAND），手机用只有自己知道的密钥K算出答案发回去。窃听者题目、答案都听得到，但只要K从不出门、算法单向，听到再多遍也算不出下一题的答案。

用公式说，答案大致长这样：

$$RES = f(K,\ RAND)$$

f是单向函数：由K和RAND算RES容易，反过来由RAND和RES反推K，计算上不可行。整个移动网络安全的大厦，就盖在这一条不等式上。

那K放在哪？答案是：全世界只有两份。一份在发卡时就写进USIM卡的安全域里，读不出来，只能“进题出答案”；另一份在归属运营商的凭证库里。除此之外，包括你手机操作系统、包括你漫游去的那个国家运营商，谁都不持有K。

## 二、一套挑战，三重使命

很多人以为鉴权就是“一问一答”，实际上5G的鉴权材料是一个五件套，每一样都有明确分工：

| 材料 | 谁生成 | 走到哪 | 使命 |
| --- | --- | --- | --- |
| RAND | 归属凭证库 | 明文飞到手机 | 一次性题目，保证每次不同 |
| AUTN | 归属凭证库 | 明文飞到手机 | 网络的证件：证明网络认识我，且题目是新的 |
| RES* | 手机卡内计算 | 回传归属网终审 | 手机的答案：证明手机认识K |
| HXRES* | 归属认证服务 | 交给拜访网络 | 答案的散列指纹，供拜访网粗判 |
| 锚点钥匙 | 两端各自派生 | 从不在空口出现 | 认证产物，后续加密用它 |

重点看AUTN。它是网络递给手机的“证件”，展开就三个字段：

$$AUTN = (SQN \oplus AK)\,\Vert\, AMF \,\Vert\, MAC$$

- **MAC**：由K、题目RAND、序列号一起算出的校验码。手机用卡里的K重算一遍，对得上，就证明**网络手里有真K**——假基站架得再像，没有K就算不出这个值。这是“网络向手机亮证件”。
- **SQN**：序列号，双方各自维护、逐次递增的账本页码。收到题先翻账本：页码太旧是重播，页码跳太远可能是账本乱了，都要按规矩处理。这是**防重放**的机关。
- **AK**：匿名密钥，专门用来把SQN在空口上遮住。序列号是长期递增的稳定数，明文飞等于给追踪者发信号灯，所以先遮再传。

三项全过，手机才认定“这个网络是真的”，才肯算答案回传。**注意方向：鉴权从来不是单向查户口，而是互相验证件。**手机验网络那一步，靠的正是AUTN里这个小小的MAC。

这些计算全部发生在USIM卡内部：题目进卡，答案出门。所以换手机不换卡，安全不受影响——钥匙根本不在手机里。这也是防克隆卡的全部原理：卡里的K读不出、改不了，克隆卡没有K，答不出题。

产出答案的同时，卡还顺带算出加密和完整性保护要用的密钥原料。换句话说，**认证成功的副产品，就是后续加密的钥匙**——认证和加密不是两件事，是一件事的两段。

## 三、4G的三处旧伤，5G的返工

挑战应答的骨架，4G和5G是同一副。5G真正动刀的，是“谁说了算”。要理解这一点，得先看4G的老流程差在哪。

4G时代，归属网络把鉴权材料**整套打包**发给拜访网络：题目、证件、标准答案，还有认证成功后直接可用的锚点钥匙，一个信封全给你。之后拜访网络自己收答案、自己比对、自己发钥匙——判对判错，归属网络全程不知情。

这个设计有三处毛病：

**毛病一：答案和钥匙同时出门。**拜访网络拿着标准答案自查，等于归属网络把判决权完全让渡。而拜访网络可能是合作伙伴，可能是漫游地运营商，安全水准参差。

**毛病二：认证完没有回执。**用户到底认证成功没有，归属网络永远不知道。极端场景下，一个假核心网收了用户的答案就自己宣布通过，归属网络对此毫无感知。

**毛病三：钥匙不认地方。**派生钥匙时不绑定“此刻我在谁家网里”，同一套钥匙材料理论上可以在不同网络间挪用、串用。

5G对这三处各动一刀：

**第一刀：真答案不出家门，只发指纹。**归属网络生成答案后自己留着（XRES*），发给拜访网络的只是答案的散列指纹（HXRES*）。拜访网络可以用指纹快速粗判——指纹对不上当场拒绝，省一趟来回；但指纹推不出真答案，**判决权收归归属网络**：最终比对必须在归属网络完成。

**第二刀：钥匙过关才放行。**锚点钥匙不再随材料预发，而是归属网络终审通过后，才发给拜访网络。先验证件，再发钥匙，顺序倒了过来。认证结果还会回告归属网络存档——拜访网络骗不了家。

**第三刀：钥匙绑定服务网。**钥匙派生的输入里掺入了“服务网络名”。同一把K、同一道题，在不同网络里派生出的钥匙完全不同，跨网挪用的路被堵死。

用一张时序图看5G入网认证全流程（为聚焦认证，图中省略了只做透明转发的基站环节）：

```mermaid
sequenceDiagram
    participant U as 手机与USIM卡
    participant S as 拜访网接入管理
    participant A as 归属网认证服务
    participant P as 归属网凭证库
    U->>S: 注册请求（身份加密隐藏）
    S->>A: 请求鉴权材料
    A->>P: 请求生成鉴权向量
    P->>A: 题目、证件与真答案
    Note over P,A: 真答案与钥匙留在家
    A->>S: 题目、证件与答案指纹
    S->>U: 下发题目与证件
    Note over U: 卡内验MAC查SQN算答案
    U->>S: 回传答案
    S->>A: 粗判指纹后转交答案
    A->>A: 终审比对答案
    A->>S: 通过并下发锚点钥匙
    A->>P: 回报认证结果
    S->>U: 后续信令用新钥匙保护
```

值得说明：图里的“拜访网络”和“归属网络”，不只在出国漫游时才有区别。**即便你在家乡用本运营商的网络，接入管理层和凭证管理层在架构上也是分开的两个角色**——只是恰好同属一家运营商而已。标准这样设计，是把“接入可以发生在哪里”和“凭证只有家能管”解耦。

把整个信任关系画成一张图更直观：

```mermaid
flowchart TD
    H["归属网络：管凭证发钥匙"]
    C["USIM卡：K永不出卡"]
    S["拜访网络：管接入不持K"]
    U["手机：先验网再亮答案"]
    A["空口：人人可听"]
    H -->|发卡时写入K| C
    H -->|只发题目证件指纹| S
    S -->|转发题目与证件| A
    A -->|手机验网络真假| U
    U -->|答案回传拜访网| S
    S -->|答案交归属终审| H
    H -->|过关才发锚点钥匙| S
    S -->|用新钥匙保护会话| U
```

看清楚一件事：**K这一生只旅行过一次——发卡那天从运营商到卡里。此后无论多少次入网、漫游到多少个国家，空口上飞的永远只有题目、证件、指纹和答案。**密钥从不旅行，这是全部设计的底座。

## 四、手机侧的验真三连

站在手机视角，收到证件后是一场三步连检，任何一步不过，认证就地终止：

```mermaid
flowchart TD
    R["收到题目与证件"] --> M["卡内用K重算MAC"]
    M --> C{"MAC对得上？"}
    C -->|对不上| F1["假网络，立即终止"]
    C -->|对上| Q["解出序列号SQN"]
    Q --> D{"序号在窗口内？"}
    D -->|太旧或跳太远| F2["判重播，走同步失败"]
    D -->|新鲜| K["算答案与密钥材料"]
    K --> O["答案回传等新钥保护"]
```

第一步验MAC，确认网络认识我；第二步查SQN窗口，确认题目不是重播。都过了，才算跟真网络对上了暗号。

这里有个工程上极有价值的细节：**SQN窗口机制**。为了容忍偶尔的乱序和重复（比如信令重传），账本校验不是“必须恰好等于下一页”，而是允许一个窗口范围；同时为了防止账本被恶意大幅推后，窗口外的处理也不是简单拒绝，而是走一条**同步失败**的特殊通道：手机回一个专门的同步参数，网络据此把账本对齐到手机的实际页码，然后重新出题。

这套机制平时安静无声，出事时却是标志性症状——后面调试一节会讲到它的经典案发场景。

还有一个容易被忽略的点：在5G-AKA流程里，**手机自始至终收不到一张“认证成功”的明确回执**。手机怎么知道自己过了？答案是看行动：拜访网络下一刻发来的信令，若能被新派生的钥匙正确解密和完整性校验，就等于网络在说“你过了”。**受保护的信令本身就是回执。**

## 五、两个流派：快与稳的取舍

上面讲的流程是5G-AKA。但5G其实同时支持第二种认证方法，两者气质截然不同：

| 维度 | 5G-AKA | EAP-AKA' |
| --- | --- | --- |
| 出身 | 沿袭移动网挑战应答血统 | 源自Wi-Fi与企业网认证家族 |
| 往返开销 | 少，题答两趟 | 多一轮认证往返 |
| 成功回执 | 无显式回执，靠受保护信令间接确认 | 有受保护的显式成功消息，手机拿得到实据 |
| 归属网可见性 | 事中终审加事后回报 | 认证过程全程在归属网眼前完成 |
| 防追踪表现 | 曾被形式化分析指出存在边角案例 | 回执机制天然补上此短板 |
| 谁来选 | 归属运营商按策略决定 | 同左 |

第二种方法借用的是企业网认证的老框架：认证过程像一场多轮对话，由归属网络的认证服务亲自主持，手机每一步的回应归属网都看得到，最后还有一条**受保护的成功消息**发到手机手上——不存在“猜自己过没过”的问题。

为什么保留两个流派？因为这是一组典型的工程取舍：**5G-AKA少一个往返，入网更快、信令更省，适合把时延当命的网络；EAP方法多一层确认，安全属性更完备，适合对确定性要求更高的场景。**标准没有二选一，把选择权交给归属运营商按策略配置——同一个网络里，不同用户群可能走不同的认证路。

补充一句学界考据：曾有形式化分析工作把两种方法放进同一套符号系统推演，结论是5G-AKA因为缺那张显式回执，在防追踪的角落里留了一个理论口子，而EAP方法恰好没有。这也是“快与稳”取舍的一个真实注脚。

## 六、现网里它长什么样，调试时怎么用

原理讲完，落到一线。工程师真正和鉴权打交道，往往是在排障的时候。信令里常见的几种鉴权异常，各自指向完全不同的病根：

| 信令现象 | 手机的含义 | 经典根因 | 排查方向 |
| --- | --- | --- | --- |
| MAC校验失败 | 网络不知道K | 卡参数与网端参数表错位，OPc配置不一致 | 核对发卡数据表与网端签约数据 |
| 序列号失步循环 | 一直收到“旧题” | 网端账本回滚、双活数据不同步 | 查近期数据操作，观察是否批量发生 |
| 同步失败刷屏 | 卡判重播并要求对账 | 数据迁移窗口期账本错位 | 迁移完成后批量观察是否自愈 |
| 认证通过但完整性失败 | 两边派生的钥匙不一致 | 服务网名等派生输入配置有差异 | 查钥匙派生输入，别死盯鉴权环节 |

三个经典案发场景，值得每个工程师记住：

**场景一：换卡供应商之后大面积MAC失败。**发卡数据表里的算子参数与网端配置差了一个变换环节，卡算出的校验码和网络期望的永远对不上。症状是批量、稳定复现，且集中在特定批次卡。这类问题的迷惑性在于：流程完全正常，就是数值不匹配，只能对参数表。

**场景二：网端容灾切换后的序列号失步风暴。**签约数据库从备份恢复，账本页码回退了几页；卡端的页码走在前面，一收题就判“这是重播”，集体走同步失败通道。特征是时间点与数据操作强相关、批量爆发。多数情况靠同步机制自愈，极端页码偏差过大的才会卡死、需要人工干预。

**场景三：鉴权全过、业务不通。**认证成功，加密也建立了，但信令完整性校验一直失败。新手往往反复排查鉴权环节，其实是**钥匙派生的输入不一致**——比如服务网名两边配置不同，同一把K派生出的钥匙却不同，后续每一条受保护信令都对不上。记住一句口诀：**鉴权失败看凭证，完整性失败看派生输入。**

最后澄清几个常见误解：

- **“题目和证件明文飞，所以鉴权能被窃听破解。”**恰恰相反。明文飞的是题目，安全性全在答案依赖的K上。窃听者攒一万道题和一万份答案，也算不出K，答不了第一万零一道题。
- **“手机丢了，K就泄露了。”**K在卡的安全域里，读不出、反推不了，手机操作系统都碰不到它。丢手机丢的是卡的实物，挂销即可，密钥体系不受牵连。
- **“漫游时我的钥匙给了外国运营商。”**没有。外国运营商最多拿到锚点钥匙——那是从K派生出来的、绑定它网络名的专用钥匙，且必须等归属网终审过关才发。K本尊从未离开归属网络和你的卡。

## 常见问题

**Q: 鉴权和加密到底是什么关系？**
A: 鉴权是“互相确认身份并就钥匙达成一致”，加密是“用这把钥匙把内容变哑”。顺序不可颠倒：没有鉴权就没有钥匙，没有钥匙加密无从谈起。所以鉴权失败的信令后面，不会出现任何加密成功的迹象——排障时看失败点的位置就能分层。

**Q: 为什么每次认证的题目必须是新的？**
A: 因为空口上的一切都可被录音。如果题目固定，窃听者录一次问答对，之后直接原样回放就能冒充。一次性随机题加序列号账本，让每一套问答都只能用一次，旧录音对不上新账。

**Q: 手机怎么知道基站不是假的？**
A: 靠AUTN里的MAC。假基站架得再像，没有K就算不出能通过校验的MAC，手机第一步验证件就会拒绝。5G又加了两道保险：空口上不再出现明文身份（注册请求里只有加密隐藏的身份），以及拜访网络必须经归属网络终审过关才能拿到钥匙——假站连“骗手机连上”之后的路都走不通。

**Q: 两种认证方法，普通用户能感知到差别吗？**
A: 感知不到。这是网络侧的策略配置，选哪种、对哪些用户选哪种，都由归属运营商决定。用户能看到的结果只有一种：连上了，或者没连上。

**Q: 换个信号更强的假基站，手机会连上去吗？**
A: 手机可能被吸引去尝试接入（这由无线侧信号强弱决定，与鉴权无关），但认证这一关过不去：验MAC不通过就终止，不交出任何有价值的东西，更不会建立加密会话。所以假基站在5G上的剩余危害主要限于骚扰级干扰；想冒充网络完成业务，拿不到归属网络那一侧的判决和钥匙，寸步难行。

## 参考来源

1. [Authentication and key agreement - Wikipedia](https://en.wikipedia.org/wiki/Authentication_and_key_agreement) — 移动网络挑战应答机制与鉴权向量结构的背景词条
2. [5G - Wikipedia](https://en.wikipedia.org/wiki/5G) — 5G安全机制概览，含身份隐藏与密钥体系入门背景
3. [RFC 5448: Improved EAP Method for 3GPP Mobile Authentication (EAP-AKA')](https://datatracker.ietf.org/doc/html/rfc5448) — EAP-AKA'认证方法的协议定义文档
4. [Extensible Authentication Protocol - Wikipedia](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol) — EAP框架背景，理解第二种认证方法的出身
5. [Milenage - Wikipedia](https://en.wikipedia.org/wiki/Milenage) — 卡内f1至f5算法族的示例算法说明

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