3GPP 从 Rel-15 起在 5G 系统中引入了"非可信非3GPP接入(Untrusted Non-3GPP Access)",允许 UE 通过运营商不可控的接入网(典型如公网 Wi-Fi 热点、家庭宽带)接入 5GC。与 3GPP 接入不同,这段接入链路不在运营商的安全域内:中间链路可被嗅探、AP 可被伪造、流量可被重放或篡改。因此 5G 不能依赖空口(PDCP/NAS)那套由 gNB 与 AMF 共同维持的密钥体系,而必须在 UE 与一个"可信锚点"之间重新建立一条端到端加密隧道,把 UE 的注册信令与用户面流量整体"灌进"隧道里,再交给 5GC。
这个可信锚点就是 N3IWF(Non-3GPP InterWorking Function),其安全架构由 TS 33.501 Section 8 规定。整条安全链可以一句话概括:
UE 与 N3IWF 之间用 IKEv2/IPSec 建立 ESP 隧道;在 IKEv2 的 IKE_AUTH 阶段,用自定义的 EAP-5G 方法把 5G NAS 注册信令"搭载"进去,完成 5G 主认证;主认证成功后由 AMF 从 K_AMF 派生出 K_N3IWF 并下发 N3IWF,作为 IKEv2 的 MSK 锚定整条 IPSec 隧道。
本文严格按 TS 33.501 §8 / §6.1.3.3、TS 24.502 Annex A、TS 23.502 §4.12.2、RFC 7296 逐消息拆解这条链路。
flowchart TD
subgraph Untrusted["非可信非3GPP接入域(公网/Wi-Fi)"]
UE[UE]
end
subgraph Trust["运营商可信域(5GC + N3IWF)"]
N3IWF[N3IWF<br/>IPSec/IKEv2终结点]
AMF[AMF]
UPF[UPF]
UDM[AUSF/UDM]
end
UE -- "外层IP + IPSec ESP隧道" --> N3IWF
UE -. "内层IP(N1 NAS / N3 UP)" .-> N3IWF
N3IWF -- "N2 (NGAP)" --> AMF
N3IWF -- "N3 (GTP-U)" --> UPF
AMF -- "服务化接口" --> UDM
TS 23.501 §5.2.5 对 N3IWF 的功能定义可归纳为四点:① 与 UE 建立 IPSec 隧道;② 终结 IKEv2 并作为 EAP 认证器(但不解析 NAS 语义,只做透传);③ 通过 N2 向 AMF 转发 NAS(扮演 gNB 的 N2 角色);④ 通过 N3 把用户面 GTP-U 送到 UPF。理解这一点很关键:N3IWF 对 5GC 而言是一个"特殊的 gNB",对 UE 而言是一个"IPSec 安全网关"。
下图严格对应 TS 23.502 §4.12.2 的"经非可信非3GPP接入的注册"流程,叠加 TS 24.502 Annex A 的 EAP-5G 消息交互与 TS 33.501 的密钥派生节点:
sequenceDiagram
autonumber
participant UE
participant N3IWF
participant AMF
participant AUSF as AUSF/UDM
Note over UE,N3IWF: 阶段A:IKE_SA_INIT(建立预安全通道)
UE->>N3IWF: IKE_SA_INIT(SAi1提案, KEi=DH公钥, Ni=nonce)
N3IWF->>UE: IKE_SA_INIT(SAr1选中提案, KEr, Nr)
Note right of N3IWF: 双方由 DH+Ni/Nr 算出 SKEYSEED<br/>派生 SK_e/SK_a/SK_i 保护后续 IKE_AUTH
Note over UE,N3IWF: 阶段B:IKE_AUTH + EAP-5G(承载5G注册与主认证)
UE->>N3IWF: IKE_AUTH(IDi, SAi2/ESP提案, TSi, TSr)(无AUTH)
N3IWF->>UE: IKE_AUTH(EAP-Request/5G-Start)
UE->>N3IWF: EAP-Response/5G-NAS-Stream(AN-Parameters: PLMN, NSSAI…)
Note right of N3IWF: N3IWF依据AN-Parameters选择AMF
N3IWF->>AMF: N2 Initial UE Message(含首条NAS注册请求封装)
UE->>N3IWF: EAP-Response/5G-NAS-Stream(NAS: Registration Request)
N3IWF->>AMF: 转发 NAS Registration Request
rect rgb(235, 248, 245)
AMF->>AUSF: 调用鉴权服务
AUSF->>AMF: 鉴权向量(AV)
AMF->>UE: EAP-Request/5G-NAS-Stream(NAS: Auth Request)
UE->>AMF: EAP-Response/5G-NAS-Stream(NAS: Auth Response)
Note over UE,AUSF: 5G-AKA 或 EAP-AKA' 主认证成功<br/>双方得到 K_AUSF→K_SEAF→K_AMF
end
Note over UE,N3IWF: 阶段C:K_N3IWF 锚定与 IPSec SA 建立
AMF->>N3IWF: N2 下发 K_N3IWF(=KDF(K_AMF),受NDS/IP保护)
Note right of N3IWF: K_N3IWF 作为 IKEv2 MSK<br/>验证UE侧AUTH,派生ESP密钥
AMF->>UE: EAP-Request/5G-NAS-Stream(NAS: Registration Accept)
N3IWF->>UE: IKE_AUTH(自身AUTH) + EAP-Success
Note right of N3IWF: IKE SA 与首条 Child SA(ESP) 建立<br/>UE获得内层IP
UE->>N3IWF: IKEv2 AUTH(基于MSK) 完成互认证
N3IWF->>N3IWF: 协商后续 Child SA(信令SA + 用户面SA)
IKE_SA_INIT 的作用不是认证 UE,而是先协商出一套密码学算法与 Diffie-Hellman 共享密,把后续 IKE_AUTH 报文加密起来。这一步完全不需要任何 5G 凭证,因为双方此时都还没有共享密钥。其核心 IE 如下:
| IKE_SA_INIT 关键 IE | 方向 | 作用 | 设计意图 |
|---|---|---|---|
| SAi1 / SAr1 | 双向 | 加密/完整性/DH/PRF 算法提案与选中提案 | 让 UE 与 N3IWF 协商 IKE SA 保护算法(如 AES-GCM-16、PRF-HMAC-SHA-256、Group 19/20) |
| KEi / KEr | 双向 | DH 公钥值 | 生成 SKEYSEED,使后续密钥具备前向保密 |
| Ni / Nr | 双向 | nonce 随机数 | 与 DH 一起喂入 PRF 生成 SKEYSEED |
完成后双方各自计算出 SKEYSEED = prf(Ni ‖ Nr, g^ir),并进一步派生 SK_d / SK_ai / SK_ar / SK_ei / SK_er / SK_pi / SK_pr,其中 SK_e*/SK_a* 用于加解密与完整性保护 IKE_AUTH 报文。注意:这一阶段没有任何 UE 身份信息,SUPI/SUCI 都还没有出现——这是 RFC 7296 的标准做法,目的是让身份在加密后才发送。
进入 IKE_AUTH 后,所有报文已被 SK_e/SK_a 加密与完整性保护。UE 发出的第一个 IKE_AUTH 不带 AUTH 载荷(因为 EAP 模式下发起方的 AUTH 要等 EAP 成功后再算),而是携带 ESP 子 SA 提案 SAi2、流量选择器 TSi/TSr 和身份 IDi。随后进入 EAP-5G 的交互循环。
EAP-5G 不是通用 EAP 方法,而是 3GPP 专门为 5G 设计的"传输容器",其唯一职责是把 5G NAS 消息和 AN-Parameters 封装进 EAP 报文,让 N3IWF 透明转发给 AMF,从而复用 5G 的注册与主认证流程。
flowchart TB
EAP["EAP报文<br/>Code(1) + Identifier(1) + Length(2)<br/>Type = EAP-5G(1) + Type-Data"]
EAP --> E5G["EAP-5G 报文 Type-Data"]
E5G --> HDR["EAP-5G 头部(1 octet)<br/>含 message segregation 指示位"]
E5G --> STR["5G-NAS-Stream(变长)<br/>Length(1~2 octet) + 净荷"]
STR --> AN["AN-Parameters 净荷<br/>(GUAMI/PLMN/NSSAI/Cause…)"]
STR --> NAS["5G NAS 消息净荷<br/>(Registration/Auth Request…)"]
| 字段 | 长度 | 含义 |
|---|---|---|
| EAP Code | 1 octet | Request=1 / Response=2 / Success=3 / Failure=4 |
| Identifier | 1 octet | 请求-响应配对标识,用于重传与匹配 |
| EAP Type | 1 octet | 取值为 EAP-5G 方法类型,标识后续为 EAP-5G 数据 |
| EAP-5G 头部 | 1 octet | 关键指示位:message segregation(指示本 EAP-5G 是否同时承载需隔离的内容) |
| 5G-NAS-Stream | 变长 | 实际载荷:可以是 AN-Parameters,也可以是 5G NAS 消息 |
| Length | 1~2 octet | 5G-NAS-Stream 的长度编码(区分单字节/双字节长度编码) |
UE 向 N3IWF 发出的 EAP-5G 携带的 AN-Parameters(接入网参数)是 N3IWF 选择 AMF 的依据,典型包含:
| AN-Parameter | 作用 |
|---|---|
| Selected PLMN ID | UE 选择的归属/拜访 PLMN,N3IWF 据此选 AMF 集 |
| Requested NSSAI | UE 请求的网络切片,影响 AMF/Slice 选择 |
| Establishment Cause | 非3GPP 接入建立原因(如紧急、信令) |
| UE identity 相关指示 | 辅助 AMF 定位 UE 上下文 |
一条完整的 5G NAS 注册请求可能远大于单个 EAP-5G 报文的承载上限。TS 24.502 Annex A 规定了分片机制:当 NAS 消息超长时,UE 将其拆分为多个 EAP-Response/5G-NAS-Stream,由 N3IWF 侧按序重组为完整 NAS 消息后再通过 N2 转发。这意味着在抓包里你会看到多个连续的、Identifier 递增的 EAP-Response 报文,它们拼接起来才是一条完整的 Registration Request——这是排错时极易误判的点。
flowchart TD
K["K (USIM/UDM 永久密钥)"] --> AKA["5G-AKA / EAP-AKA'<br/>产出 CK, IK 或 CK', IK'"]
AKA --> KAUSF["K_AUSF<br/>(AUSF 派生, TS33.501 §6.1.1.3)"]
KAUSF --> KSEAF["K_SEAF<br/>(SEAF/AMF 派生, §6.1.1.4)"]
KSEAF --> KAMF["K_AMF<br/>(AMF 派生, §6.1.1.5)"]
KAMF --> KN3IWF["K_N3IWF<br/>(AMF 派生, §6.1.3.3 / Annex A.7)"]
KN3IWF --> MSK["→ 作为 IKEv2 MSK"]
MSK --> IKEKEY["IKE SA 密钥 + ESP Child SA 密钥"]
KAMF -. "用于NAS(经N3IWF转发)层安全" .-> NASK["K_NAS_int / K_NAS_enc"]
主认证(5G-AKA 或 EAP-AKA')成功后,UE 与 AMF 共享 K_AMF。AMF 调用 KDF 从 K_AMF 派生 K_N3IWF(见 TS 33.501 §6.1.3.3 与 Annex A.7,派生输入包含访问类型标识),UE 侧也用相同的 K_AMF 独立派生出相同的 K_N3IWF。关键设计要点:
IPSec 隧道建立后存在两层 IP:外层 IP 是 UE↔N3IWF 在 Wi-Fi 上的物理可达地址;内层 IP 由 N3IWF 分配给 UE,用于区分信令面与用户面。两条 ESP Child SA 分别承担:信令 SA 承载 UE→AMF 的 N1 NAS(N3IWF 转 N2),用户面 SA 承载 UE→UPF 的 N3 业务流量(N3IWF 转 GTP-U)。后续 PDU 会话建立就在这条内层隧道内完成。
如何用 Wireshark/tshark 识别这个流程:
isakmp(IKEv2)或 udp.port==500/4500,应看到完整的 IKE_SA_INIT 双向一对、随后多条 IKE_AUTH(被加密,payload 显示为 ENC)。eap.code==2 (Response) 且 eap.type==EAP-5G,多条 Response 的 Identifier 递增且 payload 为 5G-NAS-Stream,正负交替出现 Request/Response。常见故障点与排错思路:
| 现象 | 可能根因 | 排查方向 |
|---|---|---|
| IKE_SA_INIT 后无 IKE_AUTH | 算法提案不匹配(SAi1/SAr1 协商失败) | 检查双方支持的加密套件、DH Group 是否一致 |
| EAP-5G 循环后 EAP-Failure | 5G 主认证失败(AKA MAC 不匹配/USIM 问题) | 排查 AUSF/UDM 鉴权向量、SUPI/SUCI 解析 |
| 隧道建立后无数据 | K_N3IWF 派生分支不一致 / Child SA 未协商 | 核对 AMF 是否成功下发 K_N3IWF、N3IWF MSK 推导 |
| NAS 消息截断 | EAP-5G 分片重组失败 | 检查是否丢 EAP-Response、Identifier 跳变 |
| N3IWF 选错 AMF | AN-Parameters 中 PLMN/NSSAI 缺失或错误 | 核对 UE 下发的 AN-Parameters 完整性 |
| 维度 | 非可信非3GPP (N3IWF) | 可信非3GPP (TNGF, Rel-16) | 固定接入 (W-AGF, Rel-16) | EPS (ePDG) |
|---|---|---|---|---|
| 接入网信任度 | 不可信 | 运营商可信 | 可信(5G BBF) | 不可信 |
| 安全隧道 | IKEv2 + IPSec ESP | IKEv2 + IPSec(可省略部分) | 不强制 IPSec | IKEv2 + IPSec ESP |
| 承载 NAS 的方法 | EAP-5G | EAP-5G | 直接/特定 | 不承载5G NAS |
| 鉴权锚点密钥 | K_N3IWF(源自 K_AMF) | K_TNGF | — | 源自 EPS 密钥 |
| 适用场景 | 公网 Wi-Fi 接 5G | 运营 Wi-Fi | 有线宽带 | 接 EPC |
Q1:为什么 N3IWF 不直接用 EAP-AKA',而要再发明一个 EAP-5G? A:EAP-AKA' 是真正的认证方法,产出密钥;而 EAP-5G 本质是个"传输容器",不含任何认证逻辑,只负责把 5G NAS 注册信令封装进 EAP。5G 主认证(5G-AKA 或 EAP-AKA')是作为 NAS 消息"内嵌"在 EAP-5G 流里完成的。这样设计是为了让非3GPP 接入能完整复用 5G 注册、切片选择、二次认证等所有 NAS 层流程,而无需为每种接入单独定义一套。
Q2:K_N3IWF 和 K_gNB 能不能通用? A:不能。二者都源自 K_AMF,但经不同 KDF 分支派生(访问类型标识不同),属不同的密钥域。这种隔离保证非3GPP 隧道密钥泄漏不会危及 3GPP 空口,反之亦然,符合 TS 33.501 的密钥域分离原则。
Q3:IKE_SA_INIT 阶段没有任何 5G 身份,会不会泄露 UE? A:不会暴露 SUPI/SUCI。IKE_SA_INIT 仅含算法提案、DH 公钥与 nonce,不含 UE 身份;UE 身份(Registration Request 中的 SUCI)是在 IKE_AUTH 被加密后才发送的,符合 RFC 7296 的身份保护原则。
Q4:N3IWF 为什么要参与选 AMF?它不就是个隧道网关吗? A:N3IWF 需要根据 UE 通过 AN-Parameters 上报的 Selected PLMN、Requested NSSAI 来选择合适的 AMF(类似 gNB 的 AMF 选择),因为非3GPP 接入下没有 RRC 层的 NAS 路由,这些切片/PLMN 信息只能靠 EAP-5G 的 AN-Parameters 上送。
Q5:抓包看到一堆 EAP-Response/5G-NAS-Stream 是不是异常重传? A:通常不是。由于 5G NAS 消息(尤其带鉴权信息的注册请求)较长,会按 TS 24.502 Annex A 分片为多个 EAP-5G 报文,Identifier 递增、序号连续。若 Identifier 跳变或缺失,才是真正的丢包/重组失败。
本文由「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 等场景全覆盖。
