首页 › security › 5G SEPP漫游N32安全机制拆解

5G SEPP 跨 PLMN 漫游安全机制深度拆解:N32-c 协商与 N32-f PRINS 保护全链解析

一、为什么需要 SEPP:从 4G 漫游安全的"裸奔"说起

在 4G/EPC 漫游架构中,跨运营商(inter-PLMN)的控制面信令通过 Diameter 路由代理(DRA)或 IPX 提供商以明文传输。这意味着任何一个中间 IPX 节点都可以完整解析、甚至篡改 IMSI、鉴权向量、位置信息等敏感字段。这就是臭名昭著的 SS7/Diameter 攻击(位置追踪、短信拦截、欺诈)的根因——攻击者只要攻破一个 IPX 提供商,即可横向危及整个漫游生态。

3GPP 在 R15 设计 5G SBA(服务化架构)时,直面这个"中间人不可信"的现实:所有 NF 间信令都走 HTTP/2 REST,传统边界网关(如 4G 的 SCEF/DRA)已经无法提供足够保护。为此,SA3 工作组引入了 SEPP(Security Edge Protection Proxy,安全边缘保护代理),定义于 TS 33.501《5G 系统安全架构与流程》,并在 TS 29.573《PLMN 互联 Stage 3》 中给出完整的 N32 接口流程定义。

SEPP 的核心设计哲学可以用一句话概括:传输层(TLS)解决不了的问题,交给应用层(PRINS)端到端解决。 即便信令穿越多个不可信的 IPX 提供商,敏感信息元(IE)在两个 SEPP 之间始终处于加密+完整性保护之下,IPX 只能看到路由必需的最小信息。

二、SEPP 在漫游架构中的位置与双平面模型

SEPP 部署在每个 PLMN 的网络边界,是所有跨运营商 SBI 信令的唯一出入口。两个 PLMN 的 SEPP 之间通过 N32 参考点互联。N32 被巧妙地拆分为两个逻辑平面:

flowchart TD
    subgraph VPLMN["拜访网络 VPLMN"]
        VNF["vNF<br/>如 vAMF"]
        VSEPP["vSEPP"]
        VNF -.SBI/TLS.-> VSEPP
    end
    subgraph IPX["IPX 提供商(不可信域)"]
        IPX1["IPX 节点"]
    end
    subgraph HPLMN["归属网络 HPLMN"]
        HSEPP["hSEPP"]
        HNF["hNF<br/>如 UDM/AUSF"]
        HSEPP -.SBI/TLS.-> HNF
    end
    VSEPP ==>|"N32-c 控制面<br/>能力协商(握手)"| HSEPP
    VSEPP -->|"N32-f 转发面<br/>PRINS保护业务信令"| IPX1
    IPX1 -->|"N32-f 转发面"| HSEPP

    classDef plane fill:#e8f4f8,stroke:#2196F3,stroke-width:2px
    classDef core fill:#fff3e0,stroke:#FF9800,stroke-width:2px
    class VSEPP,HSEPP plane
    class VNF,HNF core

这种"先握手建隧道、再逐消息保护"的双平面分离,使协商开销被摊薄到大量后续业务消息上,兼顾了安全性与性能。

三、N32-c 安全能力协商流程(TS 29.573 §5.2.2)深度解析

当一个 vPLMN 的 NF 首次向 hPLMN 的 NF 发起请求,且两 SEPP 间尚无有效 N32-f 上下文时,vSEPP 触发 N32-c 协商。该流程定义于 TS 29.573 §5.2.2 "Security Capability Negotiation Procedure"。

sequenceDiagram
    participant vSEPP as vSEPP(发起方)
    participant hSEPP as hSEPP(响应方)
    Note over vSEPP,hSEPP: 阶段1:TLS 传输层双向认证(基于证书/漫游协议)
    vSEPP->>hSEPP: TLS ClientHello(含 vSEPP FQDN、证书)
    hSEPP->>vSEPP: TLS ServerHello + 证书 + CertificateRequest
    vSEPP->>hSEPP: 客户端证书 + 密钥交换(建立 TLS 通道)
    Note over vSEPP,hSEPP: 阶段2:应用层安全能力协商(N32-c)
    vSEPP->>hSEPP: NegotiateSecurityCapability Request<br/>{vPLMN-id, vSEPP FQDN,<br/>支持密码套件列表(有序),<br/>FQDN→PLMN 映射}
    hSEPP->>hSEPP: 校验 vPLMN-id 与证书一致性<br/>选择共同最高优先级密码套件
    hSEPP->>vSEPP: NegotiateSecurityCapability Response<br/>{hPLMN-id, 选定密码套件,<br/>hSEPP FQDN, 生命周期}
    Note over vSEPP,hSEPP: 双方基于 TLS 密钥材料<br/>派生 N32-f 加密密钥 Kenc 与完整性密钥 Kint
    rect rgb(232,245,233)
        Note over vSEPP,hSEPP: N32-f 安全上下文建立完成<br/>(Kenc, Kint, 密码套件, 有效期)
    end

