<!-- title: 出门先变脸：5G身份隐藏术 -->

# 出门先变脸：5G身份隐藏术（SUPI/SUCI加密原理）

## 一、一个“裸奔”了三十年的习惯

先设想一个场景：你每次进小区，门卫都会大声喊出你的身份证号，全楼都听得见。听起来荒谬，但这恰恰是2G到4G时代手机接入网络的日常。

手机里有一串永久身份——IMSI（国际移动用户识别码），相当于手机世界的身份证号：前几位是国家与运营商编码（MCC/MNC），后面是用户号码（MSIN）。手机开机第一次接入网络时，网络不认识你，得先“验明正身”。在4G及之前，这一步真的会把IMSI**明文**扔到空口上。

为什么要这么设计？把时钟拨回上世纪90年代就通了：那时能监听空口的设备昂贵稀有，设计者默认“街上没人带窃听器”，为省信令开销直接传明文。但时代变了。软件无线电普及后，一台几千元的设备就能伪装成基站，向周边手机索要身份——这就是所谓“IMSI捕获器（伪基站）"。据明尼苏达大学研究者公开演示的报道，廉价设备在数百米范围内即可批量收集周边手机的明文IMSI。你的“身份证号”，确实在大街上被喊了很多年。

## 二、老补丁为何不够用：临时身份的天生缺陷

行业当然早就意识到问题，打过一个补丁：**临时身份**。2G叫TMSI，4G叫GUTI——鉴权通过后，网络随机发一个临时号码给你，之后通信只报临时号，真名藏着。

这个补丁的思路是“进门后发工牌”。但它有个绕不过去的天生缺陷：**工牌是进门之后才发的**。以下场景必须亮真名：

- 第一次开机入网，网络两眼一抹黑；
- 临时身份过期或网络丢失映射，需要重新核对；
- 鉴权失败后重试；
- 网络主动发Identity Request要求上报身份。

每当这些时刻，IMSI就明文出门一次。伪基站只要专门制造这些时刻（反复拒绝你的鉴权、反复索要身份），就能稳定“钓”出真名。补丁治标不治本。

## 三、5G的解法：不是藏得更深，而是穿一件“只有归属网络脱得掉”的外衣

5G引入了一对概念：

- **SUPI**（订阅永久标识符）：IMSI的正统继任者，多数场景下就是IMSI本身（也支持非3GPP接入的网络接入标识形式）。
- **SUCI**（订阅隐藏标识符）：SUPI的“加密外衣”。

设计铁律只有一条：**SUPI永不上空口**。初次接入报SUCI，鉴权通过后用临时身份5G-GUTI，真名从头到尾不出门。

各代身份标识的关系见下表：

| 标识 | 时代 | 本质 | 谁能看懂 | 会明文上空口吗 |
| --- | --- | --- | --- | --- |
| IMSI | 2G起 | 永久签约身份 | 任何人 | 会（初次接入等场景） |
| TMSI/GUTI | 2G/4G | 网络发的临时号 | 所属网络 | 不会，但初次接入仍需IMSI |
| SUPI | 5G | 永久签约身份 | USIM与归属UDM | 永不 |
| SUCI | 5G | SUPI的加密形态 | 只有归属网络 | 会（且每次都不同） |
| 5G-GUTI | 5G | 5G临时身份 | 注册地网络 | 不会 |

注意SUCI那行的关键差异：它是**终端自己加密**的身份，不依赖网络先发临时号。这就绕开了TMSI补丁的死结——初次接入时网络虽然不认识你，但你的归属网络握有私钥，你的“自我介绍”只有它读得懂，中间经过的拜访网络、基站、路过的伪基站，看到的都只是密文。

一次5G注册中身份的使用节奏如下：

```mermaid
flowchart TD
    A["手机开机"] --> B["初次接入<br/>网络不认识我"]
    B --> C["终端自己生成SUCI<br/>真名穿上加密外衣"]
    C --> D["归属网络解开外衣<br/>完成双向鉴权"]
    D --> E["网络发放5G-GUTI<br/>临时工牌"]
    E --> F["之后所有信令<br/>只带临时工牌"]
    F --> G["工牌失效或重注册<br/>再穿一次SUCI外衣"]
```

## 四、拆开SUCI：明文信封 + 加密信纸

SUCI不是把整个IMSI一股脑加密，它的结构像一封挂号信：**信封上的地址必须明文，信纸内容才加密**。

