首页 › deep-tech › 身份证号也能加密?SUCI 隐身

标题: 身份证号也能加密?SUCI 隐身 作者: 爱卫生 封面: "[[封面1.png]]" 封面裁剪: false 原文地址: 打开评论: true 仅粉丝可评论: false 摘要: 第一个小区的规矩是:访客进门时,必须大声念出自己的身份证号,保安登记后放行。人多的时候,整个大堂都是身份证号的声音,谁在场谁都能听见、都能记下来。


身份证号也能加密?SUCI 隐身

一、从一个小区门禁说起

想象两个小区的门禁系统。

第一个小区的规矩是:访客进门时,必须大声念出自己的身份证号,保安登记后放行。人多的时候,整个大堂都是身份证号的声音,谁在场谁都能听见、都能记下来。

第二个小区的规矩是:访客进门时,把身份证复印件塞进一个一次性加密信封,信封上只写收件派出所的编号。保安拿到信封,看不懂内容,只能原封不动转交派出所;派出所用自己保管的钥匙拆开,核对身份后回一句“这人没问题”。更妙的是,同一个人每次来,信封的样式都不一样——昨天和今天两次投递,外人根本看不出是同一个人。

第一个小区,就是4G网络的写法;第二个小区,就是5G网络的写法。这篇文章讲的就是:5G是怎么把“大声念身份证号”这件事,改造成“一次性加密信封”的。这里面的设计权衡,比信封本身精彩得多。

二、手机为什么必须报身份

先回到问题的起点:手机入网时,为什么非得交出真实身份?

因为网络要办三件事:鉴权(确认你是你,防止冒用)、计费(找到你的开户档案)、取数(你的鉴权根数据存在归属运营商的库里,外地网络要去找它要)。

全球移动用户的永久身份叫SUPI(用户永久标识),最常见的形式就是IMSI,结构非常朴素:

MCC+MNC相当于“XX省XX市”,MSIN才是那个精确到个人的门牌号。整串IMSI在运营商体系里是终身不变的——它太有价值了,一旦被拿到,你的轨迹、你的消费习惯,全都能被串起来。

正因为它终身不变、精确到人,它才成了整个移动通信史上被觊觎最久的一串数字。

三、4G的软肋:一个不能不报的明文号码

4G其实也知道IMSI敏感。所以日常待机时,网络给手机发的是一个临时身份(TMSI/GUTI),相当于化名,寻呼、更新位置都用化名,不暴露真名。

但化名有个天生的漏洞:化名是网络现场发的,手机每次开机、换了跟踪区、或者临时身份失效后,就得重新“报名”一次——因为此刻它手里没有有效化名,只能报真名。而此时鉴权还没开始,链路上没有任何加密保护。

伪基站(业界叫IMSI catcher,国内俗称“钓鱼基站”)就卡在这个节骨眼上。它的原理一句话就能说完:装一个信号极强的假基站,让周围手机误以为它是最近的优质小区,纷纷向它发起接入。接进来之后,它再借“网络需要核实身份”的名义,直接命令手机上交IMSI。手机在2G时代根本不会质疑基站——协议里压根没设计“基站向手机证明自己”这一步。

某百科的IMSI catcher词条对这类设备的描述相当直白:它就是一个“假基站”,夹在手机和真实网络之间搞中间人攻击;GSM规范只要求手机向网络证明身份,不要求网络向手机证明身份,这个著名的安全缺口正是它的工作原理;它可以强制手机上交IMSI,甚至强迫手机使用不加密或弱加密模式通话。词条还提到,这类设备已被多国执法部门采购使用(比如著名的Stingray设备),也因此引发了广泛的公民隐私争议。

也就是说,在4G的“第一次见面”环节,存在一个结构性的尴尬:最需要保密的时刻,恰恰是网络最没有能力保密的时刻。你每天走出地铁站的那个瞬间,理论上就有一台设备在空气里收你的身份证号。

四、鸡生蛋难题:鉴权之前,哪来的密钥?

要在空气里传加密的身份,得先有加密密钥;而加密密钥,是鉴权成功之后才协商出来的。可报身份又发生在鉴权之前。这就是经典的鸡生蛋问题:没鉴权就没密钥,没密钥就不敢报身份,不报身份就没法鉴权。

对称加密在这个场景里彻底失灵——对称密钥得双方先“对过暗号”才有,而此时双方还没对过暗号。

