LTESecurity加密保护算法.docx
- 文档编号:3926096
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:127
- 大小:689KB
LTESecurity加密保护算法.docx
《LTESecurity加密保护算法.docx》由会员分享,可在线阅读,更多相关《LTESecurity加密保护算法.docx(127页珍藏版)》请在冰点文库上搜索。
LTESecurity加密保护算法
LTE安全功能
1概述
本文档对LTE安全技术进展的总结,描述了与安全相关的协议,重点包括:
安全流程梳理。
1.1参考文献
[1]3GPP TS 33.401:
"3GPPSystemArchitectureEvolution(SAE);Securityarchitecture".
[2]3GPP36.331RadioResourceControl(RRC);Protocolspecification
[3]3GPP36.413S1applicationprotocol(S1AP)
[4]3GPP36.423X2applicationprotocol(X2AP)
[5]3GPPTS 36.323:
"EvolvedUniversalTerrestrialRadioAccess(E-UTRA);PacketDataConvergenceProtocol(PDCP)Specification".
1.2术语
AESAdvancedEncryptionStandard
CKCipherKey
IKIntegrityKey
EARF-DLE-UTRAAbsoluteRadioFrequencyChannelNumber-DownLink
EEAEPSEncryptionAlgorithm
EIAEPSIntegrityAlgorithm
eKSIKeySetIdentifierinE-UTRAN〔E-UTRAN的密钥组标识〕
KDFKeyDerivationFunction〔密钥获取功能〕
KSIKeySetIdentifier
MAC-IMessageAuthenticationCodeforIntegrity(TS36.323)
NCexthopChainingCounter
NHNextHop
SMCSecurityModemand
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/B.0。
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算法原理
参见36401-B.12。
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局部
如下列图,加解密算法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局部
如下列图,加解密算法EEA1的流程中第2局部有以下步骤:
1)根据EVAL_M功能计算得到参数IV3/IV2/IV1/IV0。
2)利用1〕中得到的参数,在SNOW3G算法的作用下产生密钥流
3)密钥流以4个字节为一组,第一组为z1,第二组为z2,…,最后一个为zL。
3.1.2.4EEA1算法解析
3.1.2.4.1初始化输入参数
1.根据输入参数得到SNOW3G算法需要的参数,如图3.1.2.4-1所示。
s11
s5
s2
s1
s0
s15
α-1
α
⊞
R1
R3
R2
⊞
S1
S2
FSM
图3.1.2.4-1密钥初始化流程
2.根据每个为32-bit字的k0,k1,k2,k3和128-bit变量〔由4个32-bit字IV0,IV1,IV2,IV3组成〕进展初始化:
s15=k3⊕IV0s14=k2s13=k1s12=k0⊕IV1
s11=k3⊕1s10=k2⊕1⊕IV2s9=k1⊕1⊕IV3s8=k0⊕1
s7=k3s6=k2s5=k1s4=k0
s3=k3⊕1s2=k2⊕1s1=k1⊕1s0=k0⊕1
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]为最高有效位。
如图4.2所示生成密钥流流程:
首先,FSMclock一次,丢弃FSM输出字;然后LFSR在密钥流模式下clock一次。
在n个32-bit字的密钥流生成以后,执行n次以下步骤:
✓步骤1:
FSMclock,产生一个32-bit输出字F;
✓步骤2:
计算下一个密钥流字:
zt=F⊕s0;
✓步骤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-2为输出参数。 表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) 算法的输入参数和输出参数见下表。 参数 大小〔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....0 ⊕ COUNT-I || 0000000000000000||DIRECTION||000000000000000 ⊕ FRESH 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局部 如下列图,完整性保护算法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]||COUNT-I[1]||COUNT-I[2]||…||COUNT-I[31] IV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LTESecurity 加密 保护 算法