2 加密和完整性保护算法
2.1 完整性保护
参数说明:
UE与eNB之间的RRC完整性保护由PDCP提供,PDCP以下各层不需要完整性保护。EIA算法(完整性)的输入参数为:
(1) 一个128bit的密钥KRRCint; (2) 一个5bit的承载id BEARER;
(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 BEARER 32bit 5bit 由HFN和PDCP SN组成,共32bit 取值为―RB identity\-1 特例:对于EIA1算法,输入为32bit,高27bit填零,低5bit为BEARER。 DIRECTION MESSAGE LENGTH 1bit 0—上行,1—下行 RRC消息内容,即PDCP SDU。 (1)对于EIA1和EIA3,采用流密码加密方式,LENGTH取值为MESSAGE的bit数; (2)对于EIA2,采用块密码加密方式,LENGTH取值为MESSAGE的字节数。 KEY 算法
128-bit algorithms 128bit KRRCint EIA0――空算法; 6
EIA1――基于3G网络的标准算法 sonw3G; 生成KEYSTREAM BLOCK EIA2――增强性加密算法AES; EIA3――祖冲之算法ZUC; 输出 MAC-I/ XMAC-I 32bit
2.2 加密
参数说明:
UE与eNB之间的用户面通过PDCP协议进行加密。128bit EEA算法(加密)的输入INPUT参数为:(1) 一个128bit 密钥KUPenc ; (2) 一个5bit承载标识BEARER; (3) 1bit传输方向DIRECTION; (4) 密钥流的长度LENGTH; (5) 时间以及方向。 输入 COUNT 32bit 由HFN和PDCP SN组成,共32bit BEARER 5bit 对于信令数据―――RB identity\-1 对于业务数据――DRB identity-1 DIRECTION 1bit 0—上行,1—下行 LENGTH 16bit Keystream block长度,在加密算法中,利用keystream block对未加密的数据的消息字段进行操作。 (1)对于EIA1和EIA3,采用流密码加密方式: LENGTH取值为Keystream block的bit数; (2)对于EIA2,采用块密码加密方式: LENGTH取值为Keystream block的字节数。 对于信令数据――加密数据为PDCP DATA和MAC-I,长度为 7
PDCP DATA长度加上MAC-I长度;而PDCP DATA即为未压缩的PDCP SDU。 对于业务数据――加密数据为PDCP DATA,长度为PDCP DATA长度;而PDCP DATA可以为压缩的PDCP SDU,也可以为未压缩的PDCP SDU。 KEY 算法 128bit 对于信令数据――KRRCenc 对于业务数据――KUPenc 128-bit algorithms EEA0――空算法; EEA1――基于3G网络的标准算法 sonw3G; EEA2――增强性加密算法AES; EEA3――祖冲之算法ZUC; 安全加密是针对如下三种类型的PDU。
(1)控制平面SRB数据的PDCP Data PDU:首先对信令数据进行完整性保护,然后对信令数据和认证码一起加密。
RRRData...PDCP SNOct 1Oct 2MAC-I 认证码MAC-I (cont.)认证码MAC-I (cont.)认证码MAC-I (cont.)认证码Oct N-3Oct N-2Oct N-1Oct N 完整性保护加密
(2)使用12bit SN值的PDCP Data PDU:此格式适用于携带映射到RLC AM(应答)或RLC UM(非应答)的DRB的数据的PDCP Data PDU,对数据进行加密。
D/CRRRPDCP SNOct 1Oct 2Oct 3加密PDCP SN (cont.)Data...
(3)使用7bit SN值的PDCP Data PDU:此格式适用于携带映射到RLC UM的DRB的数据的PDCP Data PDU,对数据进行加密。
8
D/CPDCP SNData...Oct 1Oct 2加密
2.3 加密和完整性保护的关系
PDCP SDU编号完整性验证MAC-1计算解密加密PDCP PDURRC信令,完整性保护结果需要进行加/解密:
确定计数
? 对于发送方:先进行完整性保护(MAC-I计算),后进行加密。 ? 对于接收方:先进行数据解密,再进行完整性验证(MAC-I校验)。
注:RRC信令的处理方式正好与NAS信令的处理方式相反。NAS信令先加密,后进行完整性保护,完整性保护信息不进行加密。
3 算法
3.1 算法介绍
3.1.1 EEA0、EIA0 (NULL Algorithm)
参见36401- Annex B /B.0。
9
3.1.1.1 EEA0算法
EEA0算法的实现效果和应用全0的KEYSTREAM进行加密效果等同。KEYSTREAM的长度和输入参数LENGTH相同。此外,和加密相关的所有操作都应遵循本章所描述的加密算法。 3.1.1.2 EIA0算法
EIA0算法的实现效果和生成全0的MAC-I/NAS-MAC 和 XMAC-I/XNAS-MAC的效果相同。当应用EIA0算法时,无需进行重保护。除非接收侧不校验接收到的MAC,否则,所有和完整性保护相关的操作都应遵循本章描述的完整性保护算法。
EIA0仅应用在处于LSM(受限服务模式)的UE进行紧急呼叫时。 注1:文中提到的重保护是指重新进行完整性保护。
注2:E-UTRAN中,认为使用2G SIM的UE处于LSM状态。 注3:EEA0和EIA0没有提供任何安全。
3.1.2 128-EEA1
3.1.2.1 EEA1算法原理
参见36401-B.12。
128-EIA1基于SNOW 3G算法,和UEA2的实现方式相同。128-EIA1采用流密码加密方式进行加密。利用LFSR(线性反馈移位寄存器)和FSM(有限状态机)进行更新密钥流。用新产生的密钥流和明文按位进行异或,从而得出密文。输出的密钥流以32位为一组,最终可形成z1、z2、?zt之类的密钥流,其中t = (n + 31) / 32,n为明文的长度(以bit为单位)。解密过程与加密过程类似。采用相同的算法和密钥,唯一不同的是对密文进行解密。
3.1.2.2 输入和输出
u32 f8(u8 *CK-Key, u32 Count, u32 Bearer, u32 Direction, u8 *Data, u32 Length) 表3.1.2.2-1 输入参数
参数 COUNT-C BEAR DIRECTION CK LENGTH 大小(bits) 32 5 1 128 64 注释 结构取决于输入COUNT-I[0]…COUNT-I[31] 承载实体BEARER[0]…BEARER[4] 传输方向DIRECTION[0] 加解密密钥IK[0]…IK[127] 加密的明文的长度(以位为单位) 10