深度解析 3GPP TS 33.512:4.2.2.3 Security Mode Command & Replay Protection (安全模式与重放攻击防御)

本文技术原理深度参考了3GPP TS 33.512 V18.2.0 (2024-06) Release 18规范中,关于“4.2.2.3 Security mode command procedure”及其子章节“4.2.2.3.1 Replay protection of NAS signalling messages”的核心内容。本文将聚焦于5G网络如何抵御一种阴险而常见的攻击——重放攻击,并揭示其核心防御机制。

引言:昨日重现的“幽灵信令”

在之前的测试中,工程师李工已经验证了“先锋通信”的AMF在处理认证失败、重定向和完整性校验失败等场景下的表现。用户小敏的手机与AMF之间,一条经过加密和完整性保护的“装甲信道”已经成功建立。然而,一个狡猾的攻击者,即使无法破解信道内容,也可能发起一种被称为“重放攻击”(Replay Attack)的阴谋。

想象一下,攻击者在小敏的手机正常上网时,录下了一段她与网络之间的合法加密通信。这段通信就像一张“一次性门票”。攻击者虽然不知道门票上的具体内容,但他可以在稍后的时间,将这张“录音”原封不动地“播放”给网络。如果网络的安全机制存在漏洞,它可能会误以为这是用户发起的一次新的、合法的请求,从而执行一个非预期的操作,比如重复扣费、断开连接、或无故唤醒休眠的设备导致电量耗尽。

今天,李工就要扮演这个“时间旅行的窃贼”,对AMF发起“Déjà Vu”(昨日重现)攻击。他要验证的是,AMF是否具备识别并丢弃这些“幽灵信令”的能力,确保每一个合法的指令都只能被执行一次。

1. 核心机制:不可逆转的“数字时间戳”——NAS COUNT

要抵御重放攻击,关键在于让每一条消息都具有唯一性时序性。3GPP为此设计了一个简单而高效的机制——NAS序列号 (NAS Sequence Number),通常被称为NAS COUNT

NAS COUNT可以被理解为一个在UE和AMF之间同步维护的、不断递增的“消息计数器”或“数字时间戳”。它的工作原理如下:

  • 同步维护:在UE的USIM卡和AMF的核心网上下文中,都为每个建立的NAS安全上下文维护着一个独立的NAS COUNT。它包含上行计数器(Uplink COUNT)和下行计数器(Downlink COUNT)。

  • 严格递增:每发送一条新的NAS消息,发送方(UE或AMF)都会将相应的计数器加一,并将这个新的NAS COUNT值包含在消息中。

  • 窗口校验:接收方在收到消息后,会将其中的NAS COUNT值与自己本地存储的期望值进行比较。只有当收到的NAS COUNT严格大于上一个成功校验的值时,该消息才被认为是“新鲜的”、合法的。

  • 拒绝旧票:如果收到的NAS COUNT小于或等于本地存储的值,接收方就会判定这是一次重放攻击(或者是一个因网络延迟导致的乱序旧包),并必须丢弃这条消息。

这个NAS COUNT机制,就如同电影院检票员在每张票上打的那个小孔,确保了每张票只能使用一次。

2. 规范解读:AMF不可推卸的“检票”责任

TS 33.512中的要求虽然简洁,但其背后是对整个NAS COUNT机制的强制性要求。AMF作为网络侧的守门人,是这个机制的关键执行者。

规范原文 4.2.2.3.1 Requirement Description:

“The AMF supports integrity protection and replay protection of NAS-signalling as specified in TS 33.501, clause 5.5.2.”

深度解析:

这句话虽然只是对TS 33.501的一个引用,但它赋予了AMF一项基本且强制的安全职责。李工知道,这意味着“先锋通信”的AMF产品必须完整、正确地实现以下功能:

  1. 为每个UE的安全上下文维护NAS COUNT:AMF必须在内存或数据库中,为每一个激活了NAS安全的UE,准确地存储和更新其上行和下行NAS COUNT

  2. 校验所有上行消息的COUNT:对于每一条收到的、受完整性保护的上行NAS消息,AMF的安全模块都必须执行NAS COUNT的校验。

  3. 对重放消息执行丢弃策略:一旦校验失败,即检测到NAS COUNT是旧的或重复的,AMF必须按照“零容忍”原则,立即丢弃该消息,且不向上层应用或协议栈传递。

3. 测试场景:李工的“幽灵信令”注入实验

