深度解析 3GPP TS 33.512:4.2.2.1.4 NAS integrity failure (NAS完整性校验失败处理)
本文技术原理深度参考了3GPP TS 33.512 V18.2.0 (2024-06) Release 18规范中,关于“4.2.2.1.4 NAS integrity failure”的核心章节,旨在为读者深度剖析5G网络安全通信的基石——NAS完整性保护及其在遭遇攻击时的防御机制。
引言:神圣不可侵犯的“数字封条”
在此前的章节中,我们见证了AMF如何通过层层关卡,为用户小敏的手机建立起了一条安全的信令通道。经过成功的认证和密钥协商,以及安全模式的激活,小敏的手机与AMF之间的所有NAS信令,都如同装在了一辆“装甲运输车”里进行传送。这辆车不仅车厢是加密的(机密性保护),更重要的是,车门上贴着一张神圣不可侵犯的“数字封条”——这就是NAS完整性保护。
这个“封条”,学名为NAS消息认证码(NAS-MAC),是利用UE和AMF共享的完整性密钥(K_nas_int)对整个信令内容进行计算得出的一个简短的哈希值。任何对信令内容的微小篡改,都会导致这个封条失效。
今天,安全工程师李工将扮演一名“劫匪”,对这辆装甲车发起攻击。他要测试的是:当“先锋通信”的AMF收到一个封条被撕毁或伪造的信包时,它是否会像一个警惕的卫士一样,果断地将其丢入焚化炉,而不是傻乎乎地打开并执行里面的恶意指令。
1. 核心原则:零容忍——校验失败,立即丢弃
对于完整性保护,3GPP的态度是绝对的“零容忍”。一旦NAS安全上下文建立,任何不符合完整性要求的信令都将被视为非法入侵,必须被立即清除,且通常是“悄无声息”地。
规范原文 4.2.2.1.4 Requirement Description:
“In case of failed integrity check (i.e. faulty or missing NAS-MAC) is detected after the start of NAS integrity protection, the concerned message shall be discarded except for some NAS messages specified in TS 24.501.”
深度解析:
这段描述简洁而有力,李工从中提炼出三大核心要点:
-
前提条件 (Condition): “after the start of NAS integrity protection” (在NAS完整性保护启动之后)。这一点至关重要。并非所有的NAS消息都需要完整性保护。在安全模式激活之前,如初始的
Registration Request,就是“裸奔”的。本条款的铁律仅适用于双方约定开始贴“封条”之后的所有通信。 -
失败类型 (Failure Types): “faulty or missing NAS-MAC” (错误的或缺失的NAS-MAC)。规范明确了两种典型的“封条”问题:
-
Faulty (错误的):信包上有封条,但封条是伪造的。这意味着攻击者可能篡改了信令内容,但由于没有正确的密钥,他无法生成一个与之匹配的新封条,只能附上一个无效的MAC。
-
Missing (缺失的):信包上压根没有封条。这可能是攻击者试图通过“降级攻击”的变种,欺骗AMF的解析器,让它误以为这是一条不需要保护的消息。
-
-
标准动作 (Action): “the concerned message shall be discarded” (相关消息应被丢弃)。这是唯一的、强制性的应对措施。AMF不能尝试去“修复”这个消息,也不能回复一个“你的消息MAC错了”的错误报告(因为这可能给攻击者提供有用的信息)。最安全的做法是**“沉默的丢弃” (Silent Discard)**。就当从未收到过这个数据包,让它消失在网络中。这能有效防止攻击者通过AMF的响应来探测网络行为。
-
例外情况 (Exception): “except for some NAS messages specified in TS 24.501” (除了TS 24.501中指定的某些NAS消息)。这是一个严谨的补充。存在极少数特殊情况,例如UE发送用于报告安全错误的
5GMM STATUS消息本身,其处理逻辑会有所不同。但对于绝大多数承载业务和移动性指令的NAS消息,丢弃是铁律。
2. 测试场景:李工的“恶意注入”实验
为了验证“先锋通信”AMF的“防火墙”是否坚固,李工设计了两个直击要害的测试用例,分别模拟“封条伪造”和“封条被撕”的攻击场景。
-
场景设置:
-
李工首先让UE模拟器(代表小敏的手机)完成一次正常的5G注册流程,并建立一个PDU会话。此时,UE和AMF之间已经建立了一个受完整性保护的NAS信令连接。
-
李工的测试工具将扮演一个“中间人攻击者”,能够截获并修改UE发往AMF的NAS消息。
-
2.1 Test Case 1: Wrong NAS-MAC (伪造封条)
-
攻击模拟:小敏的手机想发起一个
PDU Session Modification Request来请求更高的带宽。这是一条合法的、受完整性保护的消息。 -
执行步骤:
-
UE模拟器生成并发送了合法的
PDU Session Modification Request消息,其中包含了正确计算的NAS-MAC。 -
李工的“中间人”工具截获了此消息。
-
李工对消息内容进行了恶意篡改,比如将请求的带宽值改成一个系统无法支持的超大值,试图让核心网资源分配出错。
-
由于李工没有
K_nas_int密钥,他无法为篡改后的消息计算出新的、正确的MAC。他只能将原始的、现在已经不匹配新内容的MAC附在消息后面,或者干脆生成一个随机的假MAC。 -
李工将这条“内容与封条不符”的恶意消息发往AMF。
-
【关键观测点】:李工密切监视AMF的响应。他会检查是否有任何NAS消息返回给UE,同时查看核心网侧小敏的PDU会话状态是否发生了改变。
-
-
预期结果:
一个安全的AMF在收到这条消息后,其内部的安全模块会立即进行完整性校验,发现计算出的期望MAC与消息附带的MAC完全不符。此时,AMF必须** silently discard** 这条消息。
-
在N1接口上,UE模拟器不会收到任何响应,无论是
PDU Session Modification Complete还是任何错误消息。 -
在核心网侧,小敏的PDU会话参数不会有任何变化。
-
(可选)在AMF的内部安全日志中,应该记录一次完整性校验失败事件。
这证明AMF成功地识别并阻止了篡改攻击。
-
2.2 Test Case 2: Missing NAS-MAC (撕毁封条)
-
攻击模拟:这次,攻击者更为直接,他试图欺骗AMF的协议解析器。
-
执行步骤:
-
同样,UE模拟器发送了合法的、带MAC的
PDU Session Modification Request。 -
李工的“中间人”工具截获消息。
-
这次李工不修改内容,而是直接将消息头中的安全类型改为“plain NAS message”(未保护),并完全删除消息末尾的NAS-MAC字段。
-
他将这条“裸奔”的消息发往一个本应只接受“装甲车”的AMF。
-
【关键观测点】:同上,观察AMF的响应和核心网状态。
-
-
预期结果:
AMF的NAS协议栈必须足够严格。它知道当前与该UE的通信是处于安全上下文激活状态的,因此它期望收到的所有(除了少数例外)上行NAS消息都必须是完整性保护的。当它收到一条本应受保护却没有保护的消息时,这本身就是一个完整性错误。
-
AMF必须同样** silently discard** 这条消息。
-
N1接口无响应,PDU会话无变化。
这证明AMF的状态机是正确的,它没有被攻击者欺骗,坚守了安全通信的约定。
-
通过这两个看似简单却直击要害的测试,李工可以自信地在测试报告中写下结论:“先锋通信”的AMF在面对NAS完整性攻击时,表现得如同一面坚不可摧的盾牌,严格执行了“零容忍”的丢弃策略,有效地保障了5G信令通道的纯洁与安全。
FAQ 环节
Q1:为什么AMF要“沉默地”丢弃消息,而不是发回一个错误报告?
A1:这是一种重要的安全实践,称为“避免信息泄露”。如果AMF对每一种错误都给出详细的响应(例如“MAC错误”、“消息格式错误”),攻击者就可以利用这些响应来反向推断网络的内部状态、安全策略甚至是软件版本,这被称为“侦察攻击”或“扫描”。通过沉默地丢弃,网络不给攻击者任何反馈,大大增加了攻击的难度。
Q2:NAS的完整性保护和机密性保护(加密)有什么区别?
A2:它们是安全的两个不同维度。机密性保护(Encryption)是为了防止信令内容被窃听,它把明文变成密文,没有密钥的人看不懂。完整性保护(Integrity Protection)是为了防止信令被篡改或伪造,它通过附加MAC来确保消息在传输过程中没有被改变,并且确实来自合法的发送方。一条NAS消息可以同时被加密和完整性保护,提供最高级别的安全。
Q3:是不是所有的NAS消息都必须同时进行完整性和机密性保护?
A3:不一定。在安全模式协商时,UE和网络会商定各自支持的算法。通常会选择一个完整性算法(如NIA2)和一个机密性算法(如NEA2)。有些消息可能只需要完整性保护而不需要加密,这取决于消息的重要性和敏感性。但反过来,3GPP禁止使用“只加密,不进行完整性保护”的组合,因为一个被篡改的密文解密后可能会产生无法预料的危险结果。完整性保护是更基础的安全要求。
Q4:TS 24.501中提到的例外情况有哪些例子?
A4:一个典型的例子是5GMM STATUS消息。当UE或AMF检测到一个安全相关的错误(比如收到的消息无法解密或完整性校验失败),它需要向对端报告这个状态。发送这条5GMM STATUS消息本身,就不能依赖于已经“损坏”或“不可信”的安全上下文。因此,TS 24.501为这类错误报告消息的处理定义了特殊的规则,允许它们在没有有效安全保护的情况下被发送和接收。
Q5:如果AMF丢弃了消息,上层的UE(比如手机上的APP)如何知道操作失败了?
A5:这依赖于上层的超时重传机制。当UE的NAS层发送了一条需要对端响应的消息时(例如PDU Session Modification Request),它会启动一个定时器。如果在定时器超时前没有收到预期的响应(例如PDU Session Modification Complete),NAS层就会认为该过程失败。它可能会向上层应用报告失败,或者尝试重新发送该请求。因此,即使AMF是“沉默”的,UE侧最终也能通过超时机制感知到交互的失败。