整理LTE NAS 安全相关过程 24301 33401.docx
《整理LTE NAS 安全相关过程 24301 33401.docx》由会员分享,可在线阅读,更多相关《整理LTE NAS 安全相关过程 24301 33401.docx(25页珍藏版)》请在冰豆网上搜索。
整理LTENAS安全相关过程2430133401
LTE安全框架
认证和密钥协商
AKA过程
关于卡的使用,Rel-99及其后版本的UICC上USIM应用都应能接入LTE,但应保证USIM应用没有使用TS33.102附录F中定义的私有AMF分离比特位(如果是LTE,该bit位的值为1)。
2G的SIM或者UICC上的SIM不允许接入E-UTRA。
关于终端的使用,具备LTE无线能力的ME应支持TS31.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字段的最低位,不应再被用于其它用途。
EPSAKA将产生生成用户面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(KeyDerivationFunction)计算服务网络的标识(SNid)。
当从KASME获取的密钥被成功使用,SNid绑定将鉴定服务网络标识。
否则,UE将发送用户鉴权拒绝消息并指示错误原因。
在AUTN同步错误的情况下,需要包含USIM提供的AUTS。
MME将检查UE发送的RES和XRES是否一样。
如果是则鉴权成功。
如果不是或者收到UE的错误响应,则MME可能响UE发起认证请求或者鉴权。
图1描述了基于UMTSAKA(见TS33.102)的EPSAKA认证过程。
UE和HSS共享以下密钥:
●K是存储在认证中心AuC中和UICC的USIM上的永久密钥。
●CK,IK是AKA认证过程中在AuC和USIM上推衍得到的一对密钥。
CK和IK应视其所处不同上下文中(用在EPS安全上下文中还是其他的安全上下文中)区别对待。
作为认证与密钥协商的结果,UE和MME(即EPS环境下的ASME)应产生并共享一个中间密钥KASME。
具体细节见HSS向服务网络分发认证向量的过程。
图1EPS用户认证(EPSAKA)
AKA成功建立后,UE和MME都应能创建部分本地EPS安全上下文。
该上下文应覆盖现有的非当前EPS安全上下文。
HSS向服务网络分发认证向量的过程
该过程的目的是从HSS提供给MME一个或者多个EPS鉴权向量(RAND,AUTN,XRES,KASME)来执行用户鉴权。
每一个EPS鉴权向量都能被用来鉴定UE。
由于已经通过使用更复杂的密钥层次减少了执行AKA过程的需求(特别是,业务请求可使用存储的KASME认证,而不需要执行AKA),建议MME一次向HSS仅申请获取一个EPS认证向量。
图2从HE向MME分发认证数据
HSS根据CK、IK和SN标识产生密钥KASME。
MME向HSS请求鉴权向量时应包括IMSI、服务网络标识(即MCC+MNC)、网络类型(即LTE)。
如果同步失败,MME还应在请求中包含RAND和AUTS。
此时HE应在返回新的认证向量之前检验AUTS参数。
接收到来自MME的authenticationdatarequest时,如果HE已经预先计算好EPS认证向量,则直接从HSS数据库中提取,否则按要求计算。
HSS向MME返回鉴权响应(Authenticationdataresponse),提供被请求信息。
若请求多个EPS认证向量,则按向量序列号依次返回。
MME应能识别认证向量的顺序,并且依照序列号的次序按顺序使用向量。
使用永久身份辨别用户身份的过程
当服务网络不能通过临时身份标识(GUTI)识别用户时,服务网络应调用用户身份辨别机制。
图3描述的是通过用户永久身份(IMSI)在无线通道上识别用户的机制。
图3用户身份查询
EPS密钥等级
密钥等级及生成
LTE/SAE系统中的密钥应包括接入层和非接入层的加密和完整性保护密钥,长度为128比特。
为长远发展,网络接口还应准备支持256位的密钥。
保护UP、NAS和AS的密钥的推衍以它们各自使用的安全算法为输入参数。
图4LTE的密钥等级架构
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的两虚线输入项表示按密钥推衍条件选取其中一个作为输入项。
图5LTE系统中网络节点的密钥分发和推衍方案。
图6LTE系统中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与EPSAKA认证过程推衍产生的KASME相关联。
它由MME分配,经认证请求消息发送至移动终端,并同KASME一起存储在终端。
密钥组标识KSISGSN与inter-RAT移动过程中从UMTS密钥推衍产生的映射KASME相关联。
KSISGSN是在LTE空闲模式移动过程中或从GPRS/TD切换至LTE过程中,由ME和MME分别推衍映射KASME时产生的。
KSISGSN和映射KASME存储在一起。
eKSI格式应能区分接收到的参数是KSIASME类型还是KSISGSN类型。
eKSI格式应包含一值域(eKSI格式参见3GPPTS24.301)。
KSIASME和KSISGSN格式相同。
KSIASME和KSISGSN的值域都为3比特,允许7个值来标识不同的密钥组。
在UE侧,值'111'表示没有有效KASME。
从网络发送到移动终端的eKSI的'111'值为保留值,未作定义。
HSS产生鉴权向量
HSS生成鉴权向量的示意图:
鉴权相关量的产生说明(参考TS33.102):
-amessageauthenticationcodeMAC=f1K(SQN||RAND||AMF)wheref1isamessageauthenticationfunction;
-anexpectedresponseXRES=f2K(RAND)wheref2isa(possiblytruncated)messageauthenticationfunction;
-acipherkeyCK=f3K(RAND)wheref3isakeygeneratingfunction;
-anintegritykeyIK=f4K(RAND)wheref4isakeygeneratingfunction;
-ananonymitykeyAK=f5K(RAND)wheref5isakeygeneratingfunctionorf5≡0.
FinallytheauthenticationtokenAUTN=SQNÅAK||AMF||MACisconstructed.
USIM产生鉴权相关量
相关量的说明(参考TS33.102):
UponreceiptofRANDandAUTNtheUSIMfirstcomputestheanonymitykeyAK=f5K(RAND)andretrievesthesequencenumberSQN=(SQNÅAK)ÅAK.
NexttheUSIMcomputesXMAC=f1K(SQN||RAND||AMF)andcomparesthiswithMACwhichisincludedinAUTN.Iftheyaredifferent,theusersendsuserauthenticationrejectbacktotheVLR/SGSNwithanindicationofthecauseandtheuserabandonstheprocedure.Inthiscase,VLR/SGSNshallinitiateanAuthenticationFailureReportproceduretowardstheHLRasspecifiedinsection6.3.6.VLR/SGSNmayalsodecidetoinitiateanewidentificationandauthenticationproceduretowardstheuser.
NexttheUSIMverifiesthatthereceivedsequencenumberSQNisinthecorrectrange.
IftheUSIMconsidersthesequencenumbertobenotinthecorrectrange,itsendssynchronisationfailurebacktotheVLR/SGSNincludinganappropriateparameter,andabandonstheprocedure.
ThesynchronisationfailuremessagecontainstheparameterAUTS.ItisAUTS=Conc(SQNMS)||MACS.Conc(SQNMS)=SQNMS⊕f5*K(RAND)istheconcealedvalueofthecounterSQNMSintheMS,andMACS=f1*K(SQNMS||RAND||AMF)whereRANDistherandomvaluereceivedinthecurrentuserauthenticationrequest.f1*isamessageauthenticationcode(MAC)functionwiththepropertythatnovaluableinformationcanbeinferredfromthefunctionvaluesoff1*aboutthoseoff1,...,f5,f5*andviceversa.f5*isthekeygeneratingfunctionusedtocomputeAKinre-synchronisationprocedureswiththepropertythatnovaluableinformationcanbeinferredfromthefunctionvaluesoff5*aboutthoseoff1,f1*,f2,...,f5andviceversa.
f函数
相关f函数的定义可以参看协议TS35.201~TS35.209。
KDF函数
TS33.401定义了以下KDF:
推衍密钥(KDF)=HMAC-SHA-256(Key,S)
HMAC-SHA-256参考:
[10]IETFRFC2104(1997):
"HMAC:
Keyed-HashingforMessageAuthentication".
[11]ISO/IEC10118-3(2004):
"InformationTechnology-Securitytechniques-Hash-functions-Part3:
Dedicatedhash-functions".
输入参数及其长度值应按如下规则连接成一个字符串S:
1、每个输入参数的长度应被编码为两个字节长的字符串:
a)输入参数Pi的字节数以数字K表示,范围在[0,65535]之间;
b)Li是一个2字节的数,代表写入基数2的数字K,使用特殊的位排序。
Li中任何未使用的最高有效位将置零。
例如:
如果Pi包含258字节,那么Li将是一个2字节的比特串(0000000100000010)2,或者十六进制0X010X02。
2、给定一个非负整数j表示Pi中的编码值,通过将值j写入基数2来形成Pi。
Pi的最小有效位将等于j的最小有效位。
Pi中任何未使用的最高有效位应置零,以满足Li定义的字节长度。
例如:
如果Pi是一个值为259的整数,且长度值是2个字节,则Pi的二进制表示为(0000000100000011)2,或十六进制表示为0X010X03。
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应把EPSNAS安全上下文存在安全可靠的非易失性存储器中,包括EPSAKA认证过程产生的KASME。
如果USIM支持EMM(EPS移动管理)参数存储,ME应把EPSNAS安全上下文(包括KASME和KSIASME)存在USIM上。
否则ME应把EPSNAS安全上下文存在安全可靠的非易失性存储器中。
不应以任何方式被泄漏。
3)生成要求
KASME=HMAC-SHA-256(Key,S)
Key=(CK||IK)
S=FC||P0||L0||P1||L1
∙FC=0x10,
∙P0=PLMNID,
∙L0=PLMNID的长度(i.e.0x000x03),
∙P1=SQN⊕AK
∙L1=SQN⊕AK的长度(i.e.0x000x06)
注:
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=算法类型区分值长度(即0x000x01)
P1=算法标识符
L1=算法标识符长度(即0x000x01)
应把算法标识符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=算法类型区分值长度(即0x000x01)
P1=算法标识符
L1=算法标识符长度(即0x000x01)
应把算法标识符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状态转变为ECMCONNECTED状态时;
-ECM-IDLE模式下从TD/GPRS到ETD的TAU更新过程中;
-从TD/GPRS切换到ETD后,连接状态下的密钥在线更新过程中。
●当UE和eNB之间需建立初始AS安全上下文时,KeNB由ME从KASME推衍产生。
首先构建一个字符串S=FC||P0||L0,其中:
-FC=0x11,
-P0=上行NASCOUNT,
-L0=上行NASCOUNT的长度(即0x000x04)
在从TD/GPRS到ETD的TAU更新过程和切换过程中使用了映射安全上下文,此时上行NASCOUNT应置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.0x000x01)
-P1=选定的算法标识
-L1=算法标识的长度(i.e.0x000x01)
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.0x000x01)
-P1=选定的算法标识
-L1=算法标识的长度(i.e.0x000x01)
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.0x000x01)
-P1=选定的算法标识
-L1=算法标识的长度(i.e.0x000x01)
KDF的输入密钥应该是KeNB。
KDF的输出是256bits的KUPenc,使用时截取低128位。
终端的加密和完整性算法
概述
1)加密与完整性需求
在UE与网络间的用户数据与信令数据需要受到机密性与完整性的保护。
-NAS信令需要受到强制的完整性保护以及可选的机密性保护;
-RRC信令需要受到强制的完整性保护以及可选的机密性保护;
-UP数据需要受到可选的机密性保护,不需要受到完整性保护;
在UE与网络端,加解密算法与完整性算法的输入参数应当保持同步。
对RRC与UP的机密性保护应在PDCP层完