道理很直接：拜访网络收到你的注册请求，得知道“这封信寄给哪家运营商”，才能路由到你的归属网络。如果连地址都加密，信根本寄不出去。所以SUCI的拆分原则是——**路由信息明文，身份信息密文**：

```mermaid
flowchart TD
    S["SUCI整体结构"] --> P["明文区<br/>信封表面"]
    S --> E["密文区<br/>信纸内容"]
    P --> P1["SUPI类型"]
    P --> P2["归属网标识<br/>MCC与MNC"]
    P --> P3["路由指示"]
    P --> P4["保护方案编号"]
    P --> P5["归属网公钥标识"]
    E --> E1["一次性临时公钥"]
    E --> E2["加密后的MSIN"]
    E --> E3["完整性校验码"]
```

各字段明细：

| 字段 | 明文/密文 | 作用 |
| --- | --- | --- |
| SUPI类型 | 明文 | 标明密文里装的是IMSI型还是网络接入标识型身份 |
| 归属网标识（MCC/MNC） | 明文 | 拜访网络靠它找到你的归属运营商 |
| 路由指示 | 明文 | 1~4位数字，在归属运营商内部把请求导到正确的签约数据网元——虚拟运营商的卡可以靠它导到自己的网元 |
| 保护方案编号 | 明文 | 告诉解密方用的是哪种加密方案（空方案/方案A/方案B） |
| 归属网公钥标识 | 明文 | 告诉解密方用哪一版公钥对应的私钥来开锁 |
| 方案输出 | **密文** | 临时公钥 + 加密后的MSIN + 校验码，全网只有归属网络读得懂 |

所以伪基站哪怕抓到SUCI，也只能看出“这是个某运营商的用户”，却**无法关联到具体的人**——因为每次生成的密文都不一样（原因见下节）。

## 五、核心算法ECIES：人人可投信，一人能开箱

### 5.1 为什么用非对称加密

一个自然的疑问：运营商和手机卡之间搞个共享密钥来加密不行吗？不行，原因有二：

1. **钥匙管理灾难**。亿级发卡量，每张卡都要安全注入一把不同的对称密钥，制卡、发卡、换卡全流程都是泄密风险点；而且卡一旦被逆向，密钥就泄露。
2. **“被偷也无妨”的特性缺失**。非对称加密的美妙之处在于：卡里只需要放**公钥**——一把“只能锁、不能开”的钥匙。公钥印在卡上，被抄走、被伪基站截获都毫无价值，因为开箱的私钥只有一把，锁在归属网络机房里。

这就是**ECIES（椭圆曲线集成加密方案）**的mailbox类比：归属网络给每张SIM卡出厂时预焊一个“公开投递口”（公钥），全世界都能往里投信，但开箱钥匙全网仅有一把。

### 5.2 加密六步走

以方案A（基于Curve25519曲线）为例，终端侧的完整流程：

```mermaid
flowchart TD
    A["卡里预置<br/>归属网公钥"] --> B["随机生成<br/>一次性临时密钥对"]
    B --> C["用私钥与归属网公钥<br/>算出共享秘密"]
    C --> D["密钥派生<br/>分出加密钥与校验钥"]
    D --> E["AES加密MSIN"]
    D --> F["HMAC计算校验码"]
    E --> G["拼装成SUCI"]
    F --> G
```

用公式描述这三步核心运算。首先是ECDH共享秘密——椭圆曲线上的“点倍乘”运算：

$$S = k_{UE} \cdot P_{HN} = k_{HN} \cdot P_{UE}$$

其中 $k_{UE}$ 是终端本次注册随机选的临时私钥，$P_{HN}$ 是归属网络公钥。这个等式两边能相等，靠的是点乘的交换律；而它的安全性靠的是点倍乘的**单向性**——已知私钥算公钥是微秒级的，已知两个公钥反推私钥在计算上不可行。归属网络用自己的私钥 $k_{HN}$ 与信里带的临时公钥 $P_{UE}$，能算出**同一个**共享秘密。

然后用密钥派生函数把共享秘密展开成工作密钥：

$$K_{enc} \| ICB \| K_{mac} = \mathrm{KDF}(x_S \| P_{UE})$$

$x_S$ 是共享秘密点的横坐标，派生出加密密钥、计数初始块和校验密钥。最后加密并签名：

$$C = \mathrm{AES\text{-}CTR}(K_{enc},\ ICB,\ \mathrm{MSIN}), \quad \tau = \mathrm{HMAC}(K_{mac},\ C)[:8]$$

