本帖最后由 htyjump 于 2015-2-25 15:34 编辑
参与认证和密钥协商的有三个主体:UE、MME 和 HSS。UE 与 HSS 之间有共享密钥 K;在认证过程中,会产生认证向量 AV(Authentication Vector)。AV 由 RAND、XRES(Expected Response,预期响应)、KASME和 AUTN(Authentication Token,认证令牌)四个参数组成。其中 RAND 是随机数,由 HSS产生;XRES 是 MME 预期会收到的 UE 响应信息;KASME是用于计算后继通信所用密钥的基础密钥,由 K 通过密钥生成函数 f3、f4 和 KDF 生成;KSIASME是KASME的密钥标识。为了抵御重放攻击,UE 和 HSS 都各自维持一个序列号计数器 SQN。其中 HSS 维持的是SQNHSS负责为每一个生成的 AV 产生一个新的序列号 SQN。UE 维持的是SQNUE用于保存已接收 AV 中的最大 SQN 值。 EPS-AKA 的具体认证流程如图1所示。
1)UE 向 MME 发送自己的 IMSI 与 HSS 的 IDHSS标识等身份信息,请求接入; 2)MME 根据请求IDHSS,向对应的 HSS 发送认证数据请求,在请求中包括有用户的身份信息 IMSI 与本服务网的身份信息 SNID; 3)HSS 收到认证请求后,在自己的数据库中查找 IMSI 与 SNID,验证这 2 个实体的合法性。验证通过,则生成认证向量组 AV(1,…,n),并作为认证数据应答,发回给 MME。生成认证向量组 AV(1,…,n)的参数算法如图2所示。 相关参数的具体计算方法如下: MAC=f1k(SQN||RAND||AMF) XRES=f2k(RAND) KASME=KDF(f3k(RAND),f4k(RAND)SQN+AKAMFMACKasme) AK=f5(RAND) 获得参数后,再根据以下方法计算 AUTN 与 AV: AUTN=SQN⊕AK||AMF||MAC AV=RAND||XRES||KASME||AUTN; 4)MME 收到应答后,存储 AV(1,…,n),再从中选择一个 AV(i),提取出 RAND(i)、AUTN(i)、KASME(i)等数据,同时为 KASME(i)分配一个密钥标识KSIASME(i)。向 UE 发送用户认证请求; 5)UE 收到认证请求后,通过提取和计算 AUTN(i)中的 MAC 等信息,计算XMAC,比较 XMAC 和 MAC 是否相等,同时检验序列号 SQN 是否在正常的范围内,以此来认证所接入的网络。具体的参数计算方法如下图,如果认证通过,则计算 RES(i)与 KASME (i),并将 RES(i)传输给 MME; 6)MME 将收到的 RES(i)与 AV(i)中的 XRES(i)进行比较,如果一致,则通过认证; 7)在双向认证都完成后,MME 与 UE 将KASME(i)作为基础密钥,根据约定的算法推演出加密密钥CK与完整性保护密钥IK,随后进行保密通信。至此,EPS-AKA认证方案结束。
结论:解密的过程并不需要知道K、CK、IK值,它们只参与认证的过程,而不参与后续过程,认证以后的传输过程都是以KASME作为根密钥,也就是说,大家只需要抓取并分析出KASME的值,就可以对后续通信过程进行解密。 LET系统采用的是分层密钥结构,在获取KASME之后即可作为根密钥为NAS(非接入层)提供数据完整性加密和数据安全性加密,同时也可根据KASME为AS(接入层)提供相应的数据完整性加密和数据安全性加密,由此可见LTE的AKA鉴权过程是解密过程中的关键点。
图.doc
(170 KB, 下载次数: 254)
|