关键信元(IE)解析:

  1. PLMN-id / SEPP FQDN:每个 SEPP 用全限定域名(FQDN)标识,并携带所属 PLMN ID。协商双方必须校验"证书中的 FQDN ↔ 声明的 PLMN-id"一致性,防止身份伪造。
  2. 密码套件有序列表(Ordered cipher suite list):双方各自维护一个按运营商策略排序的支持列表,TS 29.573 规定响应方 SEPP 的支持套件必须是有序列表,最终按"发起方列表 ∩ 响应方列表,取双方共同最高优先级"选定。典型套件形如 PRINS-128-...,涵盖加密算法(如 AES)、完整性算法、密钥派生函数。
  3. N32-f 上下文:协商成功后,双方各持有一份对称的上下文,包含 Kenc(加密密钥)、Kint(完整性密钥)、选定套件、生命周期(有效期)。该上下文被缓存,后续多条业务消息复用,直到过期或被撤销。

设计意图:把"认证+密钥协商"与"数据保护"解耦,与 IPsec 的 IKE/ESP 分离思路一致。这样新增密码套件或更新密钥时,无需重传海量业务数据。

四、N32-f PRINS 保护:SEPP"修改函数"逐信元拆解

这是整个机制最精妙、也最常被误解的部分。PRINS 保护不是对整条 HTTP 消息加密,而是 SEPP 执行一个修改函数(modification function),按"数据类型"对消息内的特定 IE 做精细化处理——这正是 IPX 节点为何仍能完成路由却看不到敏感内容的关键。

4.1 三类 IE 保护策略

TS 33.501 与各 API 规范(TS 29.5xx 系列)为每条消息的每个 IE 定义了三级保护:

保护类别 处理方式 典型 IE 示例 IPX 是否可见
机密性保护(Ciphered) 用 Kenc 加密为密文,整体被 JWS 完整性覆盖 SUPI、鉴权向量(RAND/AUTN/XRES*)、Kseaf、用户订阅数据、GPSI ❌ 不可见(仅见密文)
仅完整性保护(Integrity only) 明文,但纳入 JWS 签名,篡改即被检出 部分路由标识、会话 ID ✅ 可见但不可篡改
无保护(None) 明文透传,仅依赖传输层 TLS 路由必需字段、API 路径、FQDN ✅ 可见

4.2 修改函数的变换流水线

flowchart TD
    A["原始 SBI 消息<br/>(vNF→vSEPP, 明文 JSON)"] --> B["IE 分类与查表<br/>按 29.5xx 数据类型映射"]
    B --> C{"IE 是否需加密?"}
    C -->|"是"| D["用 Kenc 加密<br/>密文封装为特殊对象<br/>(含数据类型标识)"]
    C -->|"否"| E["明文保留"]
    D --> F["组装受保护 JSON 主体"]
    E --> F
    F --> G["JWS 签名<br/>(Kint + 时间戳/序列号<br/>提供完整性+防重放)"]
    G --> H["经 N32-f 转发<br/>vSEPP → IPX → hSEPP"]
    H --> I["hSEPP: 验签 JWS<br/>校验时间戳窗口"]
    I --> J["hSEPP: 用 Kenc 解密<br/>还原原始 IE"]
    J --> K["重建原始 SBI 消息<br/>转发至 hNF"]

    style D fill:#ffe0b2,stroke:#E65100
    style G fill:#c8e6c9,stroke:#1B5E20
    style I fill:#bbdefb,stroke:#0D47A1

关键设计点:

  1. 数据类型驱动(Data-type based)而非字段名驱动:SEPP 维护一张"数据类型 → 保护策略"表,即使不同 NF 服务里字段名不同,只要语义数据类型相同(如所有"用户永久标识"),保护策略一致。TS 33.501 规定了哪些数据类型必须机密性保护。
  2. JWS(JSON Web Signature,RFC 7515)提供完整性+防重放:签名对象中包含时间戳与序列号,接收 SEPP 校验时间窗口,杜绝重放攻击。
  3. 加密用 JWE(JSON Web Encryption):密文封装为带数据类型标识的对象,接收方据此正确解密。
  4. 可逆性:hSEPP 执行完全逆过程——先验签(必须先验签后解密,防止伪造密文导致后续处理异常),再解密,最后重建出与 vNF 原始请求逐字节等价的 SBI 消息递交给 hNF。hNF 完全无感,无需知道经过 SEPP。

