好的,我们继续深入3GPP TS 33.401第七章的探索之旅,现在我们将进入本章乃至整部规范中最为复杂、也最为精妙的部分之一——**切换(Handover)**中的密钥处理。

在前几节中,我们已经掌握了UE在静态和简单状态转换(IDLE/CONNECTED)下的密钥管理。然而,移动通信的精髓在于“移动”。当我们的主角“小明”乘坐高速地铁穿梭于城市时,他的手机可能在短短几分钟内经历数十次基站切换。如何在这闪电般的切换中,保证安全保护无缝衔接、密钥更新万无一失,同时又不能影响他流畅的视频体验?这就是7.2.8节要为我们揭示的“速度与安全”的平衡艺术。

深度解析 3GPP TS 33.401:7.2.8 Key handling in handover (切换中的密钥处理)

本文技术原理深度参考了3GPP TS 33.401 V18.3.0 (2025-03) Release 18规范中,关于“7.2.8 Key handling in handover”的核心章节,旨在为读者深入剖析4G网络中水平与垂直密钥派生机制,以及在Intra-eNB, X2和S1三种不同切换场景下的详细密钥流转过程。

由于本节内容极度重要且细节繁多,我们将首先在7.2.8.1 General (概述)中建立起切换密钥处理的宏观模型,然后再逐一深入到7.2.8.4 Key derivations during handovers所定义的具体场景中。

1. 切换安全的核心模型:密钥链的动态演进 (7.2.8.1 General)

为了在高速切换中避免每次都进行耗时的AKA认证,4G网络设计了一套基于现有安全上下文快速派生新密钥的机制。这个机制的核心,就是一条不断向前滚动的“密钥链”。

规范中的 Figure 7.2.8.1-1 Model for the handover key chaining 完美地展示了这个模型。让我们来详细解读这张图背后的深刻含义。

图中的关键元素

  • KASME: 位于最顶层,是所有密钥的“始祖”,在UE和MME中共享。

  • KeNB (Initial): 初始KeNB,由KASMENAS uplink COUNT派生,是密钥链的第一个环节。

  • NH (Next Hop): “下一跳”密钥,由KASME和前一个KeNBNH派生,仅在UE和MME中共享。

  • NCC (Next Hop Chaining Counter): 一个短计数器(通常是2-3比特),与NH成对出现,用于追踪NH链的更新次数。

  • KeNB*: 切换过程中,由KeNBNH结合目标小区的物理信息(PCI, EARFCN-DL)派生出的一个中间密钥

  • KeNB (Final): 最终在UE和新基站之间使用的新密钥,通常就是KeNB*本身。

两大派生机制:水平 vs. 垂直

这张图揭示了切换中两种核心的密钥派生方式:

  1. 水平密钥派生 (Horizontal Key Derivation)

    if the KeNB* is derived from the currently active KeNB this is referred to as a horizontal key derivation.

    过程新KeNB* ← (旧KeNB, 目标小区PCI, 目标小区频率)

    特点

    • 快速高效:派生过程完全可以在源eNB内部完成,因为它拥有旧的KeNB

    • 适用于X2切换:在两个有直接X2接口的eNB之间切换时,源eNB可以直接计算出KeNB*并安全地发送给目标eNB。

    • 安全性限制:它不具备“前向安全”(Forward Security)。因为源eNB知道了KeNB*,理论上,如果源eNB被攻破,它就有可能推算出后续一系列水平派生出的密钥。

  2. 垂直密钥派生 (Vertical Key Derivation)

    if the KeNB* is derived from the NH parameter the derivation is referred to as a vertical key derivation.

    过程新KeNB* ← (NH, 目标小区PCI, 目标小区频率)

    特点

    • 安全性高NH密钥只存在于UE和MME中,eNB对此一无所知。这意味着即使源eNB被攻破,它也绝对无法计算出基于NH派生出的新密钥。这提供了完美的前向安全性

    • 需要MME介入:因为只有MME拥有NH,所以这种派生必须由MME发起,并将包含NH的安全上下文传递给目标eNB。

    • 适用于S1切换:在两个没有X2接口的eNB之间,或者跨MME切换时,必须通过MME进行信令中转,此时采用垂直派生。

密钥链的滚动

