-------------
LTE安全框架
认证和密钥协商
AKA过程
关于卡的使用,Rel-99及其后版本的UICC上USIM应用都应能接入LTE,但应保证USIM应用没有使用TS33.102附录F中定义的私有AMF分离比特位(如果是LTE,该bit位的值为1)。2G的SIM或者UICC上的SIM不允许接入E-UTRA。
关于终端的使用,具备LTE无线能力的ME应支持TS 31.102 中定义的USIM-ME接口。 如果网络类型为LTE,AUTN中AMF字段的“分离比特位”应置1,向ME指明认证向量仅用于EPS上下文的AKA认证。如果“分离比特位”置0,向量仅能用于非EPS上下文(如GSM、UMTS)的AKA认证。对于“分离比特位”为1的认证向量,AKA认证过程产生的密钥CK和IK应驻留在HSS中。
待接入LTE的ME应在认证期间检查AUTN中AMF字段的“分离比特位”是否置1。“分离比特位”是AUTN中AMF字段的最低位,不应再被用于其它用途。
EPS AKA将产生生成用户面UP,RRC和NAS加密密钥以及RRC、NAS完整性保护密钥的关键材料。
MME通过ME发送选择的鉴权向量中的RAND和用于鉴权网络的AUTN给USIM。同时也包含用于识别KASME的KSIASME。
当收到上述消息,USIM通过验证AUTN是否能被接受来判断鉴权向量是否是最新的。如果是,USIM将计算一个响应RES。USIM将计算CK和IK发送给ME。如果验证失败,USIM-------------
-------------
指示出错原因给ME且在同步错误的情况下传递AUTS参数。
在AUTN和AMF验证成功的情况下,UE将发送包含RES的响应消息给网络。在这种情况下,ME将根据CK和IK计算KASME,以及用KDF(Key Derivation Function)计算服务网络的标识(SN id)。当从KASME获取的密钥被成功使用,SN id绑定将鉴定服务网络标识。
否则,UE将发送用户鉴权拒绝消息并指示错误原因。在AUTN同步错误的情况下,需要包含USIM提供的AUTS。
MME将检查UE发送的RES和XRES是否一样。如果是则鉴权成功。如果不是或者收到UE的错误响应,则MME可能响UE发起认证请求或者鉴权。
图1描述了基于UMTS AKA(见TS 33.102)的EPS AKA认证过程。UE和HSS共享以下密钥:
? K是存储在认证中心AuC中和UICC的USIM上的永久密钥。
? CK,IK是AKA认证过程中在AuC和USIM上推衍得到的一对密钥。CK和IK应视其
所处不同上下文中(用在EPS安全上下文中还是其他的安全上下文中)区别对待。 作为认证与密钥协商的结果,UE和MME(即EPS环境下的ASME)应产生并共享一个中间密钥KASME。具体细节见HSS向服务网络分发认证向量的过程。
ME/USIM User authentication request (RAND, AUTN, KSIASME) User authentication response (RES) User authentication reject (CAUSE) MME
图1 EPS用户认证(EPS AKA)
AKA成功建立后,UE和MME都应能创建部分本地EPS安全上下文。该上下文应覆盖现有的非当前EPS安全上下文。
HSS向服务网络分发认证向量的过程
该过程的目的是从HSS提供给MME一个或者多个EPS鉴权向量(RAND, AUTN, XRES, KASME)来执行用户鉴权。每一个EPS鉴权向量都能被用来鉴定UE。
由于已经通过使用更复杂的密钥层次减少了执行AKA过程的需求(特别是,业务请求可使用存储的KASME认证,而不需要执行AKA),建议MME一次向HSS仅申请获取一个EPS认证向量。
MME Authentication data request IMSI, SN身份标识, 网络类型 Authentication data response EPS认证向量 HE
图2 从HE向MME分发认证数据
HSS根据CK、IK和SN标识产生密钥KASME。 MME向HSS请求鉴权向量时应包括IMSI、服务网络标识(即MCC+MNC)、网络类型(即LTE)。如果同步失败,MME还应在请求中包含RAND和AUTS。此时HE应在返回新的认证-------------
-------------
向量之前检验AUTS参数。
接收到来自MME的authentication data request时,如果HE已经预先计算好EPS认证向量,则直接从HSS数据库中提取,否则按要求计算。
HSS向MME返回鉴权响应(Authentication data response),提供被请求信息。若请求多个EPS认证向量,则按向量序列号依次返回。MME应能识别认证向量的顺序,并且依照序列号的次序按顺序使用向量。
使用永久身份辨别用户身份的过程
当服务网络不能通过临时身份标识(GUTI)识别用户时,服务网络应调用用户身份辨别机制。图3描述的是通过用户永久身份(IMSI)在无线通道上识别用户的机制。
ME/USIM MME Identity Request Identity Response (IMSI)
图3 用户身份查询
EPS密钥等级
密钥等级及生成
LTE/SAE系统中的密钥应包括接入层和非接入层的加密和完整性保护密钥,长度为128
比特。为长远发展,网络接口还应准备支持256位的密钥。
保护UP、NAS和AS的密钥的推衍以它们各自使用的安全算法为输入参数。
USIM / AuC UE / HSS UE / MME KNASenc KNASint K CK, IK KASME KeNB / NH UE / eNB KUPenc KRRCint KRRCenc
-------------
-------------
图4 LTE的密钥等级架构
LTE系统中应使用密钥等级(见图4),包括以下密钥:KeNB, KNASint, KNASenc, KUPenc, KRRCint
和KRRCenc。
- KeNB是由ME和MME从KASME推衍产生的密钥,或是由ME和目标eNB产生的密钥。 非接入层通信密钥:
- KNASint是由ME和MME从KASME和完整性算法标识推衍产生的对非接入层信令进行完整性保护的密钥。
- KNASenc是由ME和MME从KASME和加密算法标识推衍产生的对非接入层信令进行加密保护的密钥。
用户平面通信密钥:
- KUPenc是由ME和eNB从KeNB和加密算法标识推衍产生的对用户平面数据进行加密保护的密钥。
RRC通信密钥:
- KRRCint是由ME和eNB从KeNB和完整性算法标识推衍产生的对无线资源控制平面信令进行完整性保护的密钥。
- KRRCenc是由ME和eNB从KeNB和加密算法标识推衍产生的对无线资源控制平面信令进行加密保护的密钥。 中间密钥:
- NH是由ME和MME推衍产生的提供前向安全的密钥(详见5.3)。 - KeNB*是ME和eNB在密钥推衍过程中产生的密钥(详见5.3)。 图5从网络节点角度给出了不同密钥间的相关性及其推衍过程。图6给出了ME内密钥的对应关系和推衍过程。KDF的两虚线输入项表示按密钥推衍条件选取其中一个作为输入项。
-------------
-------------
HSS SN ID, SQN?AK CK,IK 256 MME KeNB NH KeNB* 256 KeNB eNB 物理小区标识, EARFCN-DL KDF KDF 256 KDF NH eNB 256 256 256 KeNB 256 KASME 256 NAS上行计数器 KDF UP加密算法,算法标识 RRC完整性算法,算法标识 NAS加密算法,算法标识 NAS完整性算法,算法标识 RRC加密算法,算法标识 KDF 256 KDF 256 KDF 256 KDF 256 KDF 256 256 位密钥 KNASenc 256 KNASint 256 256位 KRRCenc 密钥 256 KRRCint Trunc 128 KUPenc 256 Trunc 128 Trunc 128 Trunc 128 Trunc 128 128位 KNASenc 密钥 KNASint 128位 KRRCenc 密钥 KRRCint KUPenc
图5 LTE系统中网络节点的密钥分发和推衍方案。
-------------
-------------
SN ID, SQN?AK CK,IK 256 ME KeNB KeNB* 256 KDF KDF 256 NH KDF KeNB 256 256 物理小区标识, EARFCN-DL 256 256 KASME 256 NAS上行计数器 NAS加密算法,算法标识 KDF UP加密算法,算法标识 RRC完整性算法,算法标识 RRC加密算法,算法标识 NAS完整性算法,算法标识 KDF 256 KDF 256 KDF 256 KDF 256 KDF 256 256位 KNASenc 密钥 256 KNASint 256 256位 KRRCenc 密钥 256 KRRCint 256 KUPenc 256 Trunc 128 Trunc 128 Trunc 128 Trunc 128 Trunc 128 128位 KNASenc 密钥 KNASint 128位 KRRCenc 密钥 KRRCint KUPenc
图6 LTE系统中ME的密钥分发和推衍方案
如图5和6所示,KASME、KeNB和NH的长度都为256比特。256位NAS、UP和RRC密钥都是分别从KASME和KeNB推衍产生的。如果NAS、UP和RRC的加密算法或完整性算法要求128位输入密钥,则截断现有密钥,取其低128位(如图5和6中示例)。
其中,KASME应由密钥组标识eKSI来识别。eKSI可以是KSIASME类型或KSISGSN类型。eKSI应和KASME及临时身份标识GUTI(若有)一起存储在UE和MME中。
密钥组标识KSIASME与EPS AKA认证过程推衍产生的KASME相关联。它由MME分配,经认证请求消息发送至移动终端,并同KASME一起存储在终端。
密钥组标识KSISGSN与inter-RAT移动过程中从UMTS密钥推衍产生的映射KASME相关联。KSISGSN是在LTE空闲模式移动过程中或从GPRS/TD切换至LTE过程中,由ME和MME分别推衍映射KASME时产生的。KSISGSN和映射KASME存储在一起。
eKSI格式应能区分接收到的参数是KSIASME类型还是KSISGSN类型。eKSI格式应包含一值域(eKSI格式参见3GPP TS 24.301)。KSIASME和KSISGSN格式相同。KSIASME和KSISGSN的值域都为3比特,允许7个值来标识不同的密钥组。在UE侧,值'111'表示没有有效KASME。从网络发送到移动终端的eKSI的'111'值为保留值,未作定义。
HSS产生鉴权向量
HSS生成鉴权向量的示意图:
-------------
-------------
Generate SQNGenerate RANDSQNAMFKRANDf1f2f3f4f5MACXRESCKIKAKAUTN := SQN ? AK || AMF || MACAV := RAND || XRES || CK || IK || AUTN
鉴权相关量的产生说明(参考TS 33.102):
- a message authentication code MAC = f1K(SQN || RAND || AMF) where f1 is a message authentication function;
- an expected response XRES = f2K (RAND) where f2 is a (possibly truncated) message authentication function;
- a cipher key CK = f3K (RAND) where f3 is a key generating function; - an integrity key IK = f4K (RAND) where f4 is a key generating function;
- an anonymity key AK = f5K (RAND) where f5 is a key generating function or f5 ? 0.
Finally the authentication token AUTN = SQN ? AK || AMF || MAC is constructed.
-------------
-------------
USIM产生鉴权相关量
RANDAUTNAMFMACf5AKSQN ? AK?SQNKf1f2f3f4XMACRESCKIKVerify MAC = XMACVerify that SQN is in the correct range
相关量的说明(参考TS 33.102):
Upon receipt of RAND and AUTN the USIM first computes the anonymity key AK = f5K (RAND) and retrieves the sequence number SQN = (SQN ? AK) ? AK.
Next the USIM computes XMAC = f1K (SQN || RAND || AMF) and compares this with MAC which is included in AUTN. If they are different, the user sends user authentication reject back to the VLR/SGSN with an indication of the cause and the user abandons the procedure. In this case, VLR/SGSN shall initiate an Authentication Failure Report procedure towards the HLR as specified in section 6.3.6. VLR/SGSN may also decide to initiate a new identification and authentication procedure towards the user.
Next the USIM verifies that the received sequence number SQN is in the correct range.
If the USIM considers the sequence number to be not in the correct range, it sends synchronisation failure back to the VLR/SGSN including an appropriate parameter, and abandons the procedure. The synchronisation failure message contains the parameter AUTS. It is AUTS = Conc(SQNMS ) || MAC-S. Conc(SQNMS) = SQNMS ? f5*K(RAND) is the concealed value of the counter SQNMS in the MS, and MAC-S = f1*K(SQNMS || RAND || AMF) where RAND is the random value received in the current user authentication request. f1* is a message authentication code (MAC) function with the property that no valuable information can be inferred from the function values of f1* about those of f1, ... , f5, f5* and vice versa. f5* is the key generating function used to compute AK in
re-synchronisation procedures with the property that no valuable information can be inferred from the
-------------
-------------
function values of f5* about those of f1, f1*, f2, ... , f5 and vice versa.
f函数
相关f函数的定义可以参看协议TS 35.201~TS 35.209。
RANDOPCSQN||AMF||SQN||AMFEKOPCrotateby r3c3EKOPCf1*f5f2OPCf3EKOPCf4OPCrotateby r4c4EKOPCf5*OPCrotateby r5c5EKOPEKOPCOPCrotateby r1c1EKOPCf1OPCrotateby r2c2
KDF函数
TS 33.401定义了以下KDF:
推衍密钥(KDF)=HMAC-SHA-256(Key, S)
HMAC-SHA-256参考:
[10] IETF RFC 2104 (1997): \[11] ISO/IEC 10118-3 (2004): \Technology - Security techniques - Hash-functions - Part 3: Dedicated hash-functions\
输入参数及其长度值应按如下规则连接成一个字符串S: 1、 每个输入参数的长度应被编码为两个字节长的字符串:
a) 输入参数Pi的字节数以数字K表示,范围在[0,65535]之间;
b) Li是一个2字节的数,代表写入基数2的数字K,使用特殊的位排序。Li
中任何未使用的最高有效位将置零。
例如:如果Pi包含258字节,那么Li将是一个2字节的比特串(0000000100000010)2,或者十六进制0X01 0X02。
2、 给定一个非负整数j表示Pi中的编码值,通过将值j写入基数2来形成Pi。Pi的最-------------
-------------
小有效位将等于j的最小有效位。Pi中任何未使用的最高有效位应置零,以满足Li定义的字节长度。
例如:如果Pi是一个值为259的整数,且长度值是2个字节,则Pi的二进制表示为(0000000100000011)2,或十六进制表示为0X01 0X03。 3、 字符串S将由n个输入参数组成,如下所示:
S = FC || P0 || L0 || P1 || L1 || P2 || L2 || P3 || L3 ||... || Pn || Ln 其中,
FC为单个字节,用于区分不同的算法类型, P0…Pn为n个输入参数编码值,
L0…Ln为2字节值,表示相应的P0…Pn的长度。
4、 最终的输出即为KDF根据根密钥Key以及字符串S计算得到的推衍密钥。本文档定义
了以下KDF:
推衍密钥=HMAC-SHA-256(Key, S)。
所有EPS中的推衍密钥应使用本定义中的密钥推衍功能(KDF)。本节定义了KDF输入参数字符串S(与相关密钥一起输入KDF)的设置。对于不同用途的KDF,其输入参数S的定义不同。
FC值的分配
FC的数字空间的使用由TS33,.220控制,其取值范围在0x10 – 0x1F。
UE中各密钥生成
KASME
1)定义
? KASME 是AKA过程中,在终端和HSS中由CK, IK 推衍产生的中间密钥,用于推衍
产生其他NAS和AS密钥。
2)存储要求
? UE应把EPS NAS安全上下文存在安全可靠的非易失性存储器中,包括EPS AKA认
证过程产生的KASME。如果USIM支持EMM (EPS移动管理)参数存储,ME应把EPS NAS 安全上下文(包括KASME 和KSIASME)存在USIM上。否则ME 应把EPS NAS 安全上下文存在安全可靠的非易失性存储器中。不应以任何方式被泄漏。
3)生成要求
KASME = HMAC-SHA-256 (Key, S) Key = (CK||IK)
S = FC || P0 || L0 || P1 || L1
? FC = 0x10, ? P0 = PLMN ID,
? L0 = PLMN ID的长度 (i.e. 0x00 0x03), ? P1 = SQN ? AK -------------
-------------
? L1 =SQN ? AK的长度 (i.e. 0x00 0x06)
注: UISM不应向ME发送单独的SQN值和AK值。ME接收到的是AUTN中提取的SQN和AK的异或值。
KNASenc
1)定义
? KNASenc是用于对非接入层通信进行加密的密钥。
2)存储要求
? 存储在ME中,不应以任何方式被泄漏。
3)生成要求
KNASenc = HMAC-SHA-256(KASME, S)。
S = FC || P0 || L0 || P1 || L1,其中: FC = 0x15
P0 = 算法类型区分值 = 0x01
L0 = 算法类型区分值长度(即0x00 0x01) P1 = 算法标识符
L1 = 算法标识符长度(即0x00 0x01)
应把算法标识符P1的值(参见安全技术规范5.1.3)置为八位组的最低4bits位。在最高4bits位中,其中较低2bits位为供将来使用的保留值,其中较高2bits位用于私有方案。目前,所有最高4bits位都应置零。
KNASenc长度为256bits。如果NAS加密算法要求128位输入密钥,则截断现有密钥,取其低128位。 同10.2.11。
KNASint
1)定义
? KNASint是用特定算法保护非接入层通信完整性的密钥。 2)存储要求
? 存储在ME中,不应以任何方式被泄漏。
3)生成要求
KNASint= HMAC-SHA-256(KASME, S)。
S = FC || P0 || L0 || P1 || L1,其中: FC = 0x15
P0 = 算法类型区分值 = 0x02
L0 = 算法类型区分值长度(即0x00 0x01) P1 = 算法标识符
L1 = 算法标识符长度(即0x00 0x01) -------------
-------------
应把算法标识符P1的值(参见安全技术规范5.1.3)置为八位组的最低4bits位。在最高4bits位中,其中较低2bits位为供将来使用的保留值,其中较高2bits位用于私有方案。目前,所有最高4bits位都应置零。
KNASint长度为256bits。如果NAS完整性算法要求128位输入密钥,则截断现有密钥,取其低128位。
初始KeNB
1)定义
? KeNB是当UE进入ECM-CONNECTED状态时由ME从KASME推衍产生的密钥,或是在eNB切换
过程中由ME从中间密钥推衍产生的密钥。
2)存储要求
? 安全存储在ME上,不应以任何方式被泄漏。
3)生成要求
要求ME中有可用的KASME。
ME可在下列过程中生成/重新生成KeNB:
- UE从EMM-DEREGISTERED状态转变为EMM-REGISTERED/ECM-CONNECTED状态时; - UE从ECM-IDLE状态转变为ECM-CONNECTED状态时; - ECM-IDLE模式下从TD/GPRS到ETD的TAU更新过程中;
- 从TD/GPRS切换到ETD后,连接状态下的密钥在线更新过程中。
当UE和eNB之间需建立初始AS安全上下文时,KeNB由ME从KASME推衍产生。首先构建一个字符串S = FC || P0 || L0,其中:
- FC = 0x11,
- P0 = 上行NAS COUNT,
- L0 = 上行NAS COUNT的长度 (即0x00 0x04)
在从TD/GPRS到ETD的TAU更新过程和切换过程中使用了映射安全上下文,此时上行NAS COUNT 应置0。
生成结果:KeNB= HMAC-SHA-256(KASME, S)。KeNB长度为256bits。
从其它网元获取KeNB*或本地根据KDF算法导出KeNB*,然后直接将KeNB*作为KeNB使用。
? ?
?
?
KRRCenc
1)定义
? KRRCenc是用特定算法对无线资源控制平面通信进行加密的密钥。它是由ME根据KeNB和加
密算法标识推衍产生的
2)存储要求
安全存储在ME中,不应以任何方式被泄漏。
3)生成要求 -------------
-------------
? 要求ME中有可用的KeNB,且UE已指定了RRC加密算法。 ? 以下参数用该用于生成字符串S。
- FC = 0x15
- P0 = 算法类型区分标识=0x03
- L0 =算法类型区分标识的长度(i.e. 0x00 0x01) - P1 = 选定的算法标识
- L1 =算法标识的长度(i.e. 0x00 0x01) KDF的输入密钥应该是KeNB.
KDF的输出是256bits的KRRCenc,使用时截取低128位。
KRRCint
1)定义
? KRRCint是用特定算法保护无线资源控制平面通信完整性的密钥。它是由ME根据KeNB和完
整性算法标识推衍产生的
2)存储要求
安全存储在ME中,不应以任何方式被泄漏。
3)生成要求
? 要求ME中有可用的KeNB,且UE已指定了RRC完整性算法。 ? 以下参数用该用于生成字符串S。
- FC = 0x15
- P0 = 算法类型区分标识=0x04
- L0 =算法类型区分标识的长度(i.e. 0x00 0x01) - P1 = 选定的算法标识
- L1 =算法标识的长度(i.e. 0x00 0x01) KDF的输入密钥应该是KeNB.
KDF的输出是256bits的KRRCint,使用时截取低128位。
KUpenc
1)定义
? KUPenc是用特定算法对用户平面通信进行加密的密钥。它是由ME根据KeNB和加密算法标
识推衍产生的。
2)存储要求
安全存储在ME中,不应以任何方式被泄漏。
3)生成要求
? 要求ME中有可用的KeNB,且UE已指定了用户数据加密算法。 ? 以下参数用该用于生成字符串S。
- FC = 0x15 -------------
-------------
- P0 = 算法类型区分标识=0x05
- L0 =算法类型区分标识的长度(i.e. 0x00 0x01) - P1 = 选定的算法标识
- L1 =算法标识的长度(i.e. 0x00 0x01) KDF的输入密钥应该是KeNB。
KDF的输出是256bits的KUPenc,使用时截取低128位。
终端的加密和完整性算法
概述
1) 加密与完整性需求
在UE与网络间的用户数据与信令数据需要受到机密性与完整性的保护。 - NAS信令需要受到强制的完整性保护以及可选的机密性保护; - RRC信令需要受到强制的完整性保护以及可选的机密性保护; - UP数据需要受到可选的机密性保护,不需要受到完整性保护;
在UE与网络端,加解密算法与完整性算法的输入参数应当保持同步。
对RRC与UP的机密性保护应在PDCP层完成,对NAS信令的机密性保护应由NAS协议来提供。 2) 算法标识符分配
除了空加密算法,以下所有的机密性保护与完整性保护算法均使用128位的输入密钥。 每一个加密算法(EEA)都分配有一个4比特长的标识。 注:(0000)2代表二进制,下同
算法标识符 加密算法 算法描述 (0000)2 EEA0 空加密算法
(0001)2 128-EEA1 基于SNOW 3G的加密算法 (0010)2 128-EEA2 基于AES的加密算法 剩下的标识留作将来使用。
UE与eNB应当对RRC信令与UP数据提供EEA0、128-EEA1与128-EEA2三种加密算法。 UE与MME应当对NAS信令提供EEA0、128-EEA1与128-EEA2三种加密算法。 每一个完整性算法(EIA)也都分配有一个4比特长的标识。 算法标识符 完整性算法 算法描述
(0000)2 EIA0 无完整性保护(仅用于紧急呼叫)
-------------
-------------
(0001)2 128-EIA1 基于SNOW 3G的完整性算法 (0010)2 128-EIA2 基于AES的完整性算法 剩下的标识留作将来使用。
UE与eNB应当对RRC信令提供128-EIA1、128-EIA2两种完整性算法。 UE与MME应当对NAS信令提供128-EIA1、128-EIA2两种完整性算法。
加密和完整性保护的算法可以参考TS 25.215、TS 25.216、TS 25.217、TS 25.218、TS 25.221、TS 25.222、TS 25.223。
空的加密性、完整性保护算法
EEA0算法也应被实现,它与其他算法有同样的效果,实现过程中产生全0的密钥流。产生的密钥流长度等同于输入参数LENGTH值,除了LENGTH值外不需要其他的输入参数。除此之外,所有与加密有关的过程都需按照附录中定义的其他算法的执行过程执行。
128位加密算法
1) 输入和输出
加密算法的输入参数包括128位的加密密钥Key, 32位计数器值COUNT,5位承载标识符BEARER,1位转发目的标识DIRECTION,以及密钥流长度LENGTH。DIRECTION位的值为0表示上行链路,值为1表示下行链路。 下图表示了加密算法EEA的使用情况,EEA算法通过使用输入参数产生密钥流逐位抑或明文来形成密文,然后通过使用同样的输入参数产生同样的密钥流逐位抑或密文来恢复明文。
COUNT DIRECTION BEARER LENGTH COUNT DIRECTION LENGTH BEARER KEY EEA KEY EEA 密钥流 密钥流 明文 密文 明文 发送者 接收者
算法基于输入参数产生密钥流KEYSTREAM,用于加密输入明文数据块PLAINTEXT从而产生输出密文块CIPHERTEXT。
-------------
-------------
输入参数LENGTH将影响密钥流KEYSTREAM BLOCK的长度,不是密钥流的实际比特位。
2) 128-EEA1
128-EEA1基于SNOW 3G算法,与3GPP TS 35.215中定义的UEA2算法相同。其中使用的IV与TS 3.4节定义的构造相同。
3) 128-EEA2
128-EEA2基于128位的AES CTR模式的算法。
CTR所需的128位计数器的序列号T1, T2, …,Ti,…将按如下规则构造:
T1的最高64位由COUNT[0] .. COUNT[31] │ BEARER[0] .. BEARER[4] │ DIRECTION │ 026(如26位0)值组成,从左至右为最高有效位至最低有效位排列,如COUNT[0]是T1的最高有效位。 T1的最低64位全为0。
后续计数器块通过标准整数增加功能对先前的计数值的低64位模264运算来获得。
128位完整性算法
1) 输入和输出
完整性算法的输入参数包括128位的完整性密钥KEY,32位的计数值COUNT,5位的承载标识BEARER,1位的转发方向标识DIRECTION,以及消息本身MESSAGE。DIRECTION位为0表示上行链路,为1表示下行链路。MESSAGE的长度位为LENGTH。 下图展示了使用完整性算法EIA认证消息完整性的情况。
COUNT DIRECTION BEARER-ID COUNT DIRECTION MESSAGE MESSAGE BEARER-ID KEY EIA KEY EIA 发送者 MAC -I XMAC -I 接收者
图 MAC-I/NAS-MAC(或者XMAC-I/XNAS-MAC)的推衍过程
基于这些输入参数,发送者使用完整性算法EIA计算32位的消息认证码(MAC-I/NAS-MAC)。消息认证码被添加在消息后随消息一起发送。接收者在收到消息后,按照发送者计算消息认证码同样的方式计算期望得到的消息认证码(XMAC-I/XNAS-MAC),并通过与收到的消息认证码MAC-I/NAS-MAC比较来验证消息的完整性。
2) 128-EIA1
128-EIA1基于SNOW-3G算法,与3GPP TS 35.215中定义的UIA2算法实现相同。其中使用的IV与TS 4.4节定义的构造方式相同,唯一的不同是FRESH[0],…FRESH[31]改为BEARER[0]…BEARER[4] | 027(例如,27位0)。 -------------
------------- 3) 128-EIA2
128-EIA2基于128位AES CMAC模式。 MESSAGE的长度为BLENGTH.
CMAC模式的输入为Mlen长度的位串M,M包含以下内容: M0 .. M31 = COUNT[0] .. COUNT[31] M32 .. M36 = BEARER[0] .. BEARER[4] M37 = DIRECTION
M38 .. M63 = 026 (i.e. 26 zero bits)
M64 .. MBLENGTH+63 = MESSAGE[0] .. MESSAGE[BLENGTH-1] Mlen = BLENGTH + 64.
AES CMAC模式使用这些输入参数产生一个长度Tlen=32的消息认证码T。T直接用于128-EIA2的输出MACT[0] .. MACT[31],其中MACT[0]为T的最高有效位。
终端的安全性激活过程
在LTE中,非接入层和接入层分别都要进行加密和完整性保护,它们是相互独立的,它们安全性的激活都是通过SMC命令来完成的,且发生在AKA之后。网络端对终端的非接入层和接入层的激活顺序是先激活非接入层的安全性,再激活接入层的安全性。
非接入层的安全模式过程
由下图可知,非接入层的安全模式过程是由网络发起的,MME发送的SMC消息是被非接入层完整性保护了的,但是没有被加密。UE在收到SMC消息后,首先要比对消息中的UE security capabilities(安全性能力)是否和自己发送给网络以触发SMC过程的UE security capabilities相同,以确定UE security capabilities未被更改,如果相同,表示可以接受,没有受到攻击,nonceMME和nonceUE用于切换时的安全性激活,不再赘述;其次,进行NAS层密钥的生成,包括KNASenc和KNASint, 前者为NAS加密密钥,后者为NAS完整性保护密钥;接着,UE将根据新产生的完整性保护密钥和算法对收到的SMC消息进行完整性校验,校验通过,表示该SMC可以被接受,此安全通道可用;最后,UE发出安全模式完成消息给MME,所有的NAS信令消息都将进行加密和完整性保护。如果安全模式命令的校验没通过的话,将发送安全模式拒绝命令给MME,UE退出连接。
-------------
-------------
接入层的安全模式过程
在非接入层的安全性激活后,紧接着将要进行接入层的安全性激活,采用AS SMC命令来实现的。如下图所示,网络端通过已经存在的KASME来生成KeNB ,利用KeNB生成完整性保护密钥对AS SMC这条消息进行完整性保护,并生成一个信息确认码MAC-I;之后,将AS SMC传给ME。ME首先利用密钥KASME来生成KeNB ,之后利用收到的算法和KeNB通过KDF生成完整性保护密钥,然后对此AS SMC信息进行完整性校验,具体是通过生成一个X-MAC,如果X-MAC和MAC-I相匹配的话,通过校验,之后进一步生成加密密钥,并发送AS SMC完成消息给eNB,此条消息也要进行加密和完整性保护,也要生成一个信息确认码MAC-I,假如校验不通过,UE会向eNB返回一条AS Mode Failure消息,表明此通道不安全,UE是要退出连接的。eNB对AS SMC完成消息进行完整性校验通过后,此时接入层的安全性就激活了,可以开始传输数据了。
-------------
-------------
术语
EPS安全上下文:UE与网络域之间本地保存的安全数据。EPS安全上下文包括EPS NAS安全上下文和EPS AS安全上下文。一个EPS安全上下文有映射的、完整本地的以及部分本地的区别。部分本地安全上下文可以转换为完整本地安全上下文,但是其他类型之间不能转换。此外EPS安全上下文还有当前的与非当前的区分。当前与非当前安全上下文可以随着时间相互转换。
EPS AS 安全上下文:包含用于AS层的密钥以及标识符,算法标识符,计数器,以及下跳参数NH,以及下跳计数器参数NCC。
EPS NAS 安全上下文:包含KASME以及对应的KSI,UE安全能力,NAS上下行计数器。当EPS NAS安全上下文还包括KNASint和KNASenc,以及确定的NAS完整性和加密算法标识符时,EPS NAS安全上下文被称为完整的EPS NAS安全上下文。
本地安全上下文:指根据AKA过程产生的KASME以及相关密钥和算法标识符的安全上下文。
映射安全上下文:指切换时根据源系统中当前安全上下文通过转换之后在目标系统生成的安全上下文。
当前安全上下文:最近被激活的安全上下文。一个当前安全上下文可以来自于一个映射的安全上下文或者是一个本地安全上下文,并且可以与一个非当前本地安全上下文共存。
非当前EPS安全上下文:指不是当前的安全上下文。非当前EPS安全上下文不包括EPS AS安全上下文。
完整本地EPS安全上下文:包含完整的EPS NAS安全上下文的本地EPS安全上下文。完整本地EPS安全上下文可以是当前状态也可以是非当前状态。
部分本地EPS安全上下文:不包含KNASint和KNASenc以及NAS完整性和加密算法标识符的本地EPS安全上下文。部分本地EPS安全上下文是非当前EPS安全上下文。
-------------
-------------
UE安全能力:一组标识UE上实现的加密和完整性算法的标识符。UE安全能力包括EPS AS和NAS安全能力。如果UE还支持TD和GPRS接入,UE安全能力也包括在这些网络中的安全能力。
UE EPS安全能力:指UE在LTE网络中的安全能力,包括EPS AS和NAS安全能力。
安全参考协议
Security aspects Security algorithms (3) 33 series35 series 3G Security; Specification of the MILENAGE algorithm set: An example TS 35.205 algorithm set for the 3GPP authentication and key generation functions f1, f1*, f2, f3, f4, f5 and f5*; Document 1: General TS 35.215 TS 35.221 Specification of the 3GPP Confidentiality and Integrity Algorithms UEA2 & UIA2; Document 1: UEA2 and UIA2 specifications Specification of the 3GPP Confidentiality and Integrity Algorithms EEA3 & EIA3; Document 1: EEA3 and EIA3 specifications
-------------