深度解析 3GPP TS 33.501:6.2.3 密钥的管理艺术 (标识、激活与生命周期)
本文技术原理深度参考了3GPP TS 33.501 V18.9.0 (2025-03) Release 18规范中,关于“6.2.3 Handling of user-related keys”的核心章节,旨在为读者深入剖析5G密钥在生成之后,是如何被精确地标识、安全地激活并进行严格的生命周期管理的。
在上一篇文章中,我们共同见证了5G安全“信任之树”的构建过程。我们了解了从唯一的根密钥K开始,如何通过一系列严谨的派生函数,生成了覆盖核心网和接入网的层层密钥。然而,仅仅“铸造”出这些数字钥匙是远远不够的。想象一下,锁匠为你打造了一套新钥匙,你需要一个安全可靠的流程来“更换门锁”,并为新钥匙贴上“标签”,同时明确规定了什么时候应该再次更换。
今天,我们将深入探讨规范的6.2.3节——用户相关密钥的处理。这一节正是这套“数字钥匙”的管理手册。它将告诉我们:
- 密钥设置 (Key Setting):新生成的密钥是如何被安全地“激活”并投入使用的?这个“交接仪式”是怎样的?
- 密钥标识 (Key Identification):当手机和网络可能同时拥有新旧两套密钥时,它们是如何精确识别并使用正确的那一套的?
ngKSI这个神秘的“标签”扮演了什么角色? - 密钥生命周期 (Key Lifetimes):一套核心密钥是在哪些特定的“创生”时刻被创造出来的?
我们的工业主角,AGV“智行一号”,已经成功通过了主认证,一套全新的密钥(K_AMF, K_gNB等)已经在它的“大脑”(ME)和网络侧(AMF, gNB)中悄然生成。现在,是时候将这些新密钥“投入使用”了。让我们跟随核心网工程师“李工”的视角,看看这场发生在毫秒之间的、精确的“安全换防”是如何进行的。
1. 6.2.3.1 密钥设置 (Key setting) - 安全的“交接仪式”
密钥的派生和密钥的激活是两个独立的步骤。新密钥派生出来后,并不会立即生效,而是处于“待命”状态。激活这套新密钥,需要一个明确的、受保护的信令流程,这就是密钥设置 (Key setting)。
Key setting happens at the end of successful authentication procedure. … A successful run of 5G AKA or EAP AKA’ results in a new KAMF that is stored in the UE and the AMF with a new partial, non-current security context. NAS keys (i.e. KNASint and KNASenc) and AS keys (i.e. KgNB, KRRCenc, KRRCint, KUPenc, KUPint) are derived from KAMF… The NAS keys derived from the new KAMF are taken in use in the AMF and the UE by means of the NAS security mode command procedure (see sub-clause 6.7.2). The AS keys are taken into use with the AS security mode command procedure (see sub-clause 6.7.4)…
解读: 密钥设置是一个精心编排的“两步走”激活流程,分别在NAS层和AS层进行。
-
NAS层密钥激活:由AMF发起。在主认证成功后,AMF和UE都拥有了新的
K_AMF,但此时通信可能还在使用旧的安全上下文。AMF会发起NAS安全模式命令(NAS Security Mode Command, SMC)流程。这个流程的核心是,AMF使用新的NAS完整性密钥K_NASint_new来保护SMC命令消息。UE收到后,也派生出新的NAS密钥,并用K_NASint_new来验证该消息的完整性。验证成功,UE就知道AMF也拥有了正确的新密钥,于是发送一个同样受新密钥保护的NAS SMC Complete消息作为回应。这个“握手”完成后,双方就正式切换到使用新的NAS密钥来保护后续的所有NAS信令。 -
AS层密钥激活:由gNB发起。在NAS安全建立之后,或者在UE从空闲态进入连接态需要建立无线承载时,AMF会将
K_gNB下发给gNB。gNB随后会发起AS安全模式命令(AS Security Mode Command)流程。与NAS SMC类似,gNB使用新的RRC完整性密钥K_RRCint_new(派生自K_gNB)来保护AS SMC命令。UE验证通过后,回复一个受新密钥保护的AS SMC Complete。此后,UE和gNB之间的所有RRC信令和用户数据都将使用这套新的AS密钥进行保护。
场景代入:
“智行一号”认证成功,李工的AMF和“智行一号”的ME中都生成了新的K_AMF。
- 李工的AMF立即行动,它派生出新的
K_NASint和K_NASenc,然后向“智行一号”发送了一条NAS SMC消息,并用新的K_NASint进行了签名。消息内容是:“从现在起,我们开始使用编号为X的新密钥集!” - “智行一号”收到后,也从自己的新
K_AMF派生出新的NAS密钥,验证签名无误,确认指令来自合法的AMF。它回复道:“收到,已切换至X号密钥集!” - 随后,AMF将
K_gNB发给基站。基站也向“智行一号”发起了一个类似的AS SMC流程,激活了无线链路上的新密钥。 这个完整的“交接仪式”,确保了密钥的切换过程本身是安全的、同步的,且不可被攻击者干扰。
2. 6.2.3.2 密钥标识 (Key identification) - ngKSI,每一套信任的唯一“编号”
在复杂的移动网络中,UE和AMF可能需要同时管理多套安全上下文。例如,在从4G切换到5G后,UE可能同时拥有一个来自4G的“映射”安全上下文和一个新生成的5G“原生”安全上下文。当UE从休眠中醒来,它如何告诉网络“请用上次那套5G的原生密钥来跟我说话”?这就需要一个唯一的标识符。
The key KAMF shall be identified by the key set identifier ngKSI. ngKSI may be either of type native or of type mapped. An ngKSI shall be stored in the UE and the AMF together with KAMF and the temporary identifier 5G-GUTI, if available.
ngKSI (Key Set Identifier in 5G),就是这套密钥的“身份证号”或“钥匙串标签”。它是一个非常短的数值(3比特),与一个特定的K_AMF强绑定。
2.1 ngKSI的两种类型
A native ngKSI is associated with the KSEAF and KAMF derived during primary authentication. It is allocated by the SEAF… A mapped ngKSI is associated with the KAMF derived from EPS keys during interworking… It is generated in both the UE and the AMF respectively…
-
原生
ngKSI(Native ngKSI):当UE通过一次完整的5G主认证(5G AKA或EAP-AKA’)生成一套全新的安全上下文时,SEAF会分配一个新的ngKSI值。这个ngKSI代表着这套密钥是“根正苗红”的5G原生密钥。 -
映射
ngKSI(Mapped ngKSI):当UE从4G网络移动到5G网络时,为了实现快速切换,5G安全上下文会从4G的EPS安全上下文“转换”而来(K_AMF由K_ASME派生)。此时,UE和AMF会根据4G的密钥标识符eKSI,共同计算出一个ngKSI值,并标记其类型为“映射”。这告诉网络,当前的这套密钥并非原生5G密钥,而是从4G“继承”而来的。
2.2 ngKSI的特殊值与作用
The value ‘111’ is reserved to be used by the UE to indicate that a valid KAMF is not available for use.
-
特殊值
111:规范保留了111这个值作为一个特殊的信号。当UE没有任何有效的安全上下文(例如,刚开机或之前的上下文已失效)时,它会在初始注册消息中将ngKSI设置为111。AMF看到这个值,就知道这是一个“新人”,必须立即为它发起一次完整的主认证流程。 -
核心作用:快速上下文恢复。
ngKSI的最大作用在于UE从空闲态(CM-IDLE)返回连接态(CM-CONNECTED)时。UE会在Service Request消息中带上它之前存储的ngKSI。AMF收到后,就可以用这个ngKSI作为索引,在自己的数据库中快速查找到对应的K_AMF,从而立即恢复安全通信,而无需再次进行耗时的主认证。
场景代入:
“智行一号”在完成一次搬运任务后,进入了省电的空闲模式。AMF和它都保存了刚刚生成的那套密钥,其ngKSI为0x3。
一小时后,新的任务来了。“智行一号”被唤醒,它向网络发送了一条Service Request消息,其中包含了它的临时身份GUTI和密钥集标识ngKSI=0x3。
AMF收到消息,通过GUTI找到了“智行一号”之前的记录,然后根据ngKSI=0x3,从数据库中精准地提取出了对应的K_AMF。AMF立即用这个K_AMF验证了Service Request消息的完整性。验证通过,网络连接迅速恢复,“智行一号”又可以开始工作了。整个过程仅需几十毫秒。
3. 6.2.3.3 密钥生命周期 (Key lifetimes) - 信任的“创生”时刻
这一节从生命周期的角度,再次强调了核心密钥是在哪些特定的、严格定义的时刻被创建的。这确保了密钥的来源是可追溯的,其生命周期是可管理的。
KAUSF, and KSEAF shall be created when running a successful primary authentication as described in clause 6.1.3.
K_AUSF和K_SEAF的创生:这两个处于密钥链顶端的密钥,只在且必须在一次成功的主认证过程中被创建。这是它们唯一的合法来源。
KAMF shall be created in the following cases:
- Primary authentication
- NAS key re-keying as described in clause 6.9.4.2
- NAS key refresh as described in clause 6.9.4.3
- Interworking procedures with EPS (cf. clauses 8 and 10)
K_AMF的四大创生时刻:- 主认证:这是最根本的来源,从
K_SEAF派生而来。 - NAS密钥重发(Re-keying):当UE切换到新的AMF时,旧AMF可能会基于旧
K_AMF为新AMF派生出一个新的K_AMF',这是一种水平派生,也是一次K_AMF的创建。 - NAS密钥刷新(Refresh):为了主动增强安全性(例如,防止NAS COUNT计数器回绕),AMF可能会在不改变
K_AMF的情况下,强制进行一次新的密钥派生,但这通常会触发新的认证。更常见的做法是通过水平派生一个新的K_AMF。 - 互通流程(Interworking):当UE从4G移动到5G时,新的“映射”
K_AMF会从4G的K_ASME派生而来。
- 主认证:这是最根本的来源,从
场景代入:
李工正在对网络进行安全审计,他需要追溯“智行一号”当前K_AMF的来源。通过查询日志,他可以清晰地看到:
06:05:33:由于主认证成功,从K_SEAF派生出K_AMF(ngKSI=0x3)。08:30:15:由于“智行一号”移动到由另一个AMF-02覆盖的区域,AMF-01基于K_AMF(ngKSI=0x3)水平派生出新的K_AMF'(ngKSI=0x4),并将其传递给AMF-02。10:15:00:由于“智行一号”进入了一个只能连接4G(EPC)的区域,K_AMF(ngKSI=0x4)被用来派生出4G的K_ASME。10:25:00:“智行一号”又回到了5G区域,此时,之前的K_ASME被用来派生出一个新的“映射”K_AMF(ngKSI类型为mapped,值为0x5)。
通过ngKSI和日志,每一代密钥的“前世今生”都变得清晰可查。
4. 总结
本篇文章我们深入解读了6.2.3节,揭示了5G密钥在生成之后的管理艺术。这套机制将抽象的密钥体系,与实际的网络流程紧密地结合在一起。
- 密钥设置 (Key Setting):通过**SMC(安全模式命令)**这一受保护的“握手”流程,实现了从旧密钥到新密钥的安全、同步的切换,这是一场严谨的“交接仪式”。
- 密钥标识 (Key Identification):通过**
ngKSI**这个唯一的“标签”,使得UE和网络能够在可能存在多个安全上下文的情况下,高效、无歧义地识别和恢复正确的安全会话,极大地提升了移动效率。 - 密钥生命周期 (Key Lifetimes):通过严格定义
K_AMF等核心密钥的四大创生时刻,确保了密钥的来源合法、可追溯,为整个安全体系的动态管理和审计提供了坚实的基础。
掌握了密钥的生成、分发、激活、标识和生命周期管理,我们便掌握了5G安全体系运作的核心脉络。这套精密的机制,共同保证了像“智行一号”这样的设备,在复杂多变的移动网络环境中,始终能够处于最高级别的安全保护之下。
FAQ
Q1:NAS SMC和AS SMC有什么本质区别?为什么需要分开进行?
A1:本质区别在于管理主体和保护对象不同。NAS SMC由AMF发起,用于激活保护UE和AMF之间核心网信令(NAS)的密钥。AS SMC由gNB发起,用于激活保护UE和gNB之间**无线侧通信(RRC信令和用户数据)**的密钥。分开进行是因为它们属于不同的安全域和协议层。NAS安全是UE和核心网之间的端到端安全,与UE当前接入哪个基站无关。而AS安全是UE和当前服务基站之间的链路安全。必须先建立更高级别的NAS安全(确认了UE与核心网的信任关系),AMF才能放心地将AS密钥(K_gNB)下发给gNB,再由gNB去建立AS安全。
Q2:ngKSI只有3比特,最多只能表示7个密钥集(111被保留),这够用吗?
A2:在绝大多数情况下是够用的。UE和AMF通常只需要同时维护少量的安全上下文。例如:一个当前的current上下文,可能还有一个来自上次认证的non-current原生上下文,以及一个可能的mapped上下文。3比特提供的7个索引值足以区分这些有限的上下文。当ngKSI的值循环使用时,与之关联的更高层级的安全参数(如GUTI中的AMF标识)通常已经改变,从而避免了混淆。这是一种在信令开销和功能需求之间的有效平衡。
Q3:为什么从4G迁移到5G时,要生成一个“映射”的ngKSI,而不是直接发起一次新的5G主认证来获得“原生”ngKSI?
A3:这是为了效率和无缝体验。主认证是一个相对耗时(涉及与归属网络的多次往返通信)和消耗资源的过程。在4G/5G频繁互操作的场景下,如果每次跨系统移动都进行主认证,会严重影响用户体验,可能导致业务中断或卡顿。通过从现有的4G安全上下文直接“映射”出一个5G安全上下文,整个过程可以在服务网络内部快速完成,实现了近乎无缝的切换。而“映射”这个标记,又提醒了网络这套密钥的“出身”,网络可以在后续空闲时,根据策略决定是否需要发起一次主认证来将其“转正”为一个原生上下文。
Q4:KAMF的“水平派生”(Horizontal Key Derivation)是什么意思?它和从KSEAF派生的“垂直派生”有什么不同?
A4:“垂直派生”指的是从一个更高层级的密钥派生出一个低层级的密钥,如K_SEAF → K_AMF。这个过程是“向下”的,不可逆。“水平派生”指的是从一个密钥,派生出另一个同层级的新密钥,如K_AMF → K_AMF'。这通常发生在UE从一个AMF切换到另一个AMF时。源AMF使用旧的K_AMF和一些变化参数(如目标AMF的ID),为目标AMF计算出一个新的K_AMF'。这样做的好处是,目标AMF可以直接获得一个有效的K_AMF,而无需再向上追溯到K_SEAF或重新认证,实现了AMF间的快速安全上下文传递。
Q5:如果UE丢失了ngKSI(比如异常重启),会发生什么?
A5:如果UE因为异常重启等原因丢失了包括ngKSI在内的所有安全上下文,它就会回到“出厂状态”。当它再次尝试连接网络时,它会发现自己没有任何有效的K_AMF和ngKSI。根据规范,此时它会在Registration Request消息中,将ngKSI设置为保留值**111。当AMF收到这个ngKSI=111的请求时,它会立刻明白这个UE没有任何可用的安全上下文,于是会立即启动一次完整的主认证流程**,为UE重新建立一套全新的安全上下文,并分配一个新的ngKSI。