先设想一个场景:你每次进小区,门卫都会大声喊出你的身份证号,全楼都听得见。听起来荒谬,但这恰恰是2G到4G时代手机接入网络的日常。
手机里有一串永久身份——IMSI(国际移动用户识别码),相当于手机世界的身份证号:前几位是国家与运营商编码(MCC/MNC),后面是用户号码(MSIN)。手机开机第一次接入网络时,网络不认识你,得先“验明正身”。在4G及之前,这一步真的会把IMSI明文扔到空口上。
为什么要这么设计?把时钟拨回上世纪90年代就通了:那时能监听空口的设备昂贵稀有,设计者默认“街上没人带窃听器”,为省信令开销直接传明文。但时代变了。软件无线电普及后,一台几千元的设备就能伪装成基站,向周边手机索要身份——这就是所谓“IMSI捕获器(伪基站)"。据明尼苏达大学研究者公开演示的报道,廉价设备在数百米范围内即可批量收集周边手机的明文IMSI。你的“身份证号”,确实在大街上被喊了很多年。
行业当然早就意识到问题,打过一个补丁:临时身份。2G叫TMSI,4G叫GUTI——鉴权通过后,网络随机发一个临时号码给你,之后通信只报临时号,真名藏着。
这个补丁的思路是“进门后发工牌”。但它有个绕不过去的天生缺陷:工牌是进门之后才发的。以下场景必须亮真名:
每当这些时刻,IMSI就明文出门一次。伪基站只要专门制造这些时刻(反复拒绝你的鉴权、反复索要身份),就能稳定“钓”出真名。补丁治标不治本。
5G引入了一对概念:
设计铁律只有一条: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注册中身份的使用节奏如下:
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不是把整个IMSI一股脑加密,它的结构像一封挂号信:信封上的地址必须明文,信纸内容才加密。
道理很直接:拜访网络收到你的注册请求,得知道“这封信寄给哪家运营商”,才能路由到你的归属网络。如果连地址都加密,信根本寄不出去。所以SUCI的拆分原则是——路由信息明文,身份信息密文:
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(椭圆曲线集成加密方案)的mailbox类比:归属网络给每张SIM卡出厂时预焊一个“公开投递口”(公钥),全世界都能往里投信,但开箱钥匙全网仅有一把。
以方案A(基于Curve25519曲线)为例,终端侧的完整流程:
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,加密耗时微秒级,完全感知不到延迟。
为什么每次都要生成新的临时密钥对? 因为共享秘密 $S$ 由临时私钥参与运算,每次注册的 $S$ 都不同,密文自然完全不同。同一个用户今天和明天的SUCI之间没有任何数学关联——这就是“防关联追踪”的密码学实现:伪基站采集一万个SUCI,也无法知道其中哪两个属于同一个人。
为什么要有校验码? 防篡改。假如攻击者把别人SUCI里的密文块剪下来贴到自己信里冒名注册,校验码对不上,归属网络直接拒收。
| 方案 | 编号 | 核心曲线 | 公钥来源 | 说明 |
|---|---|---|---|---|
| 空方案 | 0 | 无 | 无 | 不加密,方案输出就是SUPI明文 |
| 方案A | 2 | Curve25519 | 出厂预置在卡里 | 生成快,部署最常见 |
| 方案B | 3 | NIST P-256 | 通过网络侧交换的临时公钥 | 与A同构,仅曲线参数不同 |
三个方案里,空方案是个"后门":无卡终端发起紧急呼叫时拿不出USIM里的公钥,只能用空方案上报设备标识。正网运营若误用空方案,等于隐私保护形同虚设——这是调试时要特别留心的点。
再看这封信在网络上走完整旅程的过程:
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本身是微秒级运算,成本可以忽略。
本文由「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 等场景全覆盖。
