5G网络切片(Network Slicing)的核心承诺是"一张物理网络服务万业"。但当运营商向企业租户提供专属切片时,一个根本性的安全问题浮出水面:运营商的主认证(Primary Authentication)只验证了用户是否是运营商的合法订阅者,却没有验证用户是否有权访问特定切片。
设想一个场景:某智慧工厂租用了运营商的URLLC切片(SST=2),工厂自身的员工管理系统维护着谁可以接入工厂切片的权限。运营商的UDM中只有SIM卡对应的SUPI/GPSI订阅信息,但不知道该用户在工厂的安全等级。此时,切片所有者(Tenant)需要独立执行一次认证与授权——这就是NSSAA(Network Slice-Specific Authentication and Authorization)的设计动机。
3GPP在Release 16引入NSSAA框架(TS 23.502 Section 4.2.9),在Release 17引入独立网元NSSAAF(Network Slice-Specific Authentication and Authorization Function,TS 29.526),到Release 18/19进一步完善了对SNPN(独立非公共网络)场景和多种EAP方法的支持。
核心规范坐标: - TS 23.502 Section 4.2.9 — NSSAA总体流程与信令步骤 - TS 33.501 Section 5.13 — NSSAAF安全需求 - TS 29.526 — Nnssaaf服务化接口Stage 3定义 - TS 24.501 Section 5.4 — NAS层EAP消息传输
graph TB
UE[UE<br/>EAP Peer] -->|NAS MM Transport<br/>EAP消息| AMF[AMF<br/>EAP Authenticator前端]
AMF -->|Nnssaaf_NSSAA_Authenticate<br/>SBI接口| NSSAAF[NSSAAF<br/>EAP中继/编排器]
NSSAAF -->|N33/AAA协议<br/>RADIUS/Diameter| AAAP[AAA-P<br/>运营商代理]
NSSAAF -->|N33直连| AAAS[AAA-S<br/>切片租户AAA服务器]
AAAP -->|AAA协议| AAAS
NSSAAF -->|Nausf接口| AUSF[AUSF<br/>可选密钥材料]
style NSSAAF fill:#ff9900,stroke:#333,color:#000
style AAAS fill:#cc0000,stroke:#333,color:#fff
style AMF fill:#3366cc,stroke:#333,color:#fff
| 网元 | NSSAA角色 | 关键职责 |
|---|---|---|
| UE | EAP Peer | 响应EAP挑战,持有切片级凭证 |
| AMF | EAP Authenticator前端 | 触发NSSAA、转发EAP消息、存储认证结果 |
| NSSAAF | EAP中继编排器 | AMF与AAA-S之间的桥梁,管理EAP会话状态 |
| AAA-S | EAP Server | 切片租户的认证服务器,执行实际认证决策 |
| AAA-P | 可选代理 | 运营商部署的AAA代理,隔离第三方AAA-S |
| AUSF | 可选密钥提供者 | 为EAP-AKA'提供密钥材料 |
| UDM | 订阅数据源 | 存储S-NSSAI是否需要NSSAA的标记 |
关键设计洞察:AMF不直接与AAA-S通信。如果每个AMF都需要对接无数租户的AAA服务器,会产生严重的耦合和扩展性问题。NSSAAF作为中间层,屏蔽了AAA-S的多样性(不同协议、不同安全策略),让AMF只需调用标准化的Nnssaaf_NSSAA服务。
以下信令流严格对应TS 23.502 Section 4.2.9.2 Figure 4.2.9.2-1的18个步骤:
sequenceDiagram
participant UE
participant AMF
participant NSSAAF
participant AAAP as AAA-P
participant AAAS as AAA-S
Note over UE,AMF: Step 1: Registration阶段触发NSSAA
UE->>AMF: Registration Request<br/>(Requested NSSAI含需NSSAA的S-NSSAI)
Note right of AMF: AMF查询UDM订阅数据<br/>确认S-NSSAI需NSSAA
rect rgb(230, 245, 255)
Note over UE,AAAS: Phase A: EAP Identity交换
AMF->>UE: Step 2: NAS MM Transport<br/>(EAP Identity Request, S-NSSAI)
UE->>AMF: Step 3: NAS MM Transport<br/>(EAP Identity Response, S-NSSAI)
AMF->>NSSAAF: Step 4: Nnssaaf_NSSAA_Authenticate Request<br/>(EAP Identity Response, GPSI, S-NSSAI)
NSSAAF->>AAAP: Step 5: AAA Protocol<br/>(EAP Identity Response, GPSI, S-NSSAI)
AAAP->>AAAS: Step 6: AAA Protocol<br/>(EAP Identity Response, GPSI, S-NSSAI)
Note right of AAAS: AAA-S存储GPSI<br/>关联EAP Identity
end
rect rgb(255, 245, 230)
Note over UE,AAAS: Phase B: EAP认证挑战 (Steps 7-14)
loop 多轮EAP交换
AAAS->>AAAP: EAP-Request/AKA'-Challenge<br/>(AUTN, RAND, MAC)
AAAP->>NSSAAF: AAA Protocol转发
NSSAAF->>AMF: Nnssaaf_NSSAA_Authenticate Request
AMF->>UE: NAS MM Transport<br/>(EAP-Request/AKA'-Challenge)
UE->>AMF: NAS MM Transport<br/>(EAP-Response/AKA'-Challenge<br/>含RES)
AMF->>NSSAAF: Nnssaaf_NSSAA_Authenticate Request
NSSAAF->>AAAP: AAA Protocol转发
AAAP->>AAAS: EAP-Response/AKA'-Challenge
end
end
rect rgb(230, 255, 230)
Note over UE,AAAS: Phase C: 认证结果 (Steps 15-18)
AAAS->>AAAP: Step 15: EAP-Success/Failure<br/>(GPSI, S-NSSAI)
AAAP->>NSSAAF: Step 16: AAA Protocol<br/>(EAP-Success/Failure, S-NSSAI, GPSI)
NSSAAF->>AMF: Step 17: Nnssaaf_NSSAA_Authenticate Response<br/>(EAP-Success/Failure, S-NSSAI, GPSI)
AMF->>UE: Step 18: NAS MM Transport<br/>(EAP-Success/Failure)
Note right of AMF: AMF存储每个S-NSSAI<br/>的NSSAA认证结果
end
NSSAA中EAP消息在NAS层通过NAS MM Transport消息承载(TS 24.501 Section 5.4.3.3):
| IE名称 | 类型 | 长度 | 说明 |
|---|---|---|---|
| Protocol Discriminator | 半字节 | 4 bit | 值=7(5GS Mobility Management) |
| Security Header Type | 半字节 | 4 bit | 1=Integrity Protected, 2=Integrity Protected & Ciphered |
| NAS MM Transport Message Type | 字节 | 1 octet | 0x67(Downlink)/ 0x68(Uplink) |
| EAP message container | TLV | 可变 | 承载完整EAP包 |
| S-NSSAI | TLV | 可变 | 标识目标切片,使用H-PLMN值(非本地映射值) |
设计要点:TS 23.502 Section 4.2.9.2 Step 2明确指出,NAS MM Transport中携带的S-NSSAI必须是H-PLMN的S-NSSAI值,而不是在V-PLMN中映射后的本地S-NSSAI。这是因为AAA-S由切片所有者运营,只认自己的S-NSSAI定义。
基于TS 29.526定义的RESTful接口:
POST {apiRoot}/nnssaaf-nssaa/<apiVersion>/ue-authentications
请求体关键参数:
| 参数 | 类型 | 必含 | 说明 |
|---|---|---|---|
eapPayload |
bytes | 是 | EAP消息的原始编码 |
gpsi |
string | 是 | UE的外部标识(MSISDN或External ID) |
sNssai |
object | 是 | 目标切片标识(sst+sd) |
servingNetworkName |
string | 否 | 服务网络标识 |
GPSI选择策略:当UE订阅数据中有多个GPSI时,AMF使用UDM提供的GPSI列表中的任意一个。这是一个工程实现灵活点——不同厂商可能选择第一个GPSI或按特定策略选择。AAA-S会存储GPSI与EAP Identity的关联,用于后续重认证和授权撤销。
NSSAA默认使用EAP-AKA'(RFC 9048)作为认证方法:
graph LR
subgraph "EAP-Request/AKA'-Challenge IE结构"
A[Subtype: 0x01<br/>AKA-Challenge] --> B[AT_RAND<br/>16字节随机数]
A --> C[AT_AUTN<br/>16字节认证令牌]
A --> D[AT_MAC<br/>14字节消息认证码]
A --> E[AT_KDF_INPUT<br/>网络名称长度+名称]
A --> F[AT_KDF<br/>密钥派生函数标识]
end
| AT_*属性 | 长度 | 来源 | 用途 |
|---|---|---|---|
| AT_RAND | 16 octets | AAA-S生成 | 挑战随机数,防重放 |
| AT_AUTN | 16 octets | AAA-S基于K生成 | UE验证网络真实性(含SQN+AMF+MAC-A) |
| AT_MAC | 14 octets | AAA-S计算 | 消息完整性保护 |
| AT_KDF_INPUT | 可变 | 服务网络名 | 密钥绑定的上下文信息 |
| AT_KDF | 2 octets | 固定值1 | 指定使用KDF_1_prime |
EAP-AKA' vs EAP-AKA的关键区别:EAP-AKA'在KDF中引入了网络名称绑定(AT_KDF_INPUT),将派生密钥与具体服务网络关联,防止跨网络密钥重用攻击。这正是5G NSSAA选择EAP-AKA'而非EAP-AKA的根本原因。
stateDiagram-v2
[*] --> Idle: UE未请求切片
Idle --> Pending: AMF检测到S-NSSAI需NSSAA
Pending --> EAP_Identity: 发送EAP Identity Request
EAP_Identity --> EAP_Challenge: 收到EAP Identity Response
EAP_Challenge --> EAP_Challenge: 多轮EAP交换
EAP_Challenge --> Authenticated: 收到EAP-Success
EAP_Challenge --> Rejected: 收到EAP-Failure
Authenticated --> Pending: AAA-S触发重认证
Authenticated --> Revoked: AAA-S触发授权撤销
Authenticated --> Pending: 订阅变更触发重认证
Rejected --> [*]: AMF拒绝该S-NSSAI
Revoked --> [*]: AMF从Allowed NSSAI中移除
| NSSAA结果 | AMF行为 | UE感知 |
|---|---|---|
| EAP-Success | 将S-NSSAI加入Allowed NSSAI | 可以建立该切片的PDU Session |
| EAP-Failure | 将S-NSSAI移入Rejected NSSAI | Registration Accept中该S-NSSAI被标记 |
| 未完成(超时) | S-NSSAI暂不加入Allowed NSSAI | 该切片不可用,但不影响其他切片 |
| 授权撤销 | AMF从Allowed NSSAI移除,释放相关PDU Session | UE收到Configuration Update Command |
多切片并行认证:一个UE的Requested NSSAI中可能包含多个需要NSSAA的S-NSSAI。3GPP允许AMF串行或并行发起多个NSSAA过程。实际部署中,运营商通常采用串行策略以节省信令开销,但对于时延敏感的URLLC切片可以优先处理。
| 维度 | 5G主认证(Primary Auth) | NSSAA(二次认证) |
|---|---|---|
| 规范定义 | TS 33.501 Section 6.1 | TS 33.501 Section 5.13, TS 23.502 Section 4.2.9 |
| 触发时机 | 每次Registration | Registration后按需触发 |
| 认证方 | 运营商(AUSF+UDM/ARPF) | 切片租户(AAA-S) |
| EAP角色分配 | SEAF为Authenticator | AMF为Authenticator前端 |
| 凭证来源 | USIM卡中的K | 切片特定凭证(可独立于USIM) |
| 密钥层级 | K → CK/IK → KAUSF → KSEAF → KNAS | EAP-AKA'独立派生MSK/EMSK |
| 失败影响 | 注册失败,无法接入5G网络 | 仅该切片不可用,其他切片正常 |
| NAS承载 | NAS Authentication相关消息 | NAS MM Transport消息 |
| 协议方法 | 5G-AKA或EAP-AKA' | EAP-AKA'、EAP-TLS或其他EAP方法 |
| 安全域 | 运营商信任域 | 可能跨越运营商→租户信任边界 |
安全架构层次:
┌─────────────────────────────────────────┐
│ Layer 2: NSSAA (切片级) │
│ UE ←→ AMF ←→ NSSAAF ←→ AAA-S │
│ 验证: 用户是否有权访问特定切片 │
├─────────────────────────────────────────┤
│ Layer 1: 主认证 (网络级) │
│ UE ←→ SEAF(AMF) ←→ AUSF ←→ UDM │
│ 验证: 用户是否为运营商合法订阅者 │
├─────────────────────────────────────────┤
│ Layer 0: RAN安全 (空口级) │
│ UE ←→ gNB │
│ 验证: 空口加密与完整性保护 │
└─────────────────────────────────────────┘
除了Registration触发的初始NSSAA,TS 23.502还定义了两种网络侧触发的后续流程:
当切片租户需要重新验证用户身份时(例如员工安全等级变更),AAA-S主动发起:
Nnssaaf_NSSAA_ReAuth通知当租户决定立即撤销某用户的切片访问权限:
Nnssaaf_NSSAA_Authenticate(携带撤销指示)运营商成本博弈:授权撤销信令要求AMF立即释放PDU Session,这意味着正在进行的URLLC业务会话会中断。对于工业控制等高可靠性场景,租户需要在安全策略与业务连续性之间权衡——频繁的撤销重认证增加了信令负载,但降低了安全暴露窗口。
| 抓包位置 | 协议层 | 关键过滤条件 | 识别要点 |
|---|---|---|---|
| NG接口(gNB-AMF) | NGAP | NAS MM Transport消息类型 | IE: nas-mm-transport |
| NAS层 | NAS 5GS MM | Message Type 0x67/0x68 | 携带EAP container |
| SBI接口(AMF-NSSAAF) | HTTP/2 | POST /nnssaaf-nssaa/ | 请求体含eapPayload |
| N33接口(NSSAAF-AAA) | RADIUS/Diameter | EAP-Message AVP | 标准AAA协议 |
Wireshark过滤器示例:
# 过滤NAS MM Transport消息(含NSSAA的EAP消息)
nas-5gs.mm.message_type == 0x67 || nas-5gs.mm.message_type == 0x68
# 过滤SBI接口的NSSAA请求
http2.headers.path contains "nnssaaf-nssaa"
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| EAP Identity Request后无响应 | UE不支持NSSAA或不持有该切片凭证 | 检查UE的NSSAA能力指示(TS 24.501) |
| EAP Challenge超时 | NSSAAF与AAA-S之间N33链路不通 | 检查NSSAAF到AAA-S的IP路由和防火墙 |
| EAP-Failure | 切片租户AAA-S拒绝认证 | 查看AAA-S日志中的认证失败原因码 |
| S-NSSAI被意外拒绝 | AMF未正确处理EAP-Success | 检查AMF中S-NSSAI→Allowed NSSAI更新逻辑 |
| 重认证不触发 | NSSAAF未维护re-auth定时器 | 检查NSSAAF的EAP会话状态管理 |
| ## 九、Rel-18/19增强要点 |
3GPP在Release 18和Release 19对NSSAA进行了多项增强:
SNPN场景支持:Rel-17引入的SNPN(Stand-alone Non-Public Network)与NSSAA结合,允许非公众网络使用NSSAA框架对PLMN用户提供认证(TS 23.501 Section 5.30.2.6)。
NSSAAF与AUSF交互增强:Rel-18允许NSSAAF直接从AUSF获取EAP-AKA'所需的密钥材料,优化了原本需要AAA-S与AUSF分别交互的信令路径。
多种EAP方法扩展:除EAP-AKA'外,增加了对EAP-TLS的完整支持,适应企业证书认证场景。部分Rel-19讨论中引入了对EAP-TEAP(Tunnel EAP)的考虑。
安全保证规范:TS 33.326 V18.0.0定义了NSSAAF的安全保证规范(SCAS),为设备认证提供了安全评估基准。
Q1: NSSAA和主认证可以同时进行吗? A: 不可以。NSSAA是二次认证,必须等主认证(5G-AKA或EAP-AKA')成功完成后再触发。AMF在主认证成功后查询UDM订阅数据,发现某S-NSSAI需要NSSAA时才启动。时间线上是严格的串行关系。
Q2: 如果UE同时请求多个需要NSSAA的切片,信令如何处理? A: AMF可以独立触发多个NSSAA过程(按S-NSSAI分别发起)。标准允许串行或并行,实际部署多为串行以减少信令风暴风险。每个S-NSSAI有独立的EAP会话和认证结果。
Q3: NSSAA失败会影响主认证的成功吗? A: 不会。NSSAA失败只导致对应的S-NSSAI被拒绝(加入Rejected NSSAI),主认证和其他不需要NSSAA的切片不受影响。这是架构分层设计的核心优势。
Q4: AAA-S由谁运营?运营商还是切片租户? A: 取决于部署模式。对于企业私网切片,AAA-S通常由企业租户运营,存放在企业数据中心;运营商通过NSSAAF和可选的AAA-P与租户AAA-S对接。这种模式下,运营商看不到租户的认证凭证,实现了信任域隔离。
Q5: NSSAA增加的时延大约是多少? A: 典型的EAP-AKA' NSSAA过程(1轮Identity+1轮Challenge)大约增加200-500ms信令时延,主要取决于NSSAAF到AAA-S的网络RTT。如果AAA-S部署在企业本地,时延可控制在100ms内;如果AAA-S位于远端云,时延可能超过1秒。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
| GUAMI重分配触发 | 容量超70%自动触发 | 手动触发 | 容量超80%自动触发 | 手动触发 | | AMF Configuration Update频率 | 每5分钟 | 每10分钟 | 每5分钟 | 每15分钟 |
| 维度 | 4G MME选择 | 5G AMF选择 |
|---|---|---|
| 路由依据 | GUMMEI + TAI | GUAMI + S-NSSAI + TAI + PLMN |
| 层级结构 | MME Pool(扁平) | AMF Region → AMF Set → AMF Pointer(三层) |
| 切片感知 | 无 | S-NSSAI驱动的切片路由 |
| 故障恢复 | MME Pool内重选 | AMF Set内无缝切换 + UDSF上下文恢复 |
| 服务发现 | DNS(S1接口) | NRF + 本地配置(NG接口) |
| 重选机制 | S1接口HO/TAU | NSSF查询 + Namf转发 |
| 负载均衡 | DNS权重/round-robin | RelativeAMFCapacity + AMF Pointer |
5G引入AMF Set的核心理念是将"故障恢复"和"负载均衡"从网络层下沉到标识符层——GUAMI本身就包含了路由信息,无需额外的DNS查询或信令交互。这种设计哲学是将路由状态嵌入标识符(State in Identifier),是5G SBA架构中"自包含路由"思想的体现。
运营商在规划AMF Set时面临容量与成本的trade-off:
方案A:大Set(32-64 AMF/Set) - 优势:故障恢复时选择更多,负载均衡更均匀 - 劣势:UE上下文同步开销大,UDSF存储成本高
方案B:小Set(2-4 AMF/Set) - 优势:上下文同步简单,运维成本低 - 劣势:故障恢复选择有限,负载不均风险高
方案C:混合模式(核心区域大Set,边缘小Set) - 优势:按业务密度灵活配置 - 劣势:运维复杂度增加
| 策略 | 适用场景 | 成本 |
|---|---|---|
| 全国集中部署1个NSSF | 小型运营商/虚拟运营商 | 低 |
| 每AMF Region部署NSSF | 中型运营商 | 中 |
| NSSF集群+负载均衡 | 大型运营商(如CMCC) | 高 |
Q1: AMF Set内所有AMF都不可用时,UE会怎样?
A: RAN回退到默认AMF选择机制。如果连默认AMF都无法找到,gNB会向UE返回RRC Release,UE进入空闲态后重试。若反复失败,UE触发PLMN重选。在TS 23.501中,这种情况归类为"AMF Set不可用",需要运维介入修复。
Q2: GUAMI中的AMF Pointer值改变是否意味着AMF重选?
A: 不一定。AMF Pointer在AMF Set内的变化可以通过Configuration Update Command完成,无需完整注册流程。但如果AMF Region ID或AMF Set ID变化,则必须通过完整注册(含AMF重选)流程完成。
Q3: 非3GPP接入(如Wi-Fi)的AMF选择有何不同?
A: N3IWF/TNGF代替gNB执行AMF选择。由于非3GPP接入不通过NGAP,AMF选择通过N2接口上的NWu/IKEv2信令中的IKE SA建立过程完成。N3IWF根据UE的5G-GUTI或S-NSSAI选择AMF,选择逻辑与gNB一致但传输机制不同。
Q4: AMF过载时如何影响AMF选择?
A: 过载AMF通过AMF Overload Start(NGAP)通知gNB。gNB收到后停止向该AMF路由新注册请求,转而选择Set内其他AMF。过载AMF同时可通过Namf_Communication_AMFStatusChangeNotify通知其他NF不再向其转发请求。这与TS 23.501 Section 5.19中定义的"AMF过载控制"机制联动。
Q5: 一个AMF可以属于多个AMF Set吗?
A: TS 23.501规定每个AMF实例在同一时刻只能属于一个AMF Set。但AMF可以通过AMF Configuration Update动态调整其所属Set(运维操作),这意味着AMF Set的成员关系是可变的,但不能重叠。
本文由「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 等场景全覆盖。