只有几字节的MSIN，加密耗时微秒级，完全感知不到延迟。

### 5.3 两个精妙的设计意图

**为什么每次都要生成新的临时密钥对？** 因为共享秘密 $S$ 由临时私钥参与运算，每次注册的 $S$ 都不同，密文自然完全不同。同一个用户今天和明天的SUCI之间**没有任何数学关联**——这就是“防关联追踪”的密码学实现：伪基站采集一万个SUCI，也无法知道其中哪两个属于同一个人。

**为什么要有校验码？** 防篡改。假如攻击者把别人SUCI里的密文块剪下来贴到自己信里冒名注册，校验码对不上，归属网络直接拒收。

### 5.4 三种保护方案

| 方案 | 编号 | 核心曲线 | 公钥来源 | 说明 |
| --- | --- | --- | --- | --- |
| 空方案 | 0 | 无 | 无 | 不加密，方案输出就是SUPI明文 |
| 方案A | 2 | Curve25519 | 出厂预置在卡里 | 生成快，部署最常见 |
| 方案B | 3 | NIST P-256 | 通过网络侧交换的临时公钥 | 与A同构，仅曲线参数不同 |

三个方案里，空方案是个"后门"：无卡终端发起紧急呼叫时拿不出USIM里的公钥，只能用空方案上报设备标识。正网运营若误用空方案，等于隐私保护形同虚设——这是调试时要特别留心的点。

## 六、网络侧：全网只有一把钥匙能开信

再看这封信在网络上走完整旅程的过程：

```mermaid
sequenceDiagram
    participant U as 手机
    participant N as 基站
    participant A as 拜访AMF
    participant H as 归属UDM
    U->>N: 注册请求(携带SUCI)
    N->>A: 转发初始信令
    A->>A: 读明文路由字段<br/>找到归属运营商
    A->>H: 转交SUCI请求鉴权
    H->>H: 解密功能用私钥<br/>解出SUPI
    H->>A: 返回SUPI与鉴权素材
    A->>U: 发起双向鉴权挑战
    U->>A: 鉴权通过
    A->>U: 发放5G-GUTI临时身份
```

几个值得咀嚼的细节：

**拜访网络全程看不到真名。** 基站和拜访AMF读得出明文区（你是哪家运营商的用户、该转发给谁），但密文区对它们就是一串乱码。解密功能（SIDF）部署在归属网络的签约数据网元内部，私钥通常锁在硬件安全模块里。

**漫游场景才是这套设计的真正用武之地。** 你在国外漫游时，拜访运营商和你的归属运营商可能互不信任。老机制下你把明文IMSI交给一个“外人”网络；5G机制下你只交出一封“只有老家才拆得开”的加密信，拜访网络用完即弃，拿到的只是临时身份。

**路由指示解决“一家公司多本户口簿”。** 大型运营商旗下可能有虚拟运营商，签约数据分池存放。卡里的路由指示字段告诉归属网络：“这本户口在我家三号柜"，精准导流。

## 七、实战：抓包、排障与四个常见的坑

**在哪里能看到它？** 打开终端与核心网之间的NAS信令抓包，第一条注册请求里的“5G移动身份”信息元素就是SUCI——一长串毫无规律的编码。不少核心网设备与开源项目的日志会把SUCI打印成以横杠分隔的长串，字段顺序正对应第四节的信封结构，逐段对照即可读懂。

**坑一：把SUCI解开当SUPI用。** SUCI只能被归属网络解密，拜访侧网元若在日志里“反推”用户身份是徒劳的。排查跨网问题时，关联用户的正确线索是鉴权后网元间使用的标识，而不是SUCI本身。

**坑二：测试卡用了空方案。** 实验室自制测试卡若没写入归属网公钥，终端只能退回空方案，SUCI字段里其实躺着明文身份。做安全测试时若不知情，结论会全错。

**坑三：公钥版本对不上。** 运营商换私钥（比如私钥轮换）时，新发卡片预置新版公钥，网络侧需同时保留新旧私钥，靠SUCI里的“公钥标识”字段区分。若网络侧只配了新私钥，老卡用户的注册会解密失败——表现为鉴权前的神秘拒绝，极难排查。

**坑四：以为上了5G就万事大吉。** 在NSA组网（5G锚定在4G上）下，初始接入走的仍是4G流程，SUCI保护根本没被触发。这套保护要在独立组网的5G下才是完整形态。同理，无卡紧急呼叫走空方案，也不在保护范围内。

