http://www.eeworld.com.cn/mp/xzclasscom/a23004.jspx
今天,我们来说说LTE的鉴权。
对于任何通信系统,安全都是至关重要的。
我们经常听说的复制卡、伪基站,都是对通信系统的威胁,对我们信息安全的威胁。
所谓鉴权,就是鉴别终端或网络的真伪,保证通信数据的安全(不被截取、不被篡改、不被伪造)。
我们就以LTE系统为例,说明一下移动通信网络的鉴权方法。
一个简单的LTE网络架构,是下面这样的:
LTE控制面的协议栈,如下图:
正如上图所示,LTE是一个分层的通信系统。UE和eNodeB之间,是RRC信令。UE和MME之间,是更上层的NAS信令。
正因为如此,针对不同信令,就要采取不同的安全管理层级,就是针对AS层的AS安全,以及针对NAS层的NAS安全。
AS(Access Stratum,接入层)安全
UE和eNB之间的安全,包括RRC信令的机密性保护和完整性保护,用户面机密性保护。
NAS(Non Access Stratum,非接入层)安全
UE和MME之间的安全,包括NAS信令的机密性保护和完整性保护。
说到鉴权,就一定要先知道什么是鉴权向量(Authentication Vector)。
鉴权向量,就是一组用于鉴权的参数组。
这个参数组,包括4个参数,分别是:
RAND(RandomChallenge,随机数)
RAND是网络提供给UE的不可预知的随机数。
AUTN(AuthenticationToken,鉴权令牌)
AUTN的作用是提供信息给UE,使UE可以用它来对网络进行鉴权。
XRES(ExpectedResponse,预期响应)
XRES是期望的UE鉴权响应参数。用于和UE产生的RES(或RES+RES_EXT)进行比较,以决定鉴权是否成功。
KASME
KASME是根据CK/IK以及ASME的PLMNID推演得到的一个根密钥。
说明:
1 XRES里面的X,就是Expected,“预期的”的意思。后面会提到的好几个词,都带有这个X。“X某某某”就是和“某某某”进行比较用的。
2 什么是ASME?
ASME,接入安全管理实体。该实体是接入网从HSS接收最高级(top-level)密钥的实体。在LTE网络下,MME扮演ASME的角色。
上面这4个参数,也就是通常我们所说的LTE鉴权四元组。
我们还是直接看看完整的LTE鉴权流程,在流程中解释吧。
参与认证和密钥协商的有这三个主体:UE、MME 和 HSS。
我们把它们拎出来:
▶第①步
①:UE 向 MME 发送自己的 IMSI 与 HSS 的 IDHSS标识等身份信息,请求接入;
▶第②步
②:MME 根据请求 IDHSS,向对应的 HSS 发送鉴权数据请求,在请求中包括有用户的身份信息 IMSI 与本服务网的身份信息 SNID;
▶第③步
③:HSS 收到鉴权请求后,在自己的数据库中查找 IMSI 与 SNID,验证这 2 个实体的合法性。如果验证通过,则生成鉴权向量组 AV(1,…,n)。
▶第④步
④:HSS将生成的鉴权向量组 AV(1,…,n)作为鉴权数据响应,发回给 MME。
生成鉴权向量的算法如下:
SQN是啥?
为了抵御重放攻击,UE 和 HSS 都各自维持一个序列号计数器 SQN。
其中 HSS 维持的是SQNHSS负责为每一个生成的 AV 产生一个新的序列号 SQN。UE 维持的是SQNUE用于保存已接收 AV 中的最大 SQN 值。
KDF是啥?
密钥生成函数,Key derivation functions。KDF用于生成 Security各种算法的输入密钥。
▶第⑤步
⑤:MME 收到应答后,存储 AV(1,…,n),再从中选择一个 AV(i),提取出 RAND(i)、AUTN(i)、KASME(i)等数据,同时为 KASME(i)分配一个密钥标识KSIASME(i)。
▶第⑥步
⑥:MME向 UE 发送用户认证请求,带有RAND(i)、AUTN(i)、KASME(i)等数据;
▶第⑦步
⑦:UE 收到认证请求后,通过提取和计算 AUTN(i)中的 MAC 等信息,计算XMAC,比较 XMAC 和 MAC 是否相等,同时检验序列号 SQN 是否在正常的范围内,以此来认证所接入的网络;
算法如下:
如果认证通过,则计算 RES(i)与 KASME (i)。
▶第⑧步
⑧:UE给MME发用户鉴权请求响应消息,将计算出的RES(i)传输给 MME。
▶第⑨步
⑨:MME 将收到的 RES(i)与 AV(i)中的 XRES(i)进行比较,如果一致,则通过认证;
▶第⑩步
⑩:在双向认证都完成后,MME 与 UE 将KASME(i)作为基础密钥,根据约定的算法推演出加密密钥CK与完整性保护密钥IK,随后进行保密通信。
至此,EPS-AKA鉴权过程结束。
我们再看一遍整个过程(动图):
参数比较多哈!大家可能会比较晕。。。
其实,大家看到的K***什么的,都是从根密钥K里逐级生成的。不同的K***,存在于不同的地方,用于不同的目的。
各个密钥之间的关系如下图:
继续往下说,刚才①~⑩,是鉴权的过程。
鉴权之后,是完整性保护和加密过程。
首先我们介绍一下:安全模式控制(Security Mode Control,简称SMC)。
SMC用于激活终端和网络侧间信息的安全交互,包括NAS SMC和AS SMC两部分。
安全模式控制主要包括网络侧发给UE的 Security Mode Command和UE回复给网络侧的Security Mode Complete两条信令。
SMC流程主要完成终端和网络侧对所使用的安全算法的协商,并以KASME或KeNB为基础, 生成相应安全算法所需的密钥,初始网络侧和终端间消息的安全交互。
其实,消息安全交互的连接建立主要包括以下几个过程:
1、建立RRC连接,同时也建立起SRB1(SRB,Signalling Radio Bearer);
2、建立NAS连接;
3、发起AKA过程,完成UE和网侧进行双向鉴权和共同基础密钥KASME的协商(上文中的①~⑩);
4、发起NAS安全模式控制(SMC)流程,激活NAS安全机制,随后交互的NAS消息都进行安全保护。
5、发起AS安全模式控制(SMC)流程,激活AS安全机制,随后交互的RRC消息都进行安全保护。
我们来分别看一下4和5的流程。
▶NAS安全模式控制流程
①:MME发送NAS Security Mode Command消息给UE,包括重放(replayed)UE安全性能,所选择的NAS算法,标识KASME的eKSI,以及在空闲移动状态下建立一个映射环境时所需的NONCEUE 和 NONCEMME。这条消息需要进行完整性保护(但不需要加密),所使用的NAS完整性保护密钥KNAS int基于消息中eKSI所标识(indicated)的KASME。
②:UE需要验证NAS Security Mode Command消息的完整性。包括确保MME发送的UE安全性能与UE中储存的UE安全性能相匹配,以确保UE安全性能不会被“攻击者”修改,并且使用所指示的NAS完整性保护算法和基于eKSI所标识的KASME生成的NAS完整性保护密钥KNAS int验证其完整性保护。
③:MME使用NAS Security Mode Command消息中标识的密钥和算法对NAS Security Mode Complete消息进行解密和检查完整性保护。
此时,可以认为NAS层的安全性已经激活,可以进行安全的NAS层对话。
注意:
MME在发送NAS security mode command消息后,开始进行再该安全环境下的NAS上行解密。
MME在接收到NAS security mode complete消息后,开始进行在该安全环境下的NAS下行加密。
④:如果ME中NAS Security Mode Command消息的验证不成功,ME应回复一条NAS Security Mode Reject消息。
▶AS安全模式控制流程
①:eNB发送AS Security Mode Command消息给UE,包括所选的AS算法。并且该消息使用当前KASME生成的完整性保护密钥KRRC int保护。
②:UE发送AS Security Mode Complete消息给eNB,使用AS Security Mode Command消息中所选择的AS算法和使用当前KASME生成的完整性保护密钥KRRC int保护。
此时,可以认为AS层的安全性已经激活,可以进行安全的AS层对话。
注意:
eNB中,发送AS Security Mode Command后开始RRC和UP的下行加密。
接收到AS Security Mode Complete并验证其完整性成功后开始上行解密。
UE中,接收到AS Security Mode Command并验证其完整性成功后开始下行解密。
发送AS Security Mode Complete后开始RRC和UP的上行加密。
③:如果在UE中AS Security Mode Command消息的任何控制都没有成功,ME将回复一条Security Mode Failure消息。
总之,NAS/AS安全模式控制流程,就是包装NAS/AS层面的完整性和加密安全。在这之后,一个安全的连接就算是真正建立起来了。
好啦,LTE的鉴权流程,就介绍到这里。
如果没有听明白,也没关系,LTE安全管理专题课程即将上线(更新入“从零开始学LTE课程”),老师的视频讲解,一定能让你彻底搞懂滴!