出路只剩一条:非对称加密。它的性质简直是为这个场景量身定做的——加密用公钥,人人可用;解密用私钥,只有持有者能做。不需要事先协商任何秘密,就能安全地递东西。

于是5G的设计是:

  1. 运营商生成一对公私钥。私钥锁在归属网络的用户数据库(UDM)里,天塌了也不出门;公钥在发卡环节直接写进每一张USIM卡。
  2. 手机入网要报身份时,不用报明文SUPI,而是用卡里的公钥把其中最敏感的MSIN加密,连同一些明文辅助信息,打包成一个新东西发出去——这就是SUCI(隐藏标识)。
  3. 全网任何基站、任何服务网收到的都只是这个“信封”,谁都打不开,只能沿着明文里的路由信息,把它送回归属运营商。只有握着私钥的UDM能拆。

注意信任根在哪里:在发卡那一刻。公钥是出厂写死在卡里的,手机不需要从网络上下载任何东西——所以攻击者没有机会在空口上偷换它。这个“先把信任埋进卡里”的思路,是整个方案能站住的地基。

五、拆开SUCI:一个信封的构造

SUCI不是把整个IMSI加密了事,它的构造相当讲究,分两段:

$$SUCI = MCC \,|\, MNC \,|\, PK_{id} \,|\, PK_{tmp} \,|\, Enc_{K}(MSIN)$$

逐段看:

字段 内容 明文还是密文 作用
MCC + MNC 国家码+运营商码 明文 网络靠它把信封路由回归属运营商,不含个人隐私
公钥标识 锁的“型号编号” 明文 告诉归属网该用哪一把私钥来解(支持换钥版本)
临时公钥 一次性椭圆曲线公钥 明文 本次加密的“信封投递口”,用完即弃
加密的MSIN 真正的个人身份 密文+校验码 全信封里唯一的隐私,外人不可见

有人会问:MCC/MNC为什么明文?因为服务网拿到信封后,得知道往哪个归属局送。这部分只泄露到“你是哪家运营商的用户”这个粒度,粒度足够粗,不构成定位个人的风险——这是一个典型的“按需最小暴露”设计。

加密部分用的是椭圆曲线集成加密方案(ECIES),流程如下:

flowchart TD
    A["USIM卡里预置的东西"] --> B["永久身份SUPI"]
    A --> C["归属网公钥"]
    A --> D["公钥标识"]
    C --> E["生成一次性密钥对"]
    E --> F["临时私钥,用完即毁"]
    E --> G["临时公钥,随信封外发"]
    F --> H["与归属网公钥做ECDH"]
    H --> I["KDF推导出加密密钥与校验密钥"]
    I --> J["加密MSIN并附加校验码"]
    B --> K["MCC与MNC保持明文"]
    D --> L["拼装成SUCI"]
    G --> L
    J --> L
    K --> L

数学上,会话密钥来自一次临时的椭圆曲线Diffie-Hellman计算:

$$K_{enc},\, K_{mac} = KDF\big(ECDH(sk_{tmp},\, PK_{home})\big)$$

临时私钥 $sk_{tmp}$ 每次都是现生成、用完即毁的随机数。IEEE DataPort上一篇解析SUCI格式的文章给出了具体的字节账:临时公钥占256位,校验码(MAC)占64位,被加密的MSIN占40位——MSIN按BCD编码恰好装满5个字节。整把“锁”的成本,不过几十个字节。

这里有个容易忽略的细节:加密之外还附了校验码(MAC)。归属网解密前先验校验,确保信封在路上没被人篡改过——比如有人把信封里的收件信息掉包。加密解决“看不见”,完整性解决“改不了”,两件事从来都是成对出现的。

六、一次注册的全流程:从面具到真名

把整条链路串起来,看看这个“信封”在网络里怎么走:

sequenceDiagram
    participant U as 手机
    participant A as 服务网AMF
    participant H as 归属网UDM
    U->>A: 注册请求,携带SUCI
    A->>H: 转交SUCI,请求解掩蔽
    Note over H: SIDF用私钥解出MSIN
    H->>A: 还原出SUPI
    A->>H: 依SUPI取鉴权数据,发起AKA
    H->>A: 返回鉴权向量
    A->>U: 下发挑战,要求自证
    U->>A: 校验网络身份,回算结果
    Note over U,A: 双向认证通过
    A->>U: 注册成功,发放5G-GUTI

几个值得咂摸的点:

第一,解信封的人离路由越远越好。 解掩蔽功能(把SUCI还原成SUPI的那一步)放在归属网的用户数据库里,而不是放在服务网的接入设备上。漫游场景下, visiting网络全程只经手密文——接待你的外地网络,从头到尾不知道你是谁,它只需要归属局一句“这人靠谱”。

第二,信封只递一次。 注册成功后,网络立刻发放临时身份5G-GUTI,此后寻呼、位置更新全部用化名。SUCI只在“手机手里没有任何有效化名”的场景下出场——开机首次注册、临时身份网络认不出等。真名面具只在第一次见面用,混熟了就全程代号。

第三,这一整套只是“报名”环节,真正的信任建立靠后面的AKA双向认证——SUCI保证的是“别人不知道我叫什么”,AKA保证的是“网络和我互相确认对方是真的”,两层防线各管一段,谁也不能替代谁。

七、点睛之笔:为什么每次的面具都不一样

这是整个设计里最漂亮的部分。

信封里的名字(MSIN密文)每次都不同,因为加密用的是一次一密式的一次性密钥对。于是同一个人,今天在A市注册产生一个SUCI,明天在B市注册产生一个完全不同的SUCI,两者之间没有任何统计关联。

这在对抗上极其关键。伪基站的杀伤力不只是“读出你一个号码”,更在于跨地点关联:在地铁站收一批SUCI,在写字楼收一批SUCI,如果同一部手机的标识前后一致,攻击者就能画出这个人的完整轨迹——从“他知道有这么个人”升级为“我知道这个人每天几点在哪”。一次性信封把这整条情报链掐断了:每次出场都是陌生人。

对比之下,化名(TMSI/GUTI)方案虽然也防追踪,但它本质上是一张网络签发的可回收工牌——化名与真名的映射表存在运营商库里,而且化名是复用的,在更新周期内保持不变,仍有被关联的窗口期。SUCI则是用户侧单方面产生的、永不复用的一次性面具,连“复用窗口”这个概念都没有。

两代方案的差距,一张表看全:

对比项 4G(IMSI明文) 5G(SUCI)
首次注册上交的身份 IMSI明文 SUCI(仅MSIN加密)
保护时机 鉴权前无保护 鉴权前即加密
加密体系 无 椭圆曲线ECIES
解密能力归属 — 仅归属网私钥
跨场景可关联性 同号终身,一收一个准 每次不同,无法关联
伪基站能读到什么 完整IMSI 看不懂的密文
信任根 无 发卡时预置的公钥

八、边界与清醒剂:面具不是防弹衣

工程上最忌讳把某个安全机制当万能药。SUCI的防护边界画得很清楚:

第一,它管“看不见”,不管“进不来”。 伪基站虽然读不出身份了,但假冒小区仍然能诱导手机接入、消耗手机电量、制造干扰,甚至尝试把手机拖向安全能力更弱的旧制式——这是拒绝服务与降级攻击,SUCI对它们无能为力。降级防护靠的是另外的手段:5G网络可以通过卡内策略禁止手机主动回落到不加密的旧制式,认证体系本身也设计成“网络必须证明自己”。

第二,它是一种“可选项”。 NIST在2026年发布的SUCI白皮书里明确指出:SUCI保护在5G标准里是运营商可选部署的安全能力,需要在网络侧和用户SIM卡两侧同时开启才能生效。也就是说,一个5G手机插一张老卡,或者一张新卡落在没启用这套机制的网络里,都可能退回不受保护的状态。安全机制的落地面,永远是“标准允许”和“现网启用”之间的距离。

第三,紧急呼叫留了一扇明文的门。 标准保留了一种“空加密”方案——不加密、直接传明文标识(甚至无标识),专门用于无卡紧急呼叫等场景。救人性命的时刻,隐私让位于可用性,这是全行业共识的取舍。

第四,面具防的是读,不防冒。 有人担心:SUCI被录下来重放,能不能冒充我?不能——重放的SUCI在后续鉴权环节立刻露馅,因为挑战应答用的是鉴权根数据,录音里没有。重放最多让网络“又看到一次这个信封”,换不来任何业务权限。

九、实战连接:这东西在现网长什么样