NHNCC的设计,使得垂直派生可以形成一条不断更新的链条。

  1. 初始状态: 建立连接时,MME派生出KeNB(NCC=0)NH(NCC=1)

  2. 第一次S1切换: MME使用NH(NCC=1)来为目标eNB生成新的安全上下文。切换成功后,MME会立刻使用这个NH(NCC=1)来派生出一个新的NH(NCC=2)

  3. 第二次S1切换: MME将使用这个新的NH(NCC=2)

这个过程就像链条一样,一环扣一环,每一环都是基于上一环生成的,并且用完即弃(用于派生下一环),保证了密钥的持续更新和前向安全。

2. 切换中的“大脑”:NAS层的考量 (7.2.8.1.2 Non access stratum)

切换不仅是AS层的“搬家”,有时也会牵动NAS层的“神经”。

At an eNB handover with MME relocation, there is the possibility that the source MME and the target MME do not support the same set of NAS algorithms or have different priorities…In this case, the target MME re-derives the NAS keys from KASME…and sends NAS SMC.

深度解读:当小明乘坐的高铁从A城市(由MME-A服务)进入B城市(由MME-B服务)时,就会发生MME的重新定位(MME relocation)。如果MME-B的算法策略与MME-A不同(比如MME-B更倾向于使用ZUC算法),MME-B在从MME-A接收到KASME之后,会使用自己偏好的算法ID,重新派生出一套KNASint/KNASenc密钥。然后,它会发起一次NAS SMC流程,通知UE更新NAS层的安全算法和密钥。这确保了UE在新的MME下,其NAS安全策略能与新环境保持一致。

3. 具体场景剖析:Intra-eNB, X2, S1 切换 (7.2.8.4 Key derivations during handovers)

现在,让我们跟随小明的脚步,进入三种典型的切换场景,看看密钥链是如何在实践中应用的。

3.1 场景一:楼内移动 - Intra-eNB Handover (同基站内切换 - 7.2.8.4.1)

小明在办公大楼里从一楼走到五楼,虽然他一直连接的是楼顶同一个eNB,但为了优化信号,eNB可能会让他从服务于一楼的扇区(Cell A)切换到服务于五楼的扇区(Cell B)。这就是同基站内切换。

When the eNB decides to perform an intra-eNB handover it shall derive KeNB* as in Annex A.5 using target PCI…and either NH or the current KeNB…

深度解读

  • 决策者:eNB。

  • 派生规则:eNB会检查自己是否持有一个从MME下发的、未被使用过的{NH, NCC}对。

    • 如果存在:eNB会优先使用这个NH进行垂直派生,生成新的KeNB*。这是为了尽快消耗掉NH,并滚动密钥链。

    • 如果不存在:eNB会使用当前的KeNB进行水平派生

  • 信令:eNB在发送给UE的切换命令(HO Command)中,会包含所使用的NCC值(如果是垂直派生)或者只是一个切换指示(如果是水平派生)。UE收到后,会执行与eNB完全相同的派生逻辑,得到一致的新KeNB

3.2 场景二:街区穿梭 - X2 Handover (X2切换 - 7.2.8.4.2)

小明走出办公大楼,沿着街道散步,从eNB-A的覆盖范围进入了邻近eNB-B的覆盖范围。由于这两个基站部署得很近,运营商为它们配置了X2接口。

As in intra-eNB handovers, for X2 handovers the source eNB shall perform a vertical key derivation in case it has an unused {NH, NCC} pair…

Next the source eNB shall forward the {KeNB*, NCC} pair to the target eNB.