五、完整漫游注册鉴权信令全链时序

下面以一个典型的漫游场景——UE 在 vPLMN 注册,需向 hPLMN 的 UDM/AUSF 完成鉴权——展示 N32-c 与 N32-f 如何协同工作(综合 TS 23.502 §4.2.2 注册流程与 TS 33.501 鉴权流程):

sequenceDiagram
    participant UE
    participant RAN as (v)NG-RAN
    participant vAMF
    participant vSEPP
    participant IPX as IPX
    participant hSEPP
    participant AUSF as hAUSF
    participant UDM as hUDM

    UE->>RAN: Registration Request (含 SUCI)
    RAN->>vAMF: N2 消息透传
    Note over vAMF: 解析出目标 hPLMN-id<br/>需向 hUDM/hAUSF 取鉴权向量
    Note over vAMF,vSEPP: N32-c 上下文不存在 → 先协商(见第三节)
    vAMF->>vSEPP: Nausf_UEAuthentication 请求(明文,PLMN-内TLS)
    vSEPP->>hSEPP: N32-c 协商(如尚未建立)
    vSEPP->>vSEPP: 修改函数:加密 SUPI/鉴权参数, JWS签名
    vSEPP->>IPX: N32-f 受保护消息(密文IE+签名)
    Note over IPX: 仅见路由字段,无法读取鉴权向量
    IPX->>hSEPP: 透传
    hSEPP->>hSEPP: 验签JWS → 解密IE → 重建请求
    hSEPP->>AUSF: Nausf_UEAuthentication(明文,PLMN-内TLS)
    AUSF->>UDM: Nudm_UEAuthentication(取鉴权向量)
    UDM-->>AUSF: 5G-AKA 向量(RAND/AUTN/XRES*)
    AUSF-->>hSEPP: 鉴权响应
    hSEPP->>hSEPP: 修改函数:加密敏感响应IE, JWS签名
    hSEPP->>IPX: N32-f 受保护响应
    IPX->>vSEPP: 透传
    vSEPP->>vSEPP: 验签 → 解密 → 重建
    vSEPP-->>vAMF: 鉴权响应(明文)
    vAMF->>UE: (后续) Authentication Request / Security Mode

注意全链中敏感字段(SUPI、RAND、AUTN、XRES*、Kseaf 等)在 N32 段全程加密,而 IPX 仅承担"按路由字段转发"的职责。即便恶意 IPX 截获报文,得到的也只是无法解析的密文与一条不可伪造的签名。

六、5G SEPP N32 vs 4G Diameter/IPX 漫游安全对比

维度 4G/EPC(Diameter/IPX) 5G(SEPP + N32/PRINS)
传输介质 Diameter/SCTP 经 DRA/IPX HTTP/2 REST 经 SEPP/IPX
中间节点可见性 全明文,IPX 可读所有 IE IPX 仅见路由字段,敏感 IE 加密
完整性保护 无(依赖传输层,跨域断裂) 端到端 JWS 签名,覆盖整条消息
防篡改 IPX 可静默篡改(SS7/Diameter 攻击根源) 任意篡改即验签失败
防重放 弱 JWS 时间戳+序列号校验
粒度 全消息或无 逐 IE 数据类型精细化
信任边界 必须信任所有 IPX 节点 仅需信任两端 SEPP,IPX 零信任

七、抓包识别与实战排错

抓包识别要点: - 在 IPX 侧抓包,N32-f 流量是 HTTP/2 over TLS(443 或运营商协商端口)。即便 TLS 解密,应用层 JSON 中敏感字段已被替换为密文对象(典型结构含 "ciphered" 标识或 Base64URL 密文 + 数据类型标识)。 - 寻找 JWS 头部(JOSE Header):可见 alg、kid 字段;载荷(payload)为受保护结构。 - 在 SEPP 内部接口(NF↔SEPP,PLMN 内)抓包则可见明文 SBI,是验证 SEPP 改造正确性的最佳观测点。

