LTE.docx
《LTE.docx》由会员分享,可在线阅读,更多相关《LTE.docx(126页珍藏版)》请在冰点文库上搜索。
LTE
LTE安全功能
1概述
本文档对LTE安全技术进行的总结,描述了与安全相关的协议,重点包括:
安全流程梳理。
1.1参考文献
[1]3GPP TS :
"3GPPSystemArchitectureEvolution(SAE);Securityarchitecture".
[2]3GPPRadioResourceControl(RRC);Protocolspecification
[3]3GPPS1applicationprotocol(S1AP)
[4]3GPPX2applicationprotocol(X2AP)
[5]3GPPTS :
"EvolvedUniversalTerrestrialRadioAccess(E-UTRA);PacketDataConvergenceProtocol(PDCP)Specification".
1.2术语
AESAdvancedEncryptionStandard
CKCipherKey
IKIntegrityKey
EARFCN-DLE-UTRAAbsoluteRadioFrequencyChannelNumber-DownLink
EEAEPSEncryptionAlgorithm
EIAEPSIntegrityAlgorithm
eKSIKeySetIdentifierinE-UTRAN(E-UTRAN的密钥组标识)
KDFKeyDerivationFunction(密钥获取功能)
KSIKeySetIdentifier
MAC-IMessageAuthenticationCodeforIntegrity()
NCCNexthopChainingCounter
NHNextHop
SMCSecurityModeCommand
SQNSequenceNumber
HFNHyperFrameNumber
LSMLimitedServiceMode(受限服务模式)
COUNT:
包括上行下行两个变量。
ChainingofKeNB:
从一个KeNB生成另一个KeNB(如切换过程中,根据生成源小区KeNB生成目标小区KeNB)
eKSI:
eKSI是KASME的一个指示,由MME进行分配,作用是在UE和MME中指示一个通过EPSAKA过程产生的NativeKASME,可以进行KASME的重新启用。
eKSI为4bit,最高位指示eKSI值是KASME还是KSGSN,剩余的三位填写KSI值。
在从UE发送给MME的消息中,如果eKSI值为全1,表示没有可用的eKSI。
Mappedsecuritycontext:
跨系统移动,由源系统的安全上下文,映射获得的安全上下文。
比如在UTRAN到E-UTRAN的切换过程中,通过UTRAN的安全上下文获取E-UTRAN的安全上下文。
RefreshofKeNB:
KASME不变情况下的KeNB更新。
通过小区内切换过程,实现的KeNB参数变化。
如在PATHSWITCH后目标eNB根据MME提供的NH/NCC对,发起小区内切换,通知UE采用最新的NCC进行KeNB计算,实现KeNB参数的变化。
PDCPCOUNTs越界时,需要对KeNB,KRRC-enc,KRRC-int,andKUP-en进行Keyrefresh。
Re-keyingofKeNB:
通过新的KASME获取新KeNB。
KeNB,KRRC-enc,KRRC-int,andKUP-enc可以进行Re-keying,由MME发起,通常在NAS安全交互后发生。
UEsecuritycapabilities:
UE支持的EPSAS和NAS的完整性保护和加密算法,以及UE支持的UTRAN和GERAN的加密算法和完整性保护算法。
UEEPSsecuritycapabilities:
UE支持的EPS系统的加密算法和完整性保护算法。
NASCOUNT:
包括上下行两个变量。
UE和MME分别保存。
在UE侧NASCOUNT都保存在USIM中或者UE的非易失性存储设备中。
NASCOUNT=NASoverflowCounter(16位)||NASSN(8位)。
NASSN是在NAS信令交互过程中,NAS头中包含的SequenceNumberIE。
2加密和完整性保护算法
2.1完整性保护
参数说明:
UE与eNB之间的RRC完整性保护由PDCP提供,PDCP以下各层不需要完整性保护。
EIA算法(完整性)的输入参数为:
(1)一个128bit的密钥KRRCint;
(2)一个5bit的承载idBEARER;
(3)一个1bit的传输方向DIRECTION;
(4)密钥流长度LENGTH;
(5)时间和方向的32bit。
特例:
切换过程中的RRC层也需要进行RRC完整性校验码的生成,用于生成ShortMAC-I。
ShortMAC-I根据VarShortMAC-Input作为MESSAGE,根据原服务小区的KRRCint作为KEY,COUNT/BEARER/DIRECTION的bit位全部为1,计算获得;而VarShortMAC-Input由目标小区cellIdentity,原服务小区的PCI和c-RNTI组成。
输入
COUNT
32bit
由HFN和PDCPSN组成,共32bit
BEARER
5bit
取值为“RBidentity"-1
特例:
对于EIA1算法,输入为32bit,高27bit填零,低5bit为BEARER。
DIRECTION
1bit
0—上行,1—下行
MESSAGE
RRC消息内容,即PDCPSDU。
LENGTH
(1)对于EIA1和EIA3,采用流密码加密方式,LENGTH取值为MESSAGE的bit数;
(2)对于EIA2,采用块密码加密方式,LENGTH取值为MESSAGE的字节数。
KEY
128bit
KRRCint
算法
128-bitalgorithms
生成KEYSTREAMBLOCK
EIA0――空算法;
EIA1――基于3G网络的标准算法
sonw3G;
EIA2――增强性加密算法AES;
EIA3――祖冲之算法ZUC;
输出
MAC-I/XMAC-I
32bit
2.2加密
参数说明:
UE与eNB之间的用户面通过PDCP协议进行加密。
128bitEEA算法(加密)的输入INPUT参数为:
(1)一个128bit密钥KUPenc;
(2)一个5bit承载标识BEARER;
(3)1bit传输方向DIRECTION;
(4)密钥流的长度LENGTH;
(5)时间以及方向。
输入
COUNT
32bit
由HFN和PDCPSN组成,共32bit
BEARER
5bit
对于信令数据――“RBidentity"-1
对于业务数据――DRBidentity-1
DIRECTION
1bit
0—上行,1—下行
LENGTH
16bit
Keystreamblock长度,在加密算法中,利用keystreamblock对未加密的数据的消息字段进行操作。
(1)对于EIA1和EIA3,采用流密码加密方式:
LENGTH取值为Keystreamblock的bit数;
(2)对于EIA2,采用块密码加密方式:
LENGTH取值为Keystreamblock的字节数。
对于信令数据――加密数据为PDCPDATA和MAC-I,长度为PDCPDATA长度加上MAC-I长度;而PDCPDATA即为未压缩的PDCPSDU。
对于业务数据――加密数据为PDCPDATA,长度为PDCPDATA长度;而PDCPDATA可以为压缩的PDCPSDU,也可以为未压缩的PDCPSDU。
KEY
128bit
对于信令数据――KRRCenc
对于业务数据――KUPenc
算法
128-bitalgorithms
EEA0――空算法;
EEA1――基于3G网络的标准算法
sonw3G;
EEA2――增强性加密算法AES;
EEA3――祖冲之算法ZUC;
安全加密是针对如下三种类型的PDU。
(1)控制平面SRB数据的PDCPDataPDU:
首先对信令数据进行完整性保护,然后对信令数据和认证码一起加密。
(2)使用12bitSN值的PDCPDataPDU:
此格式适用于携带映射到RLCAM(应答)或RLCUM(非应答)的DRB的数据的PDCPDataPDU,对数据进行加密。
(3)使用7bitSN值的PDCPDataPDU:
此格式适用于携带映射到RLCUM的DRB的数据的PDCPDataPDU,对数据进行加密。
2.3加密和完整性保护的关系
RRC信令,完整性保护结果需要进行加/解密:
对于发送方:
先进行完整性保护(MAC-I计算),后进行加密。
对于接收方:
先进行数据解密,再进行完整性验证(MAC-I校验)。
注:
RRC信令的处理方式正好与NAS信令的处理方式相反。
NAS信令先加密,后进行完整性保护,完整性保护信息不进行加密。
3算法
3.1算法介绍
3.1.1EEA0、EIA0(NULLAlgorithm)
参见36401-AnnexB/。
3.1.1.1EEA0算法
EEA0算法的实现效果和应用全0的KEYSTREAM进行加密效果等同。
KEYSTREAM的长度和输入参数LENGTH相同。
此外,和加密相关的所有操作都应遵循本章所描述的加密算法。
3.1.1.2EIA0算法
EIA0算法的实现效果和生成全0的MAC-I/NAS-MAC和XMAC-I/XNAS-MAC的效果相同。
当应用EIA0算法时,无需进行重保护。
除非接收侧不校验接收到的MAC,否则,所有和完整性保护相关的操作都应遵循本章描述的完整性保护算法。
EIA0仅应用在处于LSM(受限服务模式)的UE进行紧急呼叫时。
注1:
文中提到的重保护是指重新进行完整性保护。
注2:
E-UTRAN中,认为使用2GSIM的UE处于LSM状态。
注3:
EEA0和EIA0没有提供任何安全。
3.1.2128-EEA1
3.1.2.1EEA1算法原理
参见。
128-EIA1基于SNOW3G算法,和UEA2的实现方式相同。
128-EIA1采用流密码加密方式进行加密。
利用LFSR(线性反馈移位寄存器)和FSM(有限状态机)进行更新密钥流。
用新产生的密钥流和明文按位进行异或,从而得出密文。
输出的密钥流以32位为一组,最终可形成z1、z2、…zt之类的密钥流,其中t=(n+31)/32,n为明文的长度(以bit为单位)。
解密过程与加密过程类似。
采用相同的算法和密钥,唯一不同的是对密文进行解密。
3.1.2.2输入和输出
u32f8(u8*CK-Key,u32Count,u32Bearer,u32Direction,u8*Data,u32Length)
表3.1.2.2-1输入参数
参数
大小(bits)
注释
COUNT-C
32
结构取决于输入COUNT-I[0]…COUNT-I[31]
BEAR
5
承载实体BEARER[0]…BEARER[4]
DIRECTION
1
传输方向DIRECTION[0]
CK
128
加解密密钥IK[0]…IK[127]
LENGTH
64
加密的明文的长度(以位为单位)
IBS
LENGTH
输入bit流,inputbitstream
表3.1.2.2-2输出参数
参数
大小(bits)
注释
OBS
LENGTH
输出bit流,outputbitstream
3.1.2.3EEA1算法流程图
图3.1.2.3-1EEA1加解密算法流程,第1部分
如图3.1.2.3-1所示,加解密算法EEA1的流程中第1部分有如下步骤:
1)将输入变量转变为适用于SNOW3G算法的输入变量:
K3
=
IK[0]
||
IK[1]
||
IK[2]
||
…
||
IK[31]
K2
=
IK[32]
||
IK[33]
||
IK[34]
||
…
||
IK[63]
K1
=
IK[64]
||
IK[65]
||
IK[66]
||
…
||
IK[95]
K0
=
IK[96]
||
IK[97]
||
IK[98]
||
…
||
IK[127]
IV3
=
COUNT-C[0]||COUNT-C[1]||COUNT-C[2]||…||COUNT-C[31]
IV2
=
BEARER[0]||BEARER[1]||…||BEARER[4]||DIRECTION[0]||0||…||0
IV1
=
IV3
IV0
=
IV2
2)根据SNOW3G算法,得到密钥流
图3.1.2.3-2EEA1加解密算法流程,第2部分
如图3.1.2.3-2所示,加解密算法EEA1的流程中第2部分有以下步骤:
1)根据EVAL_M功能计算得到参数IV3/IV2/IV1/IV0。
2)利用1)中得到的参数,在SNOW3G算法的作用下产生密钥流
3)密钥流以4个字节为一组,第一组为z,第二组为z,…,最后一个为z。
3.1.2.4EEA1算法解析
3.1.2.4.1初始化输入参数
1.根据输入参数得到SNOW3G算法需要的参数,如图3.1.2.4-1所示。
图3.1.2.4-1密钥初始化流程
2.根据每个为32-bit字的k0,k1,k2,k3和128-bit变量(由4个32-bit字IV0,IV1,IV2,IV3组成)进行初始化:
s15=k3IV0s14=k2s13=k1s12=k0IV1
s11=k31s10=k21IV2s9=k11IV3s8=k01
s7=k3s6=k2s5=k1s4=k0
s3=k31s2=k21s1=k11s0=k01
FSM初始为:
R1=R2=R3=0;
执行以下步骤,循环32次:
步骤1:
更新FSM(有限状态机)来产生初值F(四个字节)
步骤2:
利用LFSR(线性反馈移位寄存器)以F为输入参数进行密钥初始化
3.1.2.4.2生成密钥流
s11
s5
s2
s1
s0
s15
-1
⊞
R1
R3
R2
⊞
zt
S2
S1
FSM
图3.1.2.4-2生成密钥流流程
密钥流是一串字(四个字节)组成的位流,以四个字节为一组。
用z1,z1,……zn表示。
其中,n=(LENGTH+31)/32,z1表示最高有效字。
按照最高字到最低字的顺序组合z1||z2||……||zn。
最终得到的密钥流为KS[0],KS[2],……KS[LENGTH-1],其中KS[0]为最高有效位。
如图所示生成密钥流流程:
首先,FSMclock一次,丢弃FSM输出字;然后LFSR在密钥流模式下clock一次。
在n个32-bit字的密钥流生成以后,执行n次以下步骤:
步骤1:
FSMclock,产生一个32-bit输出字F;
步骤2:
计算下一个密钥流字:
zt=Fs0;
步骤3:
LFSR在密钥流模式下clock。
3.1.2.4.3计算得到密文
利用已经生成的密钥流和明文做异或操作,得到密文
对于整数i,有以下表达式,for为循环语句,OBS为密文
for(i=0;i{
OBS[i]=IBS[i]^KS[i];
}
3.1.3128-EEA2
3.1.3.1EEA2算法原理
128-EEA2算法基于CTR模式的128-bitAES。
AES(ADVANCEDENCRYPTIONSTANDARD)的加密算法有如下几种模式:
CBC(CipherBlockChaining)模式、ECB(ElectronicCodebook)模式、(CFB)CipherFeedback模式、(OFB)OutputFeedback模式、CTR(COUNTER)模式、CMAC模式等。
而EEA2算法采用的就是128位的AES中的CTR模式进行加密的。
AES的加密原理是块加密算法和对称加密算法。
EEA2是以16个字节(128位)为一块,把密钥和明文分成若干块。
用轮密钥的方法来产生密钥,每一轮采用不同的替换函数进行变换,这样可以保证有更高的安全性。
CTR模式(COUNTER)顾名思义就是计数模式,利用COUNT、BEAR、DIRECTION等参数构成一个128位的输入块,用最低位的32位的值做为计数值,每加密一块明文计数就增加一次,这样就会产生T1、T2、T3……Tn等若干输入块,这样在每一块明文加密的过程中采用的输入块都是不相同的,这样的目的就是保证了安全性,不易被破解。
EEA2的CTR模式的加解密过程可以用下面的公式来简易给出:
CTR加密:
Oj=CIPHK(Tj)forj=1,2…n;
Cj=Pj⊕Ojforj=1,2…n-1;
C*n=P*n⊕MSBu(On).
CTR解密:
Oj=CIPHK(Tj)forj=1,2…n;
Pj=Cj⊕Ojforj=1,2…n-1;
P*n=C*n⊕MSBu(On).
其中:
n=(Length)/16;
输入块T1、T2……Tn的关系如下:
T1=COUNT[0]|……COUNT[31]|BEARER[0]|……BEARER[4]|DIRECTION|0^26|0^32|COUNTER[0]……COUNTER[31];
Tn=Tn-1+1;计数的增加通过COUNTER=(COUNTER+1)mod(2^32)来实现。
3.1.3.2输入和输出
表3.1.4.2-1为输入参数,表为输出参数。
表3.1.4.2-1输入参数
参数
大小(bits)
注释
COUNT-C
32
结构取决于输入COUNT-I[0]…COUNT-I[31]
BEAR
5
承载实体BEARER[0]…BEARER[4]
DIRECTION
1
传输方向DIRECTION[0]
IK
128
加解密密钥IK[0]…IK[127]
LENGTH
64
加密的明文的长度(以字节为单位)
T-COUNTER
128
利用以上参数构造的输入块的长度
IBS
LENGTH
输入的明文
表3.1.4.2-2输出参数
参数
大小(bits)
注释
OBS
LENGTH
输出的密文
3.1.3.3EEA2算法流程图
图3.1.4.3-1EEA2加解密算法流程
如图3.1.4.3-1所示,加解密算法EEA2的流程有以下步骤:
1)根据输入参数COUNT、BEARER、DIRECTION等构造输入输入块T1
2)从RRC层获得输入参数KEY;
3)把明文/密文分成若干块,每块的长度为16字节(128位);
4)输入块在轮密钥的作用下通过函数替换产生输出块;
5)输出块和明文做异或操作产生一块密文;
6)计数块T加一,更新计数值,产生新的输入块;
7)执行到最后一块则推出
8)执行步骤4
注意:
若最后一块明文的长度不够16字节(128位),则在加密的过程中要单独处理。
处理完后放到之前产生的密文/明文的后面。
3.1.4128-EIA1
3.1.4.1EIA1算法原理
128-EIA1基于SNOW3G算法,和UIA2的实现方式相同。
3.1.4.2输入和输出
u32f9(constu8*key,u32count,u32fresh,intdir,u8*data,u64length)
算法的输入参数和输出参数见下表。
表3.1.3.2-1输入参数
参数
大小(bits)
注释
COUNT-I
32
结构取决于输入COUNT-I[0]…COUNT-I[31]
FRESH
32
随机数FRESH[0]…FRESH[31]
DIRECTION
1
传输方向DIRECTION[0]
IK
128
完整性密钥IK[0]…IK[127]
LENGTH
64
MESSAGE的长度,比特
MESSAGE
LENGTH
输入bit流
表3.1.3.2-1输出参数
参数
大小(bits)
注释
MAC-I
32
消息鉴权码MAC-I[0]…MAC-I[31]
3.1.4.3EIA1算法流程图
COUNT-I
||
FRESH
||
DIRECTION||0....0COUNT-I
||
0000000000000000||DIRECTION||000000000000000FRESH
IV3
||
IV2
||
IV1
||
IV0
SNOW3G
IK
K3
||
K2
||
K1
||
K0
z1
||
z2
||
z3
||
z4
||
z5
P
||
Q
||
q32||...||q63
||
OTP[0]...OTP[31]
图3.1.3.3-1EIA1完整性保护算法流程,第1部分
如图3.1.3.3-1所示,完整性保护算法EIA1的流程中第1部分有以下步骤:
1)将输入变量转变为适用于SNOW3G算法的输入变量:
K3
=
IK[0]
||
IK[1]
||
IK[2]
||
…
||
IK[31]
K2
=
IK[32]
||
IK[33]
||
IK[34]
||
…
||
IK[63]
K1
=
IK[64]
||
IK[65]
||
IK[66]
||
…
||
IK[95]
K0
=
IK[96]
||
IK[97]
||
IK[98]
||
…
||
IK[127]
IV3
=
COUNT-I[0]||COU