深度解读

  1. 源eNB (eNB-A) 的动作

    • 决策并选择派生方式(垂直或水平),逻辑与Intra-eNB切换完全相同。

    • 计算出中间密钥KeNB*

    • 通过安全的X2接口,将{KeNB*, NCC}以及UE的完整AS安全上下文发送给目标eNB(eNB-B)。

  2. 目标eNB (eNB-B) 的动作

    • 直接使用收到的KeNB*作为与UE之间的新KeNB

    • 准备切换命令,并将收到的NCC放入其中,通过源eNB转发给UE。

  3. MME的“后知后觉”更新

    When the target eNB has completed the handover signaling with the UE, it shall send a S1 PATH SWITCH REQUEST to the MME. Upon reception…, the MME shall increase its locally kept NCC value by one and compute a new fresh NH…The MME shall then send the newly computed {NH, NCC} pair to the target eNB…

    深度解读:切换完成后,新的eNB-B会向MME发送一个“路径倒换请求”,告诉MME“现在这个用户归我管了”。MME收到后,才会执行NH密钥链的滚动:它用自己存储的旧NH派生出一个新的NH,并将这个新鲜的{NH, NCC}对发送给eNB-B,以备下一次切换之需。

    • “两跳”前向安全:这个“先切换,后更新NH”的机制,导致了X2切换的安全性被称为“两跳前向安全”。因为在小明从A切换到B的过程中,使用的KeNB*可能是由eNB-A计算的。eNB-B只有在切换完成之后,才能从MME那里获得可用于下一次垂直派生的新鲜NH

3.3 场景三:高铁远行 - S1 Handover (S1切换 - 7.2.8.4.3)

小明乘坐高铁跨市旅行,列车高速行驶,经过的基站之间很可能没有建立X2接口。此时,切换必须通过核心网MME作为“中转枢纽”来完成。

Upon reception of the HANDOVER REQUIRED message the source MME shall increase its locally kept NCC value by one and compute a fresh NH from its stored data…The source MME shall … send it to the target MME…

The target MME shall then send the received {NH, NCC} pair to the target eNB…

Upon receipt of the S1 HANDOVER REQUEST… the target eNB shall compute the KeNB to be used with the UE by performing the key derivation…with the fresh{NH, NCC} pair…

深度解读

  1. MME主导:整个流程由MME主导。源eNB只负责上报切换需求。

  2. NH链的滚动先行:MME收到切换请求后,第一步就是滚动密钥链——计算出一个新鲜的{NH, NCC}

  3. 安全上下文的传递:MME将这个新鲜的{NH, NCC}对,连同KASME(如果跨MME切换)等信息,一起发送给目标eNB(如果同MME切换)或目标MME(如果跨MME切换)。

  4. 目标eNB的动作:目标eNB收到MME发来的{NH, NCC}对后,执行垂直派生,计算出KeNB

  5. 信令:目标eNB将新的NCC值放入切换命令,通过MME和源eNB,最终送达UE。

对比X2切换:S1切换的安全性更高。因为新的KeNB总是基于MME新鲜生成的NH派生而来,源eNB对此一无所知,实现了**“一跳”前向安全**。

3.4 UE的统一行动 (7.2.8.4.4 UE handling)

无论后台是哪种类型的切换,UE侧的行为都是统一和简洁的。

The UE behaviour is the same regardless if the handover is S1, X2 or intra-eNB…If the NCC value the UE received…is equal to the NCC value associated with the currently active KeNB, the UE shall derive the KeNB* from the currently active KeNB… [水平派生]

If the UE received an NCC value that was different…, the UE shall first synchronize the locally kept NH parameter…[然后] compute the KeNB* from the synchronized NH parameter… [垂直派生]

深度解读:UE就像一个经验丰富的士兵,它只认“口令”——切换命令中包含的NCC值。

  • 如果收到的NCC与自己当前KeNB关联的NCC相同,UE就知道这是一次水平派生,于是拿出当前的KeNB来计算。

  • 如果收到的NCC与当前KeNBNCC不同,UE就知道这是一次垂直派生。它会拿出自己存储的NH链,不断地向前滚动(派生新的NH),直到本地的NCC与收到的NCC匹配为止,然后用这个同步好的NH来进行计算。

这套简洁的规则,使得UE无需关心网络侧复杂的切换类型,只需根据NCC这一个简单的信号,就能与网络精确同步,完成密钥的更新。

4. 总结

7.2.8节是4G移动安全设计的精髓所在。它通过一套优雅而强大的密钥链机制,完美地解决了高速移动性与信息安全之间的矛盾。

  • 双模驱动:通过水平派生(eNB主导,快速高效)和垂直派生(MME主导,极致安全)两种模式,网络可以根据不同的切换场景(X2/S1)灵活选择,在性能和安全之间取得最佳平衡。

  • 前向安全NH密钥链的设计,确保了密钥的派生总是“向前看”的,旧的密钥无法推导出新的密钥,极大地增强了系统的长期安全性。

  • UE侧简化:UE的行为被高度简化和统一,仅通过NCC值的变化来判断派生方式,降低了终端实现的复杂度,提高了系统的鲁棒性。

