你的手机发出一条消息,它在核心网里的旅程远比想象中曲折:接入管理功能确认你是谁,会话管理功能给你分配通道,策略功能决定给你什么待遇,用户面功能负责搬运数据——十几个网络功能(NF,Network Function)要互相调用几十次,这条消息才能走完流程。在4G时代,这些网元之间的“互相信任”几乎靠一张嘴;到了5G,标准给每一对网元之间都装上了门禁系统。本文要讲清楚这套门禁的原理:它为什么长这样,以及为什么必须长这样。
要理解5G核心网的安全设计,先要理解它推翻了什么。
4G核心网是“大院模式”。网元种类少, mobility管理、会话管理、签约管理,一只手数得过来;网元之间用专用信令协议点对点互联;部署上,这些网元塞在运营商自己的封闭传输网里,外面的流量进不来。于是安全设计的基本假设是:进了大院的都是自己人。边界(防火墙+专网)之内不设防,网元之间互相调用基本“裸奔”,顶多靠网络规划保证只有该说话的网元能说话。这个假设在物理设备、静态组网的时代勉强成立——好比一个几十人的大院,门卫认得每一张脸。
5G核心网换成了“开放办公区模式”。架构服务化(SBA,Service-Based Architecture)之后:
网元数量从几十个变成成千上万个,还都是动态出生、动态消失的。这时候“认脸”行不通了——门卫不可能认得几千张脸,更不可能认得每分钟新入职的人。安全设计的假设被迫翻转成零信任:不因为流量来自内网就信任它,任何一次调用都必须当场证明“我是谁”和“我有权做这件事”。
| 维度 | 4G核心网 | 5G核心网(服务化架构) |
|---|---|---|
| 架构形态 | 少量大网元,点对点接口 | 大量微服务化NF,开放API |
| 接口协议 | 专用信令协议为主 | 统一HTTP风格接口 |
| 安全假设 | 专网隔离即安全 | 零信任,内网也不默认可信 |
| 网元身份 | 靠规划配置约定 | 每个NF持证书,强制互认 |
| 访问控制 | 无统一应用层机制 | 令牌+权限范围 |
| 类比 | 大院门卫,熟人社会 | 开放办公区,一人一卡按层授权 |
零信任落到实现上,是两道相互独立的锁。很多人第一反应是“不是已经有加密了吗,为什么还要令牌”——因为这两道锁回答的是两个完全不同的问题。
第一道锁:TLS加密管道。 它回答的是“传输途中会不会被偷看、被篡改,对面的网元是不是冒牌货”。类比装甲运钞车:钱在车上没人能偷,而且你可以验看司机的执业证件。TLS通过证书认证对方身份、协商出会话密钥、对流量加密并校验完整性。
第二道锁:OAuth 2.0访问令牌。 它回答的是另一个问题:“就算你真的是你,你有资格调用这个服务吗?”装甲车再安全,也不能让任何一个持证司机自己决定开去金库——他得持一张写明了目的地和事由的放行条。令牌就是这张放行条:由权威方签发,写清楚持有者可以调用谁家的什么服务,且只在短期内有效。
| 维度 | TLS加密管道 | OAuth访问令牌 |
|---|---|---|
| 回答的问题 | 路上安全吗?对方是真的吗? | 你有资格调用吗? |
| 信任基础 | 证书中心签发的证书 | 令牌颁发方的数字签名 |
| 保护对象 | 传输过程 | 访问权限 |
| 验证时机 | 连接建立时握手 | 每次服务调用 |
| 失效表现 | 连接建立失败 | 单次调用被拒绝,管道不受影响 |
只有管道没有令牌,等于把装甲车交给所有员工随便开——内部威胁(被攻陷的网元、配错的NF、恶意实例)畅通无阻。只有令牌没有管道,放行条本身在路上就能被截获篡改。两道锁缺一不可,这是5G服务化接口安全的第一性原理。
5G核心网里有一个看起来毫不相干的角色——网络仓库功能(NRF,Network Repository Function)。它的“本职”是服务注册与发现:每个NF上线时到NRF登记“我叫什么、我能提供哪些服务”,其他NF要找某种服务时也来问NRF。相当于开放办公区的前台登记处。
但标准还给NRF安排了一份兼职:授权服务器。整个核心网的门禁卡都由它印制和签发。这样设计有个好处:NRF本来就知道“有哪些NF、各自提供什么服务”,让它顺便管理“谁被允许调用什么”,信息天然集中,不用再建一个独立的授权系统。
整套门禁的拓扑长这样:
flowchart TD
CA["运营商证书中心 CA"]
NRF["网络仓库功能 NRF"]
A["消费者NF<br/>服务调用方"]
B["生产者NF<br/>服务提供方"]
CA -->|签发长期证书| A
CA -->|签发长期证书| B
CA -->|签发证书| NRF
A -->|上线注册并申领令牌| NRF
B -->|上线注册服务| NRF
A -->|经加密管道携带令牌调用| B
注意图里有两种“凭证”:证书中心(CA,Certification Authority)签发的证书是长期身份证,网元整个生命周期用一张;NRF签发的令牌是短期放行条,一次授权管一小段时间。身份证证明“你是注册在案的网元”,放行条证明“这一次调用被批准了”。
把两道锁和门禁中枢串起来,看一次真实的服务调用要过几道关。设NF-A需要调用NF-B提供的会话修改服务:
sequenceDiagram
participant A as 消费者NF
participant N as NRF
participant B as 生产者NF
A->>N: 申请访问令牌<br/>出示证书并声明所需权限
N->>N: 校验对方身份与授权策略
N-->>A: 签发短时效访问令牌
A->>B: 经TLS管道携带令牌发起调用
B->>B: 本地验签并检查权限与时效
B-->>A: 校验通过 返回服务结果
几个设计细节值得停下来想“为什么”:
为什么令牌有效期设计得很短? 假设令牌有效期长达一个月,一旦某个NF被攻陷、令牌被窃取,攻击者就能横行一个月。有效期缩短到几分钟到几小时,泄露的损失窗口就被压到同样短。代价是NF要更频繁地找NRF换新令牌——用一点信令开销,换安全上的“及时止损”。这和HTTPS证书故意设一年左右有效期、 ssh密钥建议定期轮换,是同一个思想:凭证的时效性与它的权限大小要匹配。
为什么生产者NF不把令牌发回NRF确认,而是本地验证? 如果每次调用都回访NRF,NRF就成了全网的信令风暴眼——所有NF之间的每一次调用都变成三次交互,NRF的负载和时延都不可接受。所以令牌被设计成自带证明的:NRF用私钥在上面签了名,任何NF拿着NRF的公钥就能当场验真伪,不需要打电话回去问。这正是“有状态确认”变“无状态验证”的经典手法,和Web世界用JWT替代session查询是同一个思路。
标准在此处允许多种实现,令牌的具体格式与携带方式以各厂家官方文档为准,但“颁发方签名、消费方本地验签”这个骨架是一致的。
主流实现中,这种令牌通常以JWT(JSON Web Token)格式承载:一个用点号分隔的三段式字符串。
$$\text{令牌} = \text{b64}(Header) \;\parallel\; \text{.} \;\parallel\; \text{b64}(Payload) \;\parallel\; \text{.} \;\parallel\; \text{Signature}$$
三段各自的含义:
签名公式:
$$Signature = \mathrm{Sign}{sk(Payload) \,\big)$$}}\big(\, \mathrm{b64}(Header) \parallel \mathrm{b64
其中 $sk_{NRF}$ 是NRF的私钥。验证方持有对应公钥,用验签算法即可确认前两段原封未动。数字签名的关键性质是:改动正文的任何一个字节,验签都会失败——攻击者就算拿到了一沓真令牌,把payload里的权限范围从“读”改成“读写”,签名立刻对不上。他要么拿到NRF的私钥(证书体系要防的头号目标),要么放弃。
Payload里典型装着这几样东西:
| 声明项 | 作用 |
|---|---|
| 签发者 | 标明令牌由哪个NRF颁发 |
| 接收方 | 限定只有目标生产者NF能使用这张令牌 |
| 权限范围 | 允许调用哪些服务、哪些操作 |
| 过期时间 | 控制损失窗口的短时效设计 |
| 签名 | 防篡改的“钢印” |
一个常见的误解要特别澄清:JWT默认只防篡改,不防偷看。前两段只是base64编码,不是加密,任何人拿到令牌都能直接读出内容。所以敏感信息(比如网元的长期凭证)绝不能放进payload。令牌的威胁模型是“泄露了也用不了、改不了”,而不是“泄露了也看不见”——它是一张塑封的访客证,证面上的信息本来就设计为可读。
生产者NF收到一个携带令牌的请求后,在本地依次过四道检查:
flowchart TD
S["收到服务调用请求"] --> T{"请求携带令牌了吗"}
T -->|没有| R1["拒绝 无凭证"]
T -->|携带了| V{"验签通过吗"}
V -->|失败| R2["令牌伪造或被篡改 拒绝"]
V -->|通过| E{"令牌还在有效期内吗"}
E -->|已过期| R3["退回 要求重新申领"]
E -->|有效| SC{"权限范围覆盖此操作吗"}
SC -->|不覆盖| R4["拒绝 越权"]
SC -->|覆盖| OK["执行服务并返回结果"]
这四步的顺序也有讲究:验签放最前面,因为过期检查、权限检查的前提都是“正文可信”——一个伪造的令牌,里面的过期时间写得再漂亮也没有意义。权限检查放最后,因为它粒度最细、判断最贵。整套逻辑和机场安检的顺序同构:先验证件真伪,再看证件有效期,最后核对登机牌是不是你的。
整套门禁立在一块地基上:运营商自建的证书体系(PKI)。每个NF在上线部署时,从运营商内部的证书中心领取一张证书,里面绑定着这个NF的身份。之后所有服务化接口的TLS连接都用证书做认证——而且是双向认证:不但消费者NF要验证“对面的生产者是真的”,生产者也要验证“来调用的消费者是真的”。
为什么要双向?设想一个被攻陷或恶意伪造的NF混入内网,单向认证时它只要有个“合法服务端面孔”就能钓到其他NF的调用;双向认证意味着它连发起调用的资格都没有——没有证书,第一道TLS握手就过不去。
证书本身也有时效,过期就必须更换。这在现网里是真实的运维风险:一张被所有NF信任的根证书或中间证书到期,如果轮换不及时,全网的服务化接口握手会成片失败,表现出的现象是“信令面大面积瘫痪但用户面可能还活着”——因为用户面数据走的是另一条不带这套门禁的通道。证书生命周期管理由此成为5G核心网运维的一等公民问题,而不是可以事后补的杂务。
理解原理的最好检验,是看它在故障里怎么现形。以下几类问题在5G核心网开局和割接中极为常见:
坑一:时钟漂移造成“假过期”。 令牌校验要比较当前时间与过期时间。某个NF的NTP没对好,快了或慢了几分钟,就会出现诡异现象:NRF明明刚签发了令牌,生产者却报“令牌未生效”或“已过期”。排查口诀:先对表,再查令牌。这类问题在灾备切换、新开数据中心时尤其高发——新机器时钟初始状态不可信。
坑二:证书链不全导致握手失败。 NF只装了自己的证书、没装中间CA证书链,TLS握手在对端验证时失败,日志里通常表现为握手告警而非明确的“证书错误”。现象上则是“NF之间偶联反复闪断”——这正是服务化接口安全的故障面,和4G时代“网元之间基本不会因加密问题断链”形成鲜明对比。
坑三:权限范围配错,403满屏飞。 NRF的授权策略里没把某个NF登记为某服务的合法消费者,令牌照发,但payload里的权限范围不含目标操作,生产者一律拒绝。这类问题的迷惑性在于:令牌是正常的,管道是通的,错的是策略。排查时不能只看握手和令牌有没有,要打开令牌看权限范围声明。
坑四:NRF故障的“部分瘫痪”形态。 NRF不可用后,存量令牌在有效期内仍然可用,所以已建立交互的业务看起来一切正常;令牌到期需要续签的、新上线的NF则全部失败。于是你看到一个经典故障画像:“老业务活着、新业务死了”的假性局部故障。遇到这种时间上逐渐恶化的现象,第一反应就该是授权中枢的可用性。生产部署中NRF通常 geo冗余部署多实例,但冗余配置本身也可能出错——这正是为什么核心网演练里要专门做NRF倒换测试。
最后说一个调试心态上的转变:4G时代的排障本能是“查专网通不通、查网元数据配置对不对”;5G服务化架构下,要多问一句“这两个NF互信的链条断在哪一环”——证书?握手?令牌?验签?权限?把互信链条在脑子里拆开,日志里的报错就从天书变成了路标。
Q: 有了TLS加密,为什么还需要OAuth令牌?两者不能合一吗? A: 它们保护的对象不同。TLS保证“传输途中不被偷看篡改、对方是真的”;令牌保证“这次调用被授权”。类比:TLS是装甲车,令牌是放行条。没有放行条的装甲车,等于把运钞车交给所有持证司机随便开——内部被攻陷的网元可以合法地加密着把数据偷走。加密管道解决不了“权限”问题,这是两个正交的安全维度。
Q: 令牌里的内容是加密的吗?被截获了怎么办? A: 不是加密的。JWT的前两段是base64编码,拿到就能读。它的防的是篡改(签名)和滥用(短时效+限定接收方+限定权限范围),不是保密。截获者可以在有效期内拿着它冒用——所以令牌必须跑在TLS管道里传输,且有效期必须短。这也是为什么payload里绝不能放长期密钥这类真正的秘密。
Q: NRF挂了,整个核心网是不是就瘫痪了? A: 不是立刻全瘫,而是“逐渐瘫痪”:存量令牌在有效期内继续有效,已有业务不受影响;令牌到期续签和新NF注册则全部失败。故障表现为延迟出现的部分性瘫痪,反而更隐蔽。所以生产环境NRF都做冗余部署,倒换测试是核心网验收的必做项。
Q: 4G核心网的网元接口就完全不设防吗? A: 也不是“完全不设防”,而是设防的思路不同。4G依赖封闭专网的物理隔离,加上部分接口协议自带的可选安全能力,安全边界画在网络边界上;但缺少统一的应用层授权——内网网元之间的调用基本默认可信。5G服务化架构把信任的粒度从“网络”细化到了“每一次调用”,这是架构形态变化倒逼出来的安全升级。
Q: 为什么不做一个中央网关,检查所有NF之间的每一次调用? A: 那等于把NRF的信令风暴眼和单点故障放大十倍:所有调用的时延都要加一跳,网关成为性能瓶颈和头号打击目标。“颁发方签名、消费方本地验签”的令牌模式把验证成本分摊到了每个生产者NF,中央组件只在签发时出现一次——这是无状态验证对有状态确认的胜利,和Web世界用JWT替代集中式session是同一笔账。
本文由「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 等场景全覆盖。
