4. NAS层协议分析(一):附着流程

各位同学,今天我们正式进入NAS层协议分析。说白了,NAS就是手机和核心网之间“聊天”的协议。附着流程,就是手机开机后跟网络说的第一句话:“嘿,我来了,给我注册上!”

这个流程涉及的信令很多,但核心就几个步骤:UE发起附着请求、网络侧身份验证、加密与完整性保护、附着接受与默认承载建立。我当年刚接触这个流程时,总觉得信令太多记不住。后来发现,只要抓住几个关键信令,整个流程就清晰了。

核心要点:附着流程是UE入网的“敲门砖”,所有后续业务都建立在这个流程之上。

4.1 附着流程概述

附着流程,说白了就是UE向MME注册的过程。UE开机后,先跟eNodeB建立RRC连接,然后通过eNodeB向MME发送附着请求。MME收到后,会进行一系列检查:你是谁?你从哪来?你要干什么?

整个流程可以分为四个阶段:

  1. 附着请求:UE向MME发送附着请求消息,携带UE身份、能力等信息
  2. 身份验证:MME向HSS请求认证向量,对UE进行身份验证
  3. 安全模式控制:建立NAS层的加密和完整性保护
  4. 附着接受与默认承载建立:MME接受附着,建立默认EPS承载

嗯,这里要注意:附着流程不是一次性的。UE可能因为各种原因重新附着,比如从飞行模式恢复、跨TAU失败等。我在项目中遇到过UE频繁附着导致网络拥塞的情况,后来发现是UE的TAC配置有问题。

4.2 UE发起附着请求

UE发起附着请求时,会携带一个关键参数——EPS移动性管理(EMM)原因。这个原因告诉网络:我为什么要附着?

EMM原因值 含义 常见场景
#1 IMSI未知 新SIM卡首次使用
#2 非法UE IMEI被列入黑名单
#3 非法网络 UE检测到网络异常
#6 PLMN不允许 漫游限制
#9 EPS服务不允许 网络侧拒绝附着

抓包时,我习惯先看Attach Request消息里的EPS attach type字段。这个字段告诉网络:是EPS附着(纯4G)还是combined附着(4G+2G/3G)。

抓包技巧:在Wireshark中过滤nas-eps协议,然后搜索Attach request。注意看MS network capability字段,它告诉网络UE支持哪些加密算法。

4.3 网络侧身份验证

MME收到附着请求后,第一件事就是验证UE的身份。这个过程涉及认证向量的获取和认证挑战的交互。

认证流程是这样的:

  1. MME向HSS发送Authentication Information Request,请求认证向量
  2. HSS返回Authentication Information Response,包含一组认证向量
  3. MME从中选取一个向量,向UE发送Authentication Request,包含RAND和AUTN
  4. UE验证AUTN,计算RES,返回Authentication Response
  5. MME比较RES和XRES,如果一致,认证通过

我曾经遇到一个案例:UE一直认证失败,抓包发现AUTN中的SQN与UE本地维护的SQN差距太大。后来查出来是HSS的SQN计数器出了问题,导致UE认为网络是“非法网络”。

注意:认证失败时,UE会返回Authentication Failure消息,并携带CAUSE字段。常见的失败原因有:MAC失败(#0)、非同步失败(#21)、安全模式拒绝(#23)等。

4.4 加密与完整性保护

认证通过后,MME会启动NAS安全模式控制流程。这个流程的目的是建立NAS层的加密和完整性保护。

流程如下:

  • MME发送Security Mode Command,告诉UE使用哪种加密算法和完整性算法
  • UE验证消息的完整性,然后返回Security Mode Complete
  • 后续所有NAS消息都使用协商好的算法进行加密和完整性保护

抓包时,你会发现Security Mode Command消息里包含NAS security algorithms字段。这个字段指定了加密算法(EEA)和完整性算法(EIA)。

算法标识 算法名称 密钥长度
EEA0 空加密 无
EEA1 SNOW 3G 128位
EEA2 AES 128位
EEA3 ZUC 128位
避坑指南:我曾经遇到UE在安全模式完成后,后续NAS消息无法解密。后来发现是UE和MME的NAS COUNT不同步导致的。建议在抓包时,重点关注NAS COUNT字段,确保双方计数一致。

4.5 附着接受与默认承载建立

安全模式建立后,MME会发送Attach Accept消息,告诉UE:你被接受了!同时,MME还会建立默认EPS承载,为UE分配IP地址。

附着接受消息里包含几个关键信息:

  • GUTI:全球唯一临时标识,用于后续信令交互
  • TAI列表:UE可以移动的跟踪区列表
  • EPS承载上下文:默认承载的QoS参数
  • APN:接入点名称,用于PDN连接

UE收到Attach Accept后,会返回Attach Complete消息,确认附着成功。至此,附着流程完成。

抓包时,我习惯看Attach Accept消息里的EPS bearer context status字段。这个字段告诉网络:UE当前有哪些承载是激活的。

关键点:附着接受后,UE就进入了EMM-REGISTERED状态。此时,UE可以发起业务请求,建立专用承载。

4.6 抓包分析附着流程关键信令

好了,理论讲完了,我们来看看实际抓包怎么分析。我以Wireshark为例,给大家演示一下。

首先,过滤nas-eps协议,你会看到一系列NAS消息。按时间排序,找到Attach request消息。

双击打开,看NAS EPS Mobility Management部分:

  • Protocol discriminator:0x07,表示EMM消息
  • Security header type:0x00,表示未加密
  • Message type:0x41,表示Attach request

接着看Attach type字段:

  • 0x01:EPS attach
  • 0x02:combined EPS/IMSI attach
  • 0x03:emergency attach

然后看MS network capability字段,这里列出了UE支持的加密算法。我建议重点关注EEA0(空加密)是否被置位。如果置位,说明UE允许不加密通信,这在某些场景下是安全隐患。

接下来看Authentication Request消息。注意看RAND和AUTN字段。AUTN包含SQN xor AK和AMF,UE用这些信息验证网络的身份。

最后看Attach Accept消息。这里有个关键字段——GUTI。GUTI是MME分配给UE的临时标识,后续所有信令都用GUTI代替IMSI,保护用户隐私。

抓包技巧:我习惯在Wireshark中设置显示过滤:nas-eps.msg_type == 0x41(Attach request)或nas-eps.msg_type == 0x42(Attach accept)。这样可以快速定位关键信令。

下面我画了一张附着流程的时序图,帮助大家理解整个流程:

附着流程时序图 UE eNodeB MME HSS RRC连接 S1-AP ① Attach Request ② Authentication Request/Response ③ Security Mode Command/Complete ④ Attach Accept ⑤ Attach Complete 认证向量请求/响应 说明:附着流程共5个核心步骤,从Attach Request到Attach Complete,完成UE入网注册

好了,以上就是附着流程的核心内容。记住,抓包分析时,重点关注Attach Request、Authentication Request/Response、Security Mode Command/Complete和Attach Accept/Complete这五对信令。掌握了它们,你就掌握了附着流程的精髓。