正是这套复杂的“幕后”密钥之舞,才使得小明在飞驰的列车上,能够享受到如丝般顺滑、从未间断且全程加密的视频通话体验。

在下一篇文章中,我们将继续深入第七章的剩余部分,探讨一些特殊的密钥管理场景,如“Key-change-on-the-fly”(动态密钥更换)和RRC连接的“暂停与恢复”,看看规范是如何处理这些更为精细的安全状态转换的。


FAQ 环节

Q1:为什么需要NCC这个计数器?UE和MME直接使用最新的NH不就可以了吗?

A1:NCC是保证UE和MME在NH链上同步的关键。在某些异常情况下,信令可能会丢失。例如,MME完成了一次S1切换,更新了NH链,并将新的{NH, NCC}对发给了eNB,但eNB发给UE的切换命令却丢失了。此时,MME认为NH已经更新到了NCC=3,但UE的NH还停留在NCC=2。如果没有NCC,下一次切换时,MME会用NH(3)派生,而UE会用NH(2)派生,导致密钥不一致。有了NCC,MME会在切换命令中明确告诉UE“请使用NCC=3对应的NH”,UE收到后发现与本地不符,就会主动追赶,将自己的NH链滚动到NCC=3,从而重新达成同步。

Q2:水平派生和垂直派生,哪一种在实际网络中更常用?

A2:水平派生(基于X2切换)在实际网络中更为常用。因为运营商在进行网络规划时,通常会为地理位置邻近、切换关系频繁的基站之间配置X2接口。X2切换完全由eNB之间协商完成,无需MME介入,信令路径短,切换时延极低(通常在几十毫秒),对于保障VoLTE等实时业务的体验至关重要。S1切换则通常发生在基站间距离较远、没有X2接口,或者需要更换MME的情况下,相对X2切换而言频率较低。

Q3:什么是“前向安全”(Forward Security)和“后向安全”(Backward Security)?

A3:这两个是密码学中描述密钥安全性的重要概念。

  • 前向安全:指即使攻击者在某个时间点t破解了系统的主密钥,他也无法解密在t时刻之前的通信内容。在切换场景下,它通常指即使攻击者攻破了当前eNB,也无法推算出UE未来将要使用的密钥。NH机制就提供了这种保障。

  • 后向安全:指即使攻击者在t时刻破解了系统的主密钥,他也无法解密在t时刻之后的通信内容。这通常通过在每次通信后更新密钥来实现。在切换场景下,它指即使攻击者攻破了当前eNB,也无法推算出UE过去使用过的密钥。由于密钥派生是单向的,4G切换本身就具备后向安全性。

Q4:为什么UE需要自己去“滚动”NH链来追赶NCC?MME直接把最新的NH发给UE不是更简单吗?

A4:这是一个关键的安全设计。NH本身是一个高安全等级的密钥,永远不会在空口中明文传输。MME只会把KeNB{NH,NCC}对通过安全的S1接口发送给eNB,而eNB也只会把NCC这个“索引”号通过RRC信令发送给UE。UE和MME之间共享着相同的“密钥生成菜谱”(即KDF和KASME)。UE在拿到NCC这个“菜谱页码”后,可以自己在“厨房”里(USIM或ME安全区)独立地、安全地烹饪出与MME一模一样的NH“菜肴”。直接在空口传输NH会带来巨大的安全风险。

Q5:图中KeNB*的派生除了KeNBNH,还需要目标小区的PCI和频率,这是为什么?

A5:将目标小区的物理参数PCI(Physical Cell ID)和频率(EARFCN-DL)作为密钥派生的输入,是为了实现密钥与特定小区的绑定。这可以防止一种“切换重定向”攻击。假设eNB-A命令UE切换到eNB-B,并计算了发往B的KeNB*。如果一个攻击者能冒充eNB-B,但他所在的物理位置(即小区C)的PCI与B不同,那么UE到达C后,使用C的PCI派生出的KeNB将与网络侧计算的不一致,导致连接建立失败。这增加了攻击者伪造切换目标的难度,确保了UE切换到了网络指定的、正确的物理位置。