**常见误解澄清**：有人以为“SUCI每次都变，网络怎么认出老用户？"——归属网络解开后永远是同一个SUPI，变的只是外衣；也有人担心加密费时——单次椭圆曲线点乘加一次分组加密是微秒级操作，相比注册流程的其余环节可以忽略。另外，SUCI的计算可以在卡里做（更安全但慢），也可以由终端读出卡里的公钥参数后自己算（快），现代终端多取后者。

## 八、边界：它防得住什么，防不住什么

| 攻击面 | 4G时代的处境 | 5G机制下的处境 |
| --- | --- | --- |
| 直接抓取永久身份 | 明文IMSI唾手可得 | 只能得到一次性密文，无法还原 |
| 跨时段关联追踪 | 同一IMSI反复出现，轻松跟踪 | 每次密文不同，数学上不可关联 |
| 密钥窃取 | 无密钥可窃 | 卡里只有公钥，被抄走也无价值 |
| 篡改冒名 | 无完整性概念 | 校验码不匹配即拒收 |
| 伪基站诱骗接入 | 难以识破 | 身份骗不到，但诱骗接入本身仍需其他机制对抗 |

最后一张表其实是5G安全设计的整体哲学：**不追求消灭攻击者，而是让攻击者最想要的那个“锚点”——永久身份——从空口上彻底消失**。没有锚点，后续的监听、跟踪、画像都失去了坐标系。理解了这一点，你就理解了为什么5G要把加密做到“第一次开口说话之前”。

## 常见问题

**Q: SUCI和5G-GUTI的区别是什么？**
A: SUCI是初次接入时终端**自己**用归属网公钥加密的“真名密文”，只有归属网络能解开，防的是偷看身份；5G-GUTI是鉴权通过后**网络发放**的临时工牌，注册地网络能把它对应回你，防的是事后关联。前者解决“进门”，后者解决“住下”，缺一不可。

**Q: 有了SUCI，伪基站是不是彻底没用了？**
A: 大幅失效但未绝迹。伪基站再也骗不出真名，但仍可能诱骗终端接入、干扰通信、通过信号特征做粗粒度跟踪。所以5G后续还引入了广播消息完整性保护等措施，SUCI只是身份这一环的解，不是全网安全解。

**Q: 为什么只加密MSIN，不把MCC/MNC一起加密？**
A: 拜访网络必须靠明文的归属网标识和路由指示，才能把注册信令送到正确的归属网络——信封不写地址，信就寄不出去。暴露“你是哪家运营商的用户”这个粒度的信息，被认为是可以接受的最小泄露。

**Q: 方案A和方案B怎么选？安全上有差别吗？**
A: 两者加密流程完全同构，只是椭圆曲线参数不同（Curve25519与P-256），安全强度都被认为是充分的。选哪种取决于卡商与网络设备的能力支持，不构成安全上的优劣之分。

**Q: 同一个人的SUCI每次都不同，会不会导致重复注册很浪费？**
A: 不会。网络优先让终端复用5G-GUTI，只有工牌失效、鉴权失败或换网重注册时才需要重新生成SUCI。而生成SUCI本身是微秒级运算，成本可以忽略。

## 参考来源

1. [5G Subscriber Identifiers – SUCI & SUPI | Nick vs Networking](https://nickvsnetworking.com/5g-subscriber-identifiers-suci-supi/) — 逐字段拆解SUCI结构与三种保护方案，含路由指示的虚拟运营商用例
2. [SUPI vs SUCI: How 5G Protects Subscriber Privacy with ECIES | 5G/6G Academy](https://www.5g6gacademy.com/learn/supi-vs-suci) — ECIES完整加密流程、SIDF解密细节与NSA场景局限性
3. [5G Identifiers SUPI and SUCI - NAS Signalling | Techplayon](https://www.techplayon.com/5g-identifiers-supi-and-suci/) — NAS信令中标识符的使用方式与ECIES生成机制
4. [Protecting Subscriber Identifiers with SUCI | NIST白皮书](https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.36A.pdf) — SUCI保护机制的标准化与部署分析
5. [Understanding SUCI in 5G | TelecomTrainer](https://www.telecomtrainer.com/understanding-suci-in-5g-subscription-concealed-identifiers-explained/) — SUCI字段结构与保护方案对比

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