常见故障点与排错: 1. N32-c 协商失败:最常见。检查证书链是否互通、FQDN↔PLMN-id 映射是否正确、双方密码套件列表无交集(TS 29.573 要求取共同最高优先级,无交集则协商失败,业务信令无法跨域)。表现为 vNF 收到 SEPP 返回的 5xx,需查 SEPP 日志中的协商失败原因码。 2. 证书过期/吊销:导致 TLS 握手在 N32-c 第一阶段即失败,需关注证书生命周期管理。 3. JWS 验签失败:通常是密钥不同步(一侧上下文已刷新、另一侧未更新)或时间戳越窗(两 SEPP 时钟漂移过大)。排错时核对 Kint 一致性与 NTP 时钟同步。 4. IPX 节点 TLS 拦截:若 IPX 启用 TLS 中间盒(TLS-aware IPX)且配置错误,可能截断 N32-f 上下文。需确认 SEPP 间是否使用端到端 TLS 还是逐跳 TLS,并保证 PRINS 不受影响(PRINS 独立于 TLS,理论上即使 TLS 被 IPX 终止,PRINS 仍提供端到端保护)。 5. 性能瓶颈:大量短消息的 JWS 签名/验签开销。部分厂商(如 IPLOOK、爱立信)通过 N32-f 上下文复用、硬件加速与批量验签优化,据称可提升 N32-f 性能 40%。

八、常见问题

Q1: N32-c 和 N32-f 到底有什么区别? A: N32-c 是"控制面/握手面",负责双向认证、密码套件协商、派生密钥并建立可复用的 N32-f 安全上下文,执行频率低(类似 IPsec IKE);N32-f 是"转发面",对每条实际业务消息应用 PRINS 加密+完整性保护,执行频率高(类似 IPsec ESP)。一次 N32-c 协商支撑后续成千上万条 N32-f 消息。

Q2: 既然有 TLS,为什么还要 PRINS 这个应用层安全? A: TLS 是传输层逐跳的,而 N32 路径穿越多个不可信 IPX 提供商。如果仅靠 TLS,要么 IPX 不可见(端到端 TLS,但 IPX 无法做路由优化/计费),要么 IPX 终止 TLS(即可见全部明文,重蹈 4G 覆辙)。PRINS 在应用层做端到端的逐 IE 加密+签名,与 TLS 解耦,使 IPX 能看到路由字段完成转发、却始终无法读取或篡改敏感内容——这正是"零信任 IPX"的设计精髓。

Q3: 抓包能看到漫游信令的明文吗? A: 取决于抓包位置。在 IPX 段或 SEPP 之间(N32-f),即使解密 TLS,看到的仍是密文 IE + JWS 签名,无法还原明文。只有在 PLMN 内部(NF↔SEPP,hSEPP↔hNF)才能看到 SEPP 重建后的明文 SBI。这是排错时常切换抓包点的原因。

Q4: 如果两个 SEPP 协商不出共同密码套件怎么办? A: TS 29.573 要求取双方支持列表的交集最高优先级;若无交集,N32-c 协商失败,N32-f 上下文无法建立,所有跨 PLMN 业务信令被阻断。实务中需通过漫游协议预先对齐双方 PRINS 套件版本(尤其 R15↔R17/R18 设备对接时),或升级设备补齐套件。注意:3GPP 不鼓励"零保护降级",默认拒绝明文回退。

Q5: 哪些 IE 会被 SEPP 加密? A: 由 TS 33.501 规定的"需机密性保护的数据类型"决定,典型包括:SUPI、5G-AKA/EAP-AKA' 鉴权向量(RAND、AUTN、XRES、Kseaf/HRES)、用户订阅数据、GPSI、用户位置等。具体到每个 API 消息的逐字段策略,在各接口规范(如 TS 29.503 UDM、TS 29.509 AUSF)中给出映射表。路由必需字段(如 API 路径、目标 FQDN)保留明文以供 IPX 转发。

参考来源

  1. 3GPP TS 33.501 V18.10.0 — Security architecture and procedures for 5G system (R18) — SEPP、N32 安全架构、需机密性保护数据类型定义
  2. 3GPP TS 29.573 — 5G System; PLMN Interconnection; Stage 3 — §5 N32 Procedures、§5.2.2 Security Capability Negotiation、PRINS、密码套件协商
  3. 3GPP TS 29.500 — Technical Realization of Service Based Architecture — SBI 安全原则与 SEPP 消息保护机制
  4. 3GPP — 5G Roaming Security (SA3) — SEPP 漫游安全架构官方说明
  5. The 3G4G Blog — 5G Roaming with SEPP (Security Edge Protection Proxy) — SEPP 双平面模型与 PRINS 流程解读

本文由「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学通信知识星球海报-扫码加入