聚焦 3GPP TS 33.501 Annex C、TS 23.003 §19、TS 24.501 §9.11.3.4,逐字段、逐信令拆解 5G 用户永久标识(SUPI)的空口隐藏机制,以及归属网络侧 SIDF 的去隐藏(de-concealment)全链。
在 4G/EPS 时代,用户永久标识 IMSI 在初次附着(Attach)等场景中以明文形式通过空口广播。这直接催生了"IMSI Catcher / 伪基站"这一经典攻击面:攻击者只需伪装成一个基站,向 UE 发起 Identification Request,即可批量采集 IMSI,进而实现用户定位、追踪、IMSI 个人信息关联甚至定向中间人攻击。3GPP 在 5G 设计阶段(Rel-15 起始)从架构层面引入了 SUPI(Subscription Permanent Identifier)+ SUCI(Subscription Concealed Identifier) 的双层标识体系来根治这一顽疾:
其安全核心思想是:只有掌握归属网络(HN)私钥的实体(即 UDM 内的 SIDF)才能解开 SUCI 还原 SUPI;被访网络(VPLMN)、RAN 节点以及空口窃听者均无法解密。同时,由于每次加密使用一次性临时 ECC 密钥对,不同注册产生的 SUCI 之间不可关联,从而阻断跨注册的"身份链接追踪"。
这一机制的规范根基集中在三处:TS 33.501(5G 系统安全架构,Annex C 定义保护方案)负责密码学;TS 23.003(编号与寻址,§19 定义 SUCI 格式)负责编码结构;TS 24.501(NAS 协议,§9.11.3.4 定义 5GS Mobile Identity IE)负责信令承载。
理解 SUCI 的关键,是先厘清"哪些明文、哪些加密"。归属路由所需的字段必须明文(否则漫游与寻址无法工作),而真正能唯一定位到具体用户的 MSIN(Mobile Subscriber Identification Number,即 IMSI 的用户号部分) 才是被加密保护的对象。
SUCI 的整体结构(TS 23.003 §19.3、TS 33.501 §6.12.2)如下:
flowchart TD
A[SUCI] --> A1["SUPI类型 4bit<br/>0=IMSI, 1=NSI"]
A1 --> A2["MCC 3位 明文"]
A2 --> A3["MNC 2~3位 明文"]
A3 --> A4["路由指示RI 1~4位 明文"]
A4 --> A5["保护方案ID 4bit<br/>0=Null,1=ProfA,2=ProfB"]
A5 --> A6["HN公钥ID 8bit 1~255"]
A6 --> A7["Scheme Output 变长"]
A7 --> A7a["临时公钥E<br/>P-256约33B"]
A7a --> A7b["密文C<br/>AES-128-CTR(MSIN)"]
A7b --> A7c["MAC-tag 完整性"]
| 字段 | 长度/编码 | 是否加密 | 作用 |
|---|---|---|---|
| SUPI Type | 4 bit | — | 0 表示基于 IMSI 的 SUPI;1 表示网络特定标识(NSI,如 private network 的 user@realm) |
| MCC | 3 位 BCD | 明文 | 归属国家码,路由必需 |
| MNC | 2~3 位 BCD | 明文 | 归属网络码,路由必需 |
| Routing Indicator (RI) | 1~4 位 | 明文 | 多 UDM/多 PLMN 场景下,引导 SUCI 路由到正确的 HN UDM 实例(TS 23.003 §19.3.2) |
| Protection Scheme ID | 4 bit | — | 0=Null-scheme;1=ECIES Profile A;2=ECIES Profile B |
| Home Network Public Key ID | 8 bit | — | 标识使用哪一张 HN 公钥(1~255),支撑密钥轮换(TS 33.501 Annex C.6) |
| Scheme Output | 变长 | 加密 | 承载真正受保护的 MSIN(及临时公钥、MAC) |
需要强调两点设计意图:其一,MCC/MNC/RI 明文是有意为之,否则漫游地网络无法把信令路由回归属网络;其二,被加密的只有 MSIN,因为去掉 MCC/MNC 后的 MSIN 才是"个人可识别"那一段。对于 SUPI Type=1(NSI)的私有网络场景,由于没有 MCC/MNC,整段标识符都被纳入加密。
TS 33.501 Annex C 定义了三种 Protection Scheme,这是 SUCI 机制中最容易被混淆的部分:
| 维度 | Null-scheme (ID=0) | Profile A (ID=1) | Profile B (ID=2) |
|---|---|---|---|
| 是否真正加密 | 否,MSIN 明文 | 是 | 是 |
| ECC 曲线 | 无 | NIST P-256 (secp256r1) | Brainpool P-256 R1 |
| KDF | 无 | ANSI X9.63 KDF (SHA-256) | TS 33.220 KDF (HMAC-SHA-256) |
| 加密算法 | 无 | AES-128-CTR | AES-128-CTR |
| 完整性 MAC | 无 | AES-CMAC | HMAC-SHA-256 |
| MAC-tag | — | 固定长度(按 Annex C 截断) | 固定长度(按 Annex C 截断) |
| 适用场景 | USIM 未预置 HN 公钥 / 互通测试 | 北美及多数全球运营商 | 偏好非 NIST 曲线的欧洲(如德国)运营商 |
| 隐私强度 | 无(等同于 4G IMSI 明文) | 强 | 强 |
设计要点:3GPP 同时保留 NIST 与 Brainpool 两套曲线(Annex C.2 / C.3),本质上是地缘密码学偏好的妥协——部分监管环境对 NIST 标准曲线存疑,故提供 Brainpool 替代。两者在密码强度上等价,差异仅在曲线参数与配套 KDF/MAC。Null-scheme 是一个"功能降级开关":当 USIM 未预置归属网络公钥时,UE 只能以 Null-scheme 发送明文 MSIN,此时 5G 的身份隐私保护事实上形同虚设——这正是运营商是否在 USIM 个人化阶段写入 HN 公钥,成为决定 5G 隐私是否真正生效的关键部署变量。
ECIES(Elliptic Curve Integrated Encryption Scheme)是 SUCI 的密码学内核。其精妙之处在于:UE 仅凭预置在 USIM 的 HN 公钥就能完成加密,而无需与网络交互任何共享密钥;解密则必须使用 UDM 侧的对应私钥。下面是 UE 侧加密与 SIDF 侧解密的对称数据流:
flowchart TD
subgraph UE["UE/USIM 加密保护侧"]
direction TB
U1["HN公钥 PK_HN<br/>(USIM预置)"] --> U3
U2["临时私钥e / 公钥E=e·G<br/>(每次新生成)"] --> U3["共享密钥 Z=e·PK_HN<br/>(ECDH)"]
U3 --> U4["KDF"]
U4 --> U5["Kenc"]
U4 --> U6["Kmac"]
U7["MSIN"] --> U8["C=AES-128-CTR(Kenc,MSIN)"]
U6 --> U9["T=MAC(Kmac, E‖C)"]
U8 --> U10["Scheme Output = E‖C‖T"]
U9 --> U10
end
subgraph SIDF["UDM/SIDF 去隐藏侧"]
direction TB
S2["HN私钥d<br/>(仅UDM持有)"] --> S3
S1["临时公钥E<br/>(从SUCI读取)"] --> S3["共享密钥 Z=d·E<br/>(ECDH)"]
S3 --> S4["KDF"]
S4 --> S5["Kenc"]
S4 --> S6["Kmac"]
S7["密文C"] --> S8["校验 T ?= MAC(Kmac,E‖C)"]
S6 --> S8
S8 -->|MAC通过| S9["MSIN=AES-128-CTR(Kenc,C)"]
S9 --> S10["重组 SUPI=MCC+MNC+MSIN"]
end
U10 -.空口NAS.-> S1
U10 -.空口NAS.-> S7
逐步解析其密码学逻辑:
(e, E),其中 E = e·G(G 为曲线基点)。这是实现"每次注册 SUCI 不可关联"的根本——e 用后即弃,下一次保护产生全新的 ECDH 共享密钥。Z = e · PK_HN;由于椭圆曲线离散对数问题(ECDLP)的单向性,攻击者即使截获 E 和 PK_HN 也无法求出 Z。Z 经 KDF(Profile A 用 X9.63;Profile B 用 TS 33.220)派生出对称加密密钥 Kenc 与 MAC 密钥 Kmac。AES-128-CTR 加密 MSIN 得密文 C,再对 (E‖C) 计算 MAC-tag T。这是教科书式的"先加密再认证"结构——先验 MAC 可在解密前就发现篡改,避免对被篡改密文做无谓解密(防范选择密文攻击)。E ‖ C ‖ T。临时公钥 E 必须随文发送,否则接收方无法重建 ECDH;这与对称密码的密钥分发难题无关,正是非对称方案的价值。SIDF 去隐藏则严格对称:用私钥 d 与临时公钥 E 算出同一个 Z = d · E = d·e·G = e·(d·G) = e·PK_HN(数学等价),从而派生出完全相同的 Kenc/Kmac,先校验 MAC,再解密 MSIN。
将密码学放到真实信令流中,SUCI 从生成到被去隐藏、再到鉴权向量生成,跨越 UE、gNB、AMF、UDM/SIDF、ARPF/AuC 多个网元。以下是 TS 23.502 §4.2.2.2(注册流程)中与身份隐藏直接相关的子链:
sequenceDiagram
participant UE as UE/USIM
participant gNB
participant AMF
participant UDM as UDM(SIDF)
participant ARPF as ARPF/AuC
Note over UE: 无有效5G-GUTI,需用SUCI初始注册
UE->>UE: 生成临时密钥(e,E)<br/>ECDH:Z=e·PK_HN<br/>KDF→(Kenc,Kmac)<br/>C=AES128-CTR(MSIN),T=MAC(E‖C)
UE->>gNB: RRCSetupComplete<br/>(内含 REGISTRATION REQUEST)
gNB->>AMF: INITIAL UE MESSAGE<br/>(NAS: Registration Request,<br/>5GS Mobile Identity = SUCI)
Note over AMF: 仅解析明文:MCC/MNC/RI<br/>+Scheme ID + HN PK ID + Scheme Output
AMF->>UDM: Nudm_UEAuthentication<br/>GenerateAuthData(SUCI)
Note over UDM: SIDF:按 HN PK ID 取私钥d<br/>ECDH:Z=d·E<br/>KDF→(Kenc,Kmac)<br/>校验MAC,解密C→MSIN→重组SUPI
UDM->>ARPF: 按SUPI生成鉴权向量
ARPF-->>UDM: (RAND, AUTN, XRES*, KAUSF)
UDM-->>AMF: 返回 SUPI + 鉴权向量
Note over AMF: 进入5G-AKA / EAP-AKA'鉴权
AMF->>UE: Authentication Request(RAND,AUTN)
AMF->>UE: Registration Accept(分配 5G-GUTI)
Note over UE,AMF: 后续优先用 5G-GUTI<br/>避免再次暴露 SUCI
逐条消息的关键 IE:
REGISTRATION REQUEST(NAS 消息类型 0x41)被封装在 RRC 与 N2 中。其中 5GS Mobile Identity IE(TS 24.501 §9.11.3.4)的 "Type of identity" 字段取值为 5(SUCI),其后即按上文结构承载 SUCI。udmGroupId 解析)。(RAND, AUTN, XRES*, KAUSF),进入正常的 5G-AKA / EAP-AKA' 主认证流程(参见 TS 33.501 §6.1)。一个常被忽视的隐私优化设计:注册完成后 AMF 立即通过 Registration Accept 为 UE 分配 5G-GUTI。此后 UE 在 Service Request、切换等流程中优先使用 5G-GUTI 而非 SUCI 标识自己,从而把 SUCI 的使用频率压到最低。这也是为什么"5G-GUTI 重分配(GUTI Reallocation)"在网络层面是隐私保护链条的一环,而非纯粹的身份管理。
除了加密本身,3GPP 还设计了两道"行为级"隐私闸门。下图梳理 UE 侧的保护方案选择与频率限制逻辑:
flowchart TD
S["初始注册 / 网络发起Identity Request"] --> Q{"USIM是否<br/>预置HN公钥?"}
Q -->|否| N["Null-scheme 方案ID=0<br/>MSIN明文"]
Q -->|是| Q2{"支持的Profile?"}
Q2 -->|NIST P-256| PA["Profile A 方案ID=1"]
Q2 -->|Brainpool| PB["Profile B 方案ID=2"]
PA --> FR["构造SUCI并发送"]
PB --> FR
N --> FR
FR --> L{"是否触发<br/>频率限制?"}
L -->|是| RJ["拒绝再次以明文/SUCI响应<br/>保护位置隐私"]
L -->|否| OK["完成注册<br/>获取5G-GUTI"]
OK --> GL["后续优先使用5G-GUTI"]
频率限制(TS 33.501 §6.12.2) 是一道反"主动探测"的防线:即便攻击者反复发起 Identity Request 强迫 UE 暴露身份,UE 内置的速率约束会限制其在单位时间内响应明文身份请求的次数,挫败伪基站通过高频探测实现的批量 IMSI/SUPI 采集。这与"每次注册使用临时密钥"共同构成"加密 + 行为约束"的双层隐私防御。
在 Wireshark(带 5G-NAS / NGAP 解析器)或 TShark 中,识别要点如下:
nas_eps_msg_type == 0x41(5GMM Registration Request)或 5GS Mobility Management message type == 0x41。Type of identity == 5 (SUCI)。SUPI format、MCC、MNC、Routing indicator、Protection scheme id(0/1/2)、Home network public key identifier、Scheme output。Protection scheme id == 0,则 Scheme output 段即明文 MSIN——可直接读到完整号码,说明该 USIM 未启用 SUCI 加密保护。Initial UE Message 的 NAS-PDU 中同样可见上述 NAS 内容;在 Nudm SBI 接口(HTTP/2)抓包中,GenerateAuthData 请求体的 suci 字段即为待去隐藏的 SUCI。| 现象 | 可能根因 | 排错思路 |
|---|---|---|
| 注册失败,UDM 无法还原 SUPI(Authentication 报错) | USIM 的 HN 公钥与 UDM 私钥不配对(密钥版本/ID 不匹配) | 核对 USIM 预置公钥 ID 与 UDM 侧私钥库的 HN PK ID 是否一致 |
| USIM 走 Null-scheme,MSIN 明文 | USIM 个人化阶段未写入 HN 公钥 | 检查 USIM 个人化参数;确认为何未下发公钥(早期卡、测试卡常见) |
| Profile A 与 B 不匹配 | USIM 仅支持 Profile A,UDM 私钥按 Profile B 解密失败 | 对齐 USIM 与 UDM 的 Protection Scheme 能力,确认 Annex C 版本 |
| 跨注册可被关联 | 实现未使用一次性临时密钥(复用 e/E) | 排查 USIM ECIES 实现是否每次重新生成临时密钥对 |
| 密钥轮换后部分老卡注册异常 | 新旧公钥并存,但 USIM 仍指向已退役公钥 ID | 利用 HN PK ID 多槽位平滑过渡,保留旧私钥直至老卡退网 |
| ## 八、SUCI 机制的局限与残余风险 |
需客观指出,SUCI 并非银弹:
这些恰恰说明:SUCI 是 5G 隐私架构的"地基"而非"全部",必须与 GUTI 管理、频率限制、主认证抗链接性等机制协同,才能构成完整的用户身份隐私保护体系。
5G SUCI 机制通过 ECIES 非对称加密 + 一次性临时密钥 + SIDF 单点去隐藏 + Null/Profile A/B 三档方案 的组合,首次在 3GPP 标准层面把用户永久标识的空口明文暴露问题系统性解决。其设计的精髓在于:用归属网络私钥构筑"只有我能解"的信任边界,用临时密钥换取"每次不可关联"的隐私属性,用频率限制与 GUTI 优化压缩暴露面。对协议开发与安全研究人员而言,真正理解 SUCI 的关键不在于记住字段长度,而在于把握其"密码学保护 + 网络架构收敛 + 终端行为约束"三位一体的设计哲学——这正是后续 6G 隐私增强标识(PEI 隐藏、UE 持久标识保护等)演进的范式起点。
Q1: SUCI 和 5G-GUTI 都是"化名",二者有何本质区别? A: SUCI 是 SUPI 经 ECIES 加密后的标识,用于初始注册等极少数场景,且每次加密不可关联;5G-GUTI 则是 AMF 分配的临时路由标识,明文但与 SUPI 无密码学关联,用于注册后的日常通信以降低 SUCI 使用频率。二者构成"加密身份(低频)+ 临时身份(高频)"的分层隐私模型。
Q2: 为什么 SUCI 不加密 MCC/MNC,只加密 MSIN? A: 因为被访网络和 RAN 需要 MCC/MNC/RI 来把信令路由回归属网络的正确 UDM 实例,这些字段必须明文。而去掉运营商标识后的 MSIN 才是真正能定位到具体个人的字段,因此加密资源集中在 MSIN 上,是路由需求与隐私保护之间的最优折中。
Q3: Null-scheme 既然不加密,为何还要在标准里保留? A: 主要为互通与兼容兜底——当 USIM 未预置 HN 公钥(早期卡、测试卡、个别未完成个人化的场景)时,保证注册仍可完成,而非直接失败。它是"功能降级开关",部署上应尽量避免长期使用,否则 5G 的身份隐私保护将名存实亡。
Q4: SIDF 为什么放在 UDM 而不是 AMF? A: 解密 SUPI 必须使用归属网络私钥,而私钥只能存放在归属网络的可信边界内(UDM)。AMF 在漫游场景下属于被访网络,不应也无法持有 HN 私钥。把 SIDF 收敛在 UDM 内,既保证了私钥的最小暴露面,也实现了"归属解密、被访不可见"的信任分离。
Q5: Profile A 和 Profile B 该选哪一个? A: 密码强度上二者等价。Profile A(NIST P-256)全球通用性更好、生态成熟;Profile B(Brainpool P-256 R1)满足偏好非 NIST 曲线的监管需求(部分欧洲市场)。选择取决于运营商所在司法管辖区的合规偏好,而非安全强弱——但 USIM 与 UDM 两侧必须能力一致。
本文由「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 等场景全覆盖。
