在 5G 系统的安全链路中,主认证(5G-AKA / EAP-AKA')只是产出了根密钥 K_AUSF 并经 KDF 推演出 K_AMF,但这一系列密钥此时还"躺在抽屉里"没有真正使用。真正把 K_AMF 激活、把算法选定、把 NAS 信令通道置入加密+完整性保护状态的,正是 NAS 安全模式控制(Security Mode Control, SMC)流程。
根据 3GPP TS 24.501 §4.4.2.5「建立 NAS 消息的安全交换」明确规定:"通过 NAS 信令连接安全交换 NAS 消息通常由 AMF 在注册过程中通过启动安全模式控制程序来建立。成功完成安全模式控制程序后,UE 和 AMF 之间交换的所有 NAS 消息都将使用当前的 5G 安全算法进行完整性保护……所有 NAS 消息都将使用当前的 5G 安全算法进行加密。"
简言之,SMC 是 5G 安全状态机的"激活开关",它完成三件事:
ngKSI 标识当前使用的密钥集(native 或 mapped),将 K_AMF 派生出的 K_NASenc / K_NASint 装载到 NAS 协议栈;ABBA(Anti-Bidding down Between Architectures)参数,防止攻击者把 UE 诱导降级到更弱的 EPS 安全域。需要特别强调:NAS SMC 是一条"半保护"的临界消息——它本身只做完整性保护、不加密(因为 UE 尚未装载加密算法的下行解密能力),而它之后的 SECURITY MODE COMPLETE 才是第一条既加密又完整保护的 NAS 消息。理解这一临界性是排错的关键。
sequenceDiagram
autonumber
participant UE
participant gNB as gNB (RRC)
participant AMF
note over UE,AMF: 前置:5G-AKA 主认证完成,K_AMF 已就绪
UE->>gNB: Initial NAS message(明文)<br/>Registration Request<br/>含 UE security capability
gNB->>AMF: NGAP Initial UE Message(透传)
Note over AMF: 1. 校验 UE 安全能力<br/>2. 选定 NEA/NIA 算法<br/>3. 派生 K_NASenc/K_NASint<br/>4. 分配 ngKSI
AMF->>UE: SECURITY MODE COMMAND<br/>(仅完整性保护, 未加密)<br/>Selected NAS security algo<br/>+ Replayed UE sec capability<br/>+ ngKSI + ABBA
Note over UE: 校验回显能力=自身能力<br/>校验 ABBA<br/>装载算法与密钥
UE->>AMF: SECURITY MODE COMPLETE<br/>(加密+完整性保护)<br/>含 IMEISV(可选) + 初始消息 MAC
Note over UE,AMF: NAS 安全通道正式建立<br/>后续所有 NAS 消息加密+完整性保护
AMF->>UE: Registration Accept (已加密保护)
很多人会把 5G NAS SMC 简单等同为 EPS 的 SMC,这是误读。5G 在此环节做了三处关键增强:
增强一:初始 NAS 消息的部分完整性保护。 在 EPS(TS 24.301)中,初始 Attach Request 是完全明文、完全无保护的,攻击者可篡改 UE 能力位实施降级。5G 引入了对初始 NAS 消息的"延迟完整性保护"——UE 在 SECURITY MODE COMPLETE 中带上对那条明文初始消息计算的 NAS-MAC(封装在 NAS message container 中),AMF 收到后回算校验。这一机制堵住了 4G 时代著名的"初始消息篡改"攻击面。
增强二:ABBA 反降级参数。 4G 只能针对"算法降级"防护(通过 capability 回显),却无法防御"架构降级"——即攻击者诱导 UE 从 5G 退到 4G。ABBA 由网络下发,UE 本地校验其值是否大于或等于 UE 内部记录的最小集合,不满足则拒绝。详见 TS 33.501 §6.7。
增强三:ngKSI 的 native/mapped 区分。 4G 的 KSI 只有 0–6 取值,5G 的 ngKSI 还额外编码"密钥来源"(native 直接来自 5G 认证 / mapped 由 EPS 映射而来),便于在 N26 互通过程中正确管理两套安全上下文。
这是 SMC 流程的核心控制消息,TS 24.501 §8.2 中定义其关键 IE 如下:
| IE 名称 | 是否必选 | 作用 | 编码要点 |
|---|---|---|---|
| Extended protocol discriminator | M | 标识 5GMM | 区分 SM/ MM 消息 |
| Security header type | M | 标识完整性保护、未加密 | 取值标明"integrity protected" |
| Message type | M | SECURITY MODE COMMAND | 枚举值 |
| Selected NAS security algorithm | M | 选定 NEA + NIA | 1 字节,type 4,高4位完整性/低4位加密(或反之,按TS编码) |
| ngKSI | M | 标识密钥集 | 0–6,含 native/mapped 标志 |
| Replayed UE security capability | M | 回显 UE 上报的算法能力 | NEA/NIA bit map,防止篡改 |
| ABBA | M | 反架构降级 | 长度 + 内容,内容值随网络部署递增 |
| Additional 5G security information | O | 紧急呼叫相关 | 含 RG 等子字段 |
| IMEISV request | O | 请求设备身份 | SM Complete 中带回 |
graph TD
A[SECURITY MODE COMPLETE] --> B["Security header: 加密+完整性保护<br/>首条受全保护NAS消息"]
A --> C[IMEISV 携带, 网络请求时]
A --> D["NAS message container<br/>含初始NAS消息的MAC校验值"]
A --> E[5GMM cause: 仅Reject带]
D --> D1["对明文 Registration Request<br/>计算NAS-MAC"]
D --> D2[AMF回算并比对]
D2 --> D3{匹配?}
D3 -->|否| F["判定初始消息被篡改<br/>拒绝/去注册"]
D3 -->|是| G[初始消息合法性确认]
style B fill:#d4edda,stroke:#28a745
style D fill:#fff3cd,stroke:#ffc107
SMC COMPLETE 的两个特殊价值:第一,它是第一条真正加密的 NAS 消息,UE 此时已装载 NEA 算法;第二,它可选携带 IMEISV,完成设备身份核查——这是 5G 反盗窃、反伪基站的重要一环(详见 TS 23.502 注册流程中的 Equipment Identity Check)。
当 UE 无法接受 AMF 选定的算法或安全参数时,回送 Reject,携带 5GMM cause(TS 24.501 §9.11.3.2)。常见原因值:
实际网络中,Reject 最常见的诱因是算法能力不匹配:例如 UE 只支持 NEA2/NIA2,而 AMF 因策略强制选择 NEA3,或反向 AMF 错误地回退到 NEA0。
5G 定义了 8 个核心安全算法(TS 33.501 Annex A/B),NAS 层使用其中前缀为 N 的版本:
| 算法 | 类型 | 基础密码原语 | 用途 |
|---|---|---|---|
| NEA0 / NIA0 | Null | 无 | 仅紧急未认证会话 |
| NEA1 / NIA1 | 128-bit | SNOW 3G | 加密/完整性 |
| NEA2 / NIA2 | 128-bit | AES-CTR / AES-CMAC | 加密/完整性(最广泛部署) |
| NEA3 / NIA3 | 128-bit | ZUC | 加密/完整性 |
算法选择原则(TS 33.501 §5.1.x):AMF 在 UE 上报能力 ∩ 网络策略支持的算法集合中,按"非空算法优先于空算法、高位算法优先于低位"选取。NEA0/NIA0 只允许用于未认证的紧急呼叫,正常注册若被选到 Null 算法,UE 应在完成紧急注册后视为受限。
抗降级的关键——ABBA:ABBA 不是算法选择,而是"安全域版本号"。其值为一个集合,UE 维护本机支持的最小 ABBA 集合。若网络下发的 ABBA 未覆盖 UE 要求的最小集合,UE 判定为降级企图。这一机制在 GSMA 安全研究《Never let me down again: Bidding-Down Attacks》中被证实可有效阻断 5G↔4G 互操作降级链。
ngKSI(5G key set identifier)虽只有 3 比特,却是安全上下文管理的核心索引。它的取值语义:
理解 native/mapped 的区别对排查 N26 切换场景至关重要:当 UE 从 EPS 切到 5GS 且使用单注册模式时,AMF 通过 mapped 密钥建立临时安全上下文,此时 SMC 选定的 ngKSI 带 mapped 标志,后续 UE 重新执行 5G-AKA 后才会升级为 native。
stateDiagram-v2
[*] --> 无安全上下文: ngKSI=7
无安全上下文 --> 主认证中: 发起 Registration
主认证中 --> 上下文待激活: K_AMF就绪
上下文待激活 --> NAS安全激活: 收到SMC, 校验通过
NAS安全激活 --> NAS安全激活: AS SMC独立激活用户面
NAS安全激活 --> 无安全上下文: Deregistration/超时
NAS安全激活 --> 上下文待激活: 重新认证 re-auth<br/>ngKSI递增
note right of NAS安全激活
SMC后所有NAS消息:
完整性保护(MANDATORY)
加密(除明文白名单)
end note
SMC 流程"激活"的本质,是用 K_AMF 通过 KDF 推演出 NAS 专用密钥并装载(TS 33.501 §6.4、§6.6):
K_NASenc = KDF(K_AMF, 0x69 || NN || ...) —— NAS 加密密钥K_NASint = KDF(K_AMF, 0x6E || NN || ...) —— NAS 完整性密钥其中 NN 是算法区分参数(区分 enc/int),KDF 输入还包含 SNPN/Serving Network 标识,确保不同网络派生出的密钥相互隔离。
需要与已介绍的「密钥层级树」相区分:本文聚焦的是 K_AMF 这一层向横向(NAS enc/int)的派生与激活,而密钥层级树讲的是从 K 到 K_SEAF、K_AMF、再到 K_gNB/K_NAS 的纵向树状结构。两者是同一棵树的不同切面。
在 Wireshark / TShark 过滤器中:
nas_5gs.mm.message_type == 93(SECURITY MODE COMMAND)、94(COMPLETE)、95(REJECT);Security header type 应为 "Integrity protected"(不含 ciphered 标志),而 COMPLETE 应为 "Integrity protected and ciphered"。如果 COMMAND 被标记为加密,说明抓包侧或网络侧实现异常。Selected NAS security algorithm 字段,确认 NEA/NIA 编号;展开 Replayed UE security capability 与注册请求中的 UE 能力做逐 bit 比对。| 故障现象 | 根因 | 排错思路 |
|---|---|---|
| UE 回送 SMC REJECT | 算法能力不匹配 / ABBA 校验失败 | 比对回显能力与 UE 上报;检查 AMF 算法策略与 ABBA 配置 |
| SMC COMPLETE 解不开(MAC-I 错误) | 密钥派生输入不一致 / K_AMF 错误 | 排查主认证是否真正成功、KDF 的 serving network 输入 |
| 注册卡在 SMC 不完成 | AS 安全未就绪 / RRC 容器丢失 | 确认 AS SMC 已执行,gNB 已下发 AS 安全算法 |
| 紧急呼叫使用了 NEA0 | 未认证紧急会话 | 属正常策略,非故障;但需核查是否被滥用 |
| ## 八、5G NAS SMC 与 EPS SMC 对比 |
| 维度 | EPS NAS SMC (TS 24.301) | 5G NAS SMC (TS 24.501) |
|---|---|---|
| 密钥基础 | KASME | K_AMF |
| 密钥集标识 | KSI (0–6) | ngKSI (0–6, native/mapped) |
| 初始消息保护 | 完全明文无保护 | SM COMPLETE 中带初始消息 MAC |
| 防架构降级 | 无 | ABBA 参数 |
| 算法前缀 | EEA/EIA | NEA/NIA |
| SUCI 隐私 | SUPI 明文 | 注册前 SUCI 加密(SIDF) |
Q1: SMC COMMAND 为什么只完整性保护而不加密?
A: 因为此时 UE 尚未装载所选加密算法的下行解密能力——算法正是在这条消息中刚被通告的。若加密下发,UE 无法解密读取。完整性保护用的是当前已有的 K_NASint(可对明文计算 MAC),不依赖算法协商完成,因此可行。
Q2: ngKSI 的 native 和 mapped 到底什么区别? A: native 表示密钥直接来自 5G 本域的 5G-AKA/EAP-AKA' 认证(K_AMF 由 K_SEAF 派生);mapped 表示密钥由 EPS 的 KASME 通过 KDF 映射而来,仅在 N26 单注册模式跨系统移动时临时使用,安全性略低于 native,后续应触发重认证升级。
Q3: UE 如何防御算法降级攻击? A: 三重防线:① Replayed UE security capability 回显校验,确保 UE 上报的能力未被中间人篡改;② 不接受低于本机最低要求的算法;③ ABBA 参数防架构降级。三者结合使 NAS SMC 具备端到端的降级防护。
Q4: Security Mode Reject 后 UE 会做什么? A: UE 进入去注册相关处理,通常 abort 当前注册尝试,根据 cause 决定是否回退到紧急注册(仅紧急服务)或回到 RM-DEREGISTERED 状态等待重试。AMF 侧应记录告警,因为正常 UE 不应拒绝合法算法协商。
Q5: NAS SMC 与 AS SMC 是什么关系?
A: 两者独立。NAS SMC(AMF↔UE,TS 24.501)保护 NAS 信令;AS SMC(gNB↔UE,TS 38.331 RRC)保护空口 RRC 与用户面。NAS SMC 通常先完成,随后 AMF 通过 NGAP 触发 gNB 执行 AS 安全激活,建立 K_gNB 派生的空口密钥。
本文由「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 等场景全覆盖。