李工将模拟一次经典的重放攻击,目标是整个安全通道建立过程中最关键的确认消息——Security Mode Complete。如果这条消息能被重放并被接受,可能会导致AMF的状态机混乱。

  • 场景设置

    1. 李工的测试环境由UE模拟器、被测AMF和一个强大的网络分析仪组成。

    2. 他将配置UE模拟器,扮演刚刚开机的小敏手机,发起一次全新的5G注册。

  • 执行步骤

    1. 正常流程与捕获:

      • UE模拟器和AMF按部就班地完成了认证流程。

      • AMF向UE发送Security Mode Command,要求激活NAS安全。

      • UE模拟器正确响应,激活密钥,并发送了第一条受完整性保护和加密的消息——Security Mode Complete。这条消息携带了一个初始的、新鲜的NAS COUNT(例如,COUNT_A)。

      • 【关键动作】:李工的网络分析仪如同一个潜伏的“间谍”,在N1接口上捕获并保存了这条合法的Security Mode Complete消息的完整比特流。

    2. 发起重放攻击:

      • 网络正常运行,小敏的手机(UE模拟器)已经注册成功,甚至可能在进行数据传输。

      • 几秒钟后,李工启动他的“重放工具”,将刚刚捕获的那条Security Mode Complete消息(携带着旧的NAS COUNT_A原封不动地再次发送给AMF。

    3. 观察与裁决:

      • 【关键观测点】:李工全神贯注地盯着AMF的行为。他要看:

        • AMF是否会向UE回送任何与这个重放消息相关的响应?

        • AMF是否会向其他核心网元(如SMF, AUSF)发起任何异常的交互?

        • AMF的内部日志是否记录了这次重放攻击事件?

        • UE的注册状态和PDU会话是否受到了干扰?

  • 预期结果

    一个符合规范的AMF在收到这条“幽灵信令”后,其行为应该如下:

    1. AMF的NAS安全层接收到消息,解密(如果加密了)并准备进行完整性校验。

    2. 在校验MAC之前或之后,它会检查消息中的NAS COUNT_A

    3. 此时,AMF本地存储的该UE的上行NAS COUNT期望值已经因为后续的通信(即使没有,也至少是COUNT_A + 1)而更新了。AMF发现收到的COUNT_A不大于本地期望值。

    4. AMF立即判定这是一次重放,并立即丢弃该消息

    5. 最终,李工在测试平台上观测到的现象是:一片寂静。AMF没有向UE或任何其他网元发送任何消息。小敏手机的连接状态稳如泰山,毫无波澜。AMF的(详细级别)日志中可能会打印一条“Replay detected”或“NAS COUNT check failed”的记录。

    这个结果雄辩地证明,“先锋通信”的AMF具备了识别“昨日门票”的火眼金睛,成功地防御了重放攻击。


FAQ 环节

Q1:NAS COUNT的长度是多少?它会不会用完?

A1:NAS COUNT是一个24位的序列号。这意味着它可以从0增长到2^24 - 1(约1677万)。对于正常的通信来说,这个空间是足够大的。规范也定义了当NAS COUNT即将溢出(用完)时的处理机制。在这种情况下,网络(AMF)需要通过重新执行一次安全模式控制流程,来协商一套全新的NAS密钥,并将NAS COUNT重置为0。

Q2:如果因为严重的网络丢包和重传,导致消息乱序,会不会被误判为重放攻击?

A2:会。NAS COUNT的校验是“严格递增”的,它本身不具备处理乱序的能力。如果一个COUNT值为N+2的消息先于COUNT值为N+1的消息到达,那么当N+1消息随后到达时,它会被认为是“旧的”而被丢弃。这个问题由底层协议(如RRC层)的机制来缓解,RRC层会尽力保证消息的有序交付。但在极端情况下,NAS层的这种严格校验是必要的安全牺牲,以确保绝不接受任何可能被重放的旧消息。

Q3:NAS COUNT本身在传输时是加密的吗?

A3:不是。NAS COUNT位于NAS消息的安全头中,它需要被接收方在解密消息体之前读取并校验。因此,NAS COUNT本身是以明文形式传输的。但它受到了完整性保护。这意味着,虽然攻击者能看到NAS COUNT的值,但他无法篡改它。任何对NAS COUNT的修改都会导致整个消息的完整性校验失败,消息同样会被丢弃。

Q4:上行和下行的NAS COUNT是各自独立的吗?

A4:是的。UE和AMF为每个NAS安全上下文维护两个独立的计数器:一个用于上行链路(UE to AMF),一个用于下行链路(AMF to UE)。UE每发送一个消息,上行计数器加一;AMF每发送一个消息,下行计数器加一。这种分离设计使得双向通信的序列号管理更清晰,互不干扰。

Q5:重放Security Mode Complete消息的潜在危害是什么?

A5:Security Mode Complete标志着UE侧已经成功激活了新的安全密钥。如果AMF错误地接受了一条重放的SMC消息,可能会导致其内部状态机出现混乱。例如,AMF可能认为需要重新执行某些安全上下文初始化的操作,或者错误地更新了某些参数,这可能会短暂地中断服务,或者在极端情况下,如果实现存在缺陷,可能会打开一个微小的安全漏洞窗口。因此,确保这条关键状态转换消息不可重放,对于维护整个安全会话的稳定性至关重要。