对于整个附着过程,其实内容众多,也涉及到诸多知识点,无论是不同的协议,还是协议所涉及到的各种算法,都是值得研究的。而每条消息所携带的IE,内容丰富,在业务附着,已经建立后,维持业务正常,起着不同作用。而附着过程中的安全建立,也是关键一环。
LTE附着过程中,安全机制有两层,一层是NAS层,那是EPC与UE之间的交互;一层的AS层,那是eNB和UE之间的交互。通过两层安全防卫,从而提高整个LTE系统的安全性。在《一个完整的附着过程》章节中,都有对应信令,下图又将这两组信令放在一起展示。
先看看过程。首先,EPC和UE之间的需要双向认证和协商,是由EPC发起的。
在第一次attach消息中,UE会将IMSI, SN ID通知MME,MME就会根据这些信息,和HSS/Auc打交道,通过Diameter协议。从而获取鉴权向量,并通过Auth request消息,发给UE,进行双向认证。
鉴权向量 AV(Authentication Vector) 由 RAND、XRES(Expected Response,预期响应)、KASME和 AUTN(Authentication Token,认证令牌)四个参数组成。其具体解释如下:
MME通过Authentication Request将AV四元组中的RAND,AUTH,KSIasme发给UE,如下图所示:
UE 收到认证请求后,通过提取和计算 AUTN中的 MAC 等信息,计算XMAC,比较 XMAC 和 MAC 是否相等,同时检验序列号 SQN 是否在正常的范围内,以此来认证所接入的网络。具体的参数计算方法如下图,如果认证通过,则计算 RES与 KASME,并将 RES通过消息Authentication Response传输给 MME,如下图所示。
MME 将收到的 RES与 AV向量中的 XRES进行比较,如果一致,则通过认证;
在双向认证都完成后,MME 与 UE 将Kasme作为基础密钥,根据约定的算法推演出加密密钥CK与完整性保护密钥IK,随后进行保密通信。至此,EPS-AKA认证方案结束。
对于鉴权过程介绍,3GPP 24.301 5.4.2章节对正常和异常行为都做了解释。33.401 6.1章节,介绍了AKA过程,也就是AV向量的获取交互验证过程。这里面又涉及到密钥是如何产生的,又是一个复杂的课题。6.2章节介绍了整个密钥架构,如下图所示:
LTE系统采用的是分层密钥结构,在获取Kasme之后即可作为根密钥为NAS(非接入层)提供数据加密(Knasenc)和数据完整性保护(Knasint),同时也可根据Kasme为AS(接入层)信令面提供相应的数据加密(Krrcenc)和数据完整性保护(Krrcint),以及数据面的加密(Kupenc)。所以鉴权完成后,即使NAS/AS的安全算法交互过程,其消息名称一致,只是IE上有所区别。
NAS SMC过程
在PDN connectivity request过程中,UE将自身支持的安全算法能力上报给EPC,在SMC消息中,EPC将选择ciphering/integrity算法,以及UE安全能力发给UE,UE接收到NodeB转发过来的NAS层的 Security Mode Command消息后,首先验证其中的UE安全能力与自己早先上报给MME的是否一致,然后根据NAS Security ModeCommand中选中的算法计算相应的密钥,并生成 NAS SecurityModeComplete消息,对之进行完整性保护,发送给MME。此时,可以认为NAS层的安全性已经激活, UE和NodeB可以进行安全的NAS层对话。
AS SMC过程
其消息和NAS的一样,只是IE简单些。同样,UE根据SecurityModeCommand中选中的算法计算相应的密钥,并生成SecurityModeComplete消息,对之进行完整性保护,发送给MME。至此,AS层RRC以及UP可以安全交互。
关于安全算法,主要有以下几种:
加密:eea0 (NULL) <wbr>eea1 (SNOW3G) eea2 (AES) eea3 (ZUC)
完整性:eia0 (NULL) <wbr>eia1 (SNOW3G) eia2 (AES) eia3 (ZUC)
除了ZUC(祖冲之算法)是国内专利,SNOW3G和AES都是国际通用算法,其算法情况网上都有介绍。
综上所述,LTE中的安全机制,涉及到密钥派生,算法选择等等,过程比较清晰,分支内容值得深究。