抓包看到的。 用Wireshark解码5G NAS信令,打开Registration Request,能看到ngKSI旁边有个SUCI字段。展开后结构一目了然:明文的MCC/MNC、公钥标识(一个字节,标识用哪版公钥)、一段256位的椭圆曲线临时公钥,以及那40位的加密MSIN——在抓包里它就是一串不可读的十六进制数。如果你在抓包里看到的是明文SUPI,说明这台设备走了空加密方案,要么是紧急呼叫,要么是卡/网两侧有一侧没启用SUCI——这是一个非常值得记录的排查信号。

运维碰到的。 换代公钥是最经典的坑:运营商轮换密钥(比如从第一版换到第二版),发卡侧新卡写了新公钥标识,核心网侧私钥没同步到位,结果新卡用户注册失败或异常回落,UDM日志里表现为解掩蔽失败。排查口诀:卡里的公钥标识、核心网的私钥版本、UDM的解掩蔽开关,三处必须对齐。此外标准允许多种实现与配置方式,具体行为以各厂家官方文档为准。

测试遇到的。 做终端入库测试时,SUCI是必测项:验证首注册上报的是SUCI而非明文SUPI、验证每次注册的SUCI确实在变化(不可关联性)、验证漫游场景下服务网全程拿不到明文身份。

行业层面的。 各国监管对“用户可被空口追踪”越来越敏感,欧洲的隐私法规直接把“网络必须能证明你没在偷偷记录用户轨迹”摆上台面。SUCI这类机制正在从“加分项”变成“准入项”——这也是NIST专门为它出白皮书的原因:推动这个可选项真正被用起来。

十、把设计思想带走

回头看,这个方案没有发明任何新密码学——椭圆曲线、ECDH、ECIES全是几十年的老技术。它真正精彩的是三个工程判断:

  1. 识别真正的信任起点:鉴权前无密钥,所以唯一能用的信任根是发卡时埋进卡里的公钥——把信任锚放在攻击者永远够不到的地方。
  2. 按需最小暴露:路由需要什么就明文什么(MCC/MNC),隐私是什么就密文什么(MSIN),不做一刀切。
  3. 新鲜性即隐私:一次性的密钥对让“同一个人”在空口上呈现为“每次都是陌生人”,直接摧毁跨场景关联的情报价值。

安全设计的高手,赢的从来不是算法,而是对“什么时刻、什么人、需要什么级别的保护”的精确切分。

常见问题

Q: SUCI和5G-GUTI有什么区别? A: 两者都保护隐私,但机制完全不同。SUCI是手机自己用归属网公钥加密出来的,只在首次注册等无化名场景使用一次;5G-GUTI是网络注册成功后签发的随机临时号,靠网络侧的映射表反查真名,日常寻呼、位置更新都用它。一个是一次性加密信封,一个是可复用的工牌。

Q: SUCI每次都不同,网络怎么认出是我? A: 变化的只是“外衣”。归属网用私钥解开信封,得到的MSIN是固定不变的——外衣天天换,名字只有一个。不可关联性防的是空口上的旁观者,不是持有私钥的归属网。

Q: MCC/MNC明文传输,会不会泄露隐私? A: 只会泄露到“你是哪家运营商的用户”这一粒度,无法定位到个人。而这段明文是路由刚需——服务网要靠它决定把注册请求送回归属网的哪个入口。隐私敏感的MSIN部分则全程密文。

Q: 有了SUCI,伪基站是不是就废了? A: 它的“读身份”能力确实废了,但还能制造干扰、诱导接入、尝试把手机拖向旧制式。所以伪基站治理是一套组合拳:SUCI管身份保密,卡内禁回落策略管制式选择,鉴权体系管网络真伪,各管一段。

Q: 老的4G手机能用SUCI吗? A: 不能。SUCI是5G引入的机制,需要终端和USIM卡都支持(卡里必须预置归属网公钥),且运营商网络侧开启相应功能。4G终端在4G网络里仍是老的临时标识加明文IMSI机制——这也是5G安全设计要重点防“降级”的原因。

参考来源

  1. NIST白皮书:Protecting Subscriber Identifiers with SUCI — 权威说明SUCI的椭圆曲线加密流程与可选部署属性
  2. Cisco 5G AMF配置指南:SUCI Profile — 厂商视角的SUCI生成与ECIES保护说明
  3. IEEE DataPort: 5G SUCI of IMSI-based SUPI — SUCI各字段的具体比特宽度与编码细节
  4. Magma文档:SUCI Extensions — 开源核心网对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 等场景全覆盖。

![[知识星球二维码.png]]