LTE_Security(加密保护算法)[互联网+]_第1页
LTE_Security(加密保护算法)[互联网+]_第2页
LTE_Security(加密保护算法)[互联网+]_第3页
LTE_Security(加密保护算法)[互联网+]_第4页
LTE_Security(加密保护算法)[互联网+]_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、互联 b 类1 LTE 安安全全功功能能互联 b 类2目目 录录1概述.41.1参考文献.41.2术语.42加密和完整性保护算法.62.1完整性保护完整性保护.62.2加密加密.72.3加密和完整性保护的关系加密和完整性保护的关系.93算法.93.1算法介绍.93.1.1EEA0、EIA0 (NULL Algorithm).93.1.2128-EEA1.103.1.3128-EEA2.153.1.4128-EIA1 .173.1.5128-EIA2 .233.1.6EIA3、EEA3(ZUC).293.2算法选择.383.2.1初始安全上下文建立过程: .383.2.2X2 切换过程中算法选择

2、: .383.2.3S1 切换过程中的算法选择:.384密钥的生成和更新.384.1HMAC-SHA256()算法.384.1.1输入输出 .394.1.2HMAC 过程.404.1.3SHA-256 算法.414.2密钥层次.444.3接入层的密钥生成.464.4接入层的密钥处理机制:.495ENB 影响分析.515.1流程分析.515.1.1初始业务接入 .515.1.2X2 切换 .525.1.3eNB 内切换.535.1.4S1 切换.545.1.5RRC 重建.545.1.5UE 能力改变.625.1.6安全密钥更新 .635.1.7E-UTRANUTRAN/GERAN 的切换.64

3、互联 b 类35.1.8UTRAN/GERANE-UTRAN 的切换.655.1.9PDCP 计数器回卷.665.2性能分析.665.2.5UP.666相关协议参数.686.1TS36.331.686.1.1RRCConnectionReconfiguration.686.1.2RRCConnectionReestablishmentRequest.706.1.3RRCConnectionReestablishment .716.1.4SecurityModeCommand.726.1.5HandoverPreparationInformation.726.1.6MobilityFromEUT

4、RACommand message.746.2TS36.413.776.2.1INITIAL CONTEXT SETUP REQUEST.776.2.2UE CONTEXT MODIFICATION REQUEST.796.2.3PATH SWITCH REQUEST ACKNOWLEDGE .796.2.4HANDOVER REQUEST.806.2.5HANDOVER COMMAND.826.3TS36.423.836.3.1HANDOVER REQUEST.836.4TS36.323.856.4.1PDCP SN.856.4.2Data.856.4.3MAC-I.856.4.4COUNT

5、.857汇总.867.1流程.877.1.1SMC 流程.877.1.2eNB 间切换(S1 切换、X2 切换).877.1.3RRC 重建流程.887.1.4小区内切换 .927.1.5PDCP 回卷流程.937.1.6UE 上下文修改.937.2性能优化.937.2.1DSP 支持 ZUC.948问题.949附录 ZUC 相关资料 .949.1ZUC 算法研制中心提供的性能数据 .949.2ZUC IP 核的设计与实现.959.3CLP-411: ZUC 后备(LOOK ASIDE) 密码核.97互联 b 类41 概述概述本文档对 LTE 安全技术进行的总结,描述了与安全相关的协议,重点包

6、括:安全流程梳理。1.1 参考文献1 3GPP TS 33.401:3GPP System Architecture Evolution (SAE); Security architecture.2 3GPP 36.331 Radio Resource Control (RRC); Protocol specification3 3GPP 36.413 S1 application protocol (S1AP)4 3GPP 36.423 X2 application protocol (X2AP)5 3GPP TS 36.323: Evolved Universal Terrestrial

7、Radio Access (E-UTRA); Packet Data Convergence Protocol (PDCP) Specification.1.2 术语AESAdvanced Encryption StandardCKCipher KeyIKIntegrity KeyEARFCN-DLE-UTRA Absolute Radio Frequency Channel Number-Down LinkEEAEPS Encryption AlgorithmEIAEPS Integrity AlgorithmeKSIKey Set Identifier in E-UTRAN (E-UTRA

8、N 的密钥组标识)KDFKey Derivation Function(密钥获取功能)KSIKey Set IdentifierMAC-IMessage Authentication Code for Integrity ( TS36.323 )NCCNext hop Chaining CounterNHNext HopSMCSecurity Mode CommandSQNSequence NumberHFNHyper Frame NumberLSMLimited Service Mode(受限服务模式)COUNT:包括上行下行两个变量。HFNPDCP SNChaining of KeNB:

9、互联 b 类5从一个 KeNB生成另一个 KeNB(如切换过程中,根据生成源小区 KeNB生成目标小区 KeNB)eKSI:eKSI 是 KASME的一个指示,由 MME 进行分配,作用是在 UE 和 MME 中指示一个通过 EPS AKA 过程产生的 Native KASME,可以进行 KASME的重新启用。eKSI 为 4bit,最高位指示 eKSI 值是 KASME还是 KSGSN,剩余的三位填写 KSI 值。在从 UE 发送给 MME 的消息中,如果 eKSI 值为全 1,表示没有可用的 eKSI。Mapped security context: 跨系统移动,由源系统的安全上下文,映射

10、获得的安全上下文。比如在 UTRAN 到 E-UTRAN 的切换过程中,通过 UTRAN 的安全上下文获取 E-UTRAN 的安全上下文。Refresh of KeNB: KASME不变情况下的 KeNB更新。通过小区内切换过程,实现的 KeNB参数变化。如在 PATH SWITCH 后目标 eNB 根据 MME 提供的NH/NCC 对,发起小区内切换,通知 UE 采用最新的 NCC 进行 KeNB计算,实现 KeNB参数的变化。PDCP COUNTs 越界时,需要对 KeNB, KRRC-enc, KRRC-int, and KUP-en进行 Key refresh。Re-keying of

11、 KeNB: 通过新的 KASME获取新 KeNB。KeNB, KRRC-enc, KRRC-int, and KUP-enc可以进行 Re-keying,由 MME 发起,通常在 NAS 安全交互后发生。UE security capabilities: UE 支持的 EPS AS 和 NAS 的完整性保护和加密算法,以及 UE 支持的 UTRAN 和 GERAN 的加密算法和完整性保护算法。UE EPS security capabilities: UE 支持的 EPS 系统的加密算法和完整性保护算法。NAS COUNT:包括上下行两个变量。UE 和 MME 分别保存。在 UE 侧 NAS

12、 COUNT 都保存在 USIM 中或者 UE 的非易失性存储设备中。NAS COUNT = NAS overflow Counter(16 位) | NAS SN(8 位) 。NAS SN 是在 NAS 信令交互过程中,NAS 头中包含的 Sequence Number IE。互联 b 类62 加密和完整性保护算法加密和完整性保护算法2.1 完整性保护完整性保护参数说明:UE 与 eNB 之间的 RRC 完整性保护由 PDCP 提供,PDCP 以下各层不需要完整性保护。EIA 算法(完整性)的输入参数为:(1)一个 128bit 的密钥 KRRCint;(2)一个 5bit 的承载 id B

13、EARER;(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 组成。COUNT32bit由HFN和P

14、DCP SN组成,共32bitBEARER5bit取值为“RB identity-1特例:对于EIA1算法,输入为32bit,高27bit填零,低5bit为BEARER。DIRECTION1bit0上行,1下行MESSAGE RRC消息内容,即PDCP SDU。LENGTH(1)对于EIA1和EIA3,采用流密码加密方式,LENGTH取值为MESSAGE的bit数;(2)对于EIA2,采用块密码加密方式,LENGTH取值为MESSAGE的字节数。输入KEY128bitKRRCint互联 b 类7算法128-bit algorithms生成KEYSTREAM BLOCKEIA0空算法;EIA1基

15、于3G网络的标准算法 sonw3G;EIA2增强性加密算法AES;EIA3祖冲之算法ZUC;输出MAC-I/ XMAC-I32bit2.2 加密加密参数说明:UE 与 eNB 之间的用户面通过 PDCP 协议进行加密。128bit EEA 算法(加密)的输入 INPUT 参数为:(1)一个 128bit 密钥 KUPenc ;(2)一个 5bit 承载标识 BEARER;(3)1bit 传输方向 DIRECTION;(4)密钥流的长度 LENGTH;(5)时间以及方向。 COUNT32bit由HFN和PDCP SN组成,共32bitBEARER5bit对于信令数据“RB identity-1对

16、于业务数据DRB identity-1DIRECTION1bit0上行,1下行输入LENGTH16bitKeystream block长度,在加密算法中,利用keystream block对未加密的数据的消息字段进行操作。 (1)对于EIA1和EIA3,采用流密码加密方式: LENGTH取值为Keystream block的bit数; (2)对于EIA2,采用块密码加密方式:互联 b 类8 LENGTH取值为Keystream block的字节数。 对于信令数据加密数据为PDCP DATA和MAC-I,长度为PDCP DATA长度加上MAC-I长度;而PDCP DATA即为未压缩的PDCP S

17、DU。 对于业务数据加密数据为PDCP DATA,长度为PDCP DATA长度;而PDCP DATA可以为压缩的PDCP SDU,也可以为未压缩的PDCP SDU。KEY128bit对于信令数据KRRCenc对于业务数据KUPenc算法128-bit algorithmsEEA0空算法;EEA1基于3G网络的标准算法 sonw3G;EEA2增强性加密算法AES;EEA3祖冲之算法ZUC;安全加密是针对如下三种类型的 PDU。(1)控制平面 SRB 数据的 PDCP Data PDU:首先对信令数据进行完整性保护,然后对信令数据和认证码一起加密。Oct 1Oct 2Oct NOct N-1Oct

18、 N-2Oct N-3.DataPDCP SNRRRMAC-I 认证码MAC-I (cont.)认证码MAC-I (cont.)认证码MAC-I (cont.)认证码 完完整整性性保保护护加加密密(2)使用 12bit SN 值的 PDCP Data PDU:此格式适用于携带映射到 RLC AM(应答)或 RLC UM(非应答)的 DRB 的数据的 PDCP Data PDU,对数据进行加密。.PDCP SN (cont.)DataD/CPDCP SNRRROct 1Oct 2Oct 3加密(3)使用 7bit SN 值的 PDCP Data PDU:此格式适用于携带映射到 RLC UM 的

19、DRB 的数据的 PDCP Data PDU,对数据进行加密。互联 b 类9.D/CPDCP SNOct 1Oct 2Data加密2.3 加密和完整性保护的关系加密和完整性保护的关系完整性验证加密P PD DC CP P S SD DU UMAC-1计算解密确定计数P PD DC CP P P PD DU U编号RRC 信令,完整性保护结果需要进行加/解密:对于发送方:先进行完整性保护(MAC-I 计算) ,后进行加密。对于接收方:先进行数据解密,再进行完整性验证(MAC-I 校验) 。注:RRC 信令的处理方式正好与 NAS 信令的处理方式相反。NAS 信令先加密,后进行完整性保护,完整性保

20、护信息不进行加密。3 算法算法3.1 算法介绍3.1.1 EEA0、EIA0 (NULL Algorithm)参见 36401- Annex B /B.0。互联 b 类103.1.1.1EEA0 算法算法 EEA0 算法的实现效果和应用全 0 的 KEYSTREAM 进行加密效果等同。KEYSTREAM 的长度和输入参数 LENGTH 相同。此外,和加密相关的所有操作都应遵循本章所描述的加密算法。3.1.1.2EIA0 算法算法EIA0 算法的实现效果和生成全 0 的 MAC-I/NAS-MAC 和 XMAC-I/XNAS-MAC 的效果相同。当应用EIA0 算法时,无需进行重保护。除非接收侧

21、不校验接收到的 MAC,否则,所有和完整性保护相关的操作都应遵循本章描述的完整性保护算法。 EIA0 仅应用在处于 LSM(受限服务模式)的 UE 进行紧急呼叫时。注 1:文中提到的重保护是指重新进行完整性保护。注 2:E-UTRAN 中,认为使用 2G SIM 的 UE 处于 LSM 状态。注 3:EEA0 和 EIA0 没有提供任何安全。3.1.2 128-EEA13.1.2.1EEA1 算法原理算法原理参见 36401-B.12。128-EIA1 基于 SNOW 3G 算法,和 UEA2 的实现方式相同。128-EIA1 采用流密码加密方式进行加密。利用 LFSR(线性反馈移位寄存器)和

22、 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 输入参数参数大小(bits)注释COUNT-C32结构取决于输入

23、COUNT-I0COUNT-I31BEAR5承载实体 BEARER0BEARER4DIRECTION1传输方向 DIRECTION0CK128加解密密钥 IK0IK127LENGTH64加密的明文的长度(以位为单位)互联 b 类11IBSLENGTH输入 bit 流,input bitstream表 3.1.2.2-2 输出参数参数大小(bits)注释OBSLENGTH输出 bit 流,output bitstream3.1.2.3EEA1 算法流程图算法流程图图 3.1.2.3-1 EEA1 加解密算法流程, 第 1 部分如图3.1.2.3-1所示,加解密算法 EEA1 的流程中第 1 部分

24、有如下步骤:1)将输入变量转变为适用于将输入变量转变为适用于 SNOW 3G 算法的输入变量算法的输入变量:K3=IK0|IK1|IK2|IK31K2=IK32|IK33|IK34|IK63K1=IK64|IK65|IK66|IK95K0=IK96|IK97|IK98|IK127IV3=COUNT-C0 | COUNT-C1 | COUNT-C2 | | COUNT-C31IV2=BEARER0 | BEARER1 | | BEARER4 | DIRECTION0 | 0 | | 0互联 b 类12IV1=IV3IV0=IV22)根据根据 SNOW 3G 算法,得到密钥流算法,得到密钥流图 3

25、.1.2.3-2 EEA1 加解密算法流程,第 2 部分如图3.1.2.3-2所示,加解密算法 EEA1 的流程中第 2 部分有以下步骤:1) 根据 EVAL_M 功能计算得到参数 IV3/ IV2/ IV1/ IV0。2) 利用 1)中得到的参数,在 SNOW 3G 算法的作用下产生密钥流3) 密钥流以 4 个字节为一组,第一组为z1,第二组为z2,最后一个为zL。3.1.2.4EEA1 算法解析算法解析3.1.2.4.1 初始化输入参数初始化输入参数1.根据输入参数得到 SNOW 3G 算法需要的参数,如图 3.1.2.4-1 所示。互联 b 类13s11s5s2s1s0s15-1 R1R

26、3R2S1S2FSM图 3.1.2.4-1 密钥初始化流程2. 根据每个为 32-bit 字的 k0, k1, k2, k3和 128-bit 变量(由 4 个 32-bit 字 IV0, IV1, IV2, IV3组成)进行初始化:s15 = k3 IV0s14= k2 s13 = k1s12 = k0 IV1s11 = k3 1s10= k2 1 IV2s9 = k1 1 IV3s8 = k0 1s7 = k3 s6= k2s5 = k1s4 = k0s3 = k3 1s2= k2 1s1 = k1 1s0 = k0 1FSM 初始为:R1 = R2 = R3 = 0;执行以下步骤,循环

27、32 次:步骤 1:更新 FSM(有限状态机)来产生初值 F(四个字节)步骤 2:利用 LFSR(线性反馈移位寄存器)以 F 为输入参数进行密钥初始化3.1.2.4.2 生成密钥流生成密钥流互联 b 类14s11s5s2s1s0s15-1R1R3R2ztS2S1FSM图 3.1.2.4-2 生成密钥流流程 密钥流是一串字(四个字节)组成的位流,以四个字节为一组。用 z1,z1,zn 表示。其中,n = (LENGTH + 31) / 32,z1 表示最高有效字。按照最高字到最低字的顺序组合 z1 |z2 | |zn。最终得到的密钥流为 KS0,KS2,KSLENGTH-1,其中 KS0为最高有

28、效位。如图 4.2 所示生成密钥流流程:首先,FSM clock 一次,丢弃 FSM 输出字;然后 LFSR 在密钥流模式下 clock 一次。 在 n 个 32-bit 字的密钥流生成以后,执行 n 次以下步骤:步骤 1:FSM clock,产生一个 32-bit 输出字 F;步骤 2:计算下一个密钥流字:zt = F s0;步骤 3:LFSR 在密钥流模式下 clock。3.1.2.4.3 计算得到密文计算得到密文利用已经生成的密钥流和明文做异或操作,得到密文 对于整数 i,有以下表达式,for 为循环语句,OBS 为密文for(i = 0; i LENGTH 1;i+)OBSi = IB

29、Si KSi;互联 b 类153.1.3 128-EEA23.1.3.1EEA2 算法原理算法原理128-EEA2 算法基于 CTR 模式的 128-bit AES。AES(ADVANCED ENCRYPTION STANDARD)的加密算法有如下几种模式:CBC(Cipher Block Chaining)模式、ECB(Electronic Codebook)模式、(CFB)Cipher Feedback 模式、(OFB)Output Feedback 模式、CTR(COUNTER)模式、CMAC 模式等。而 EEA2 算法采用的就是 128 位的 AES 中的 CTR 模式进行加密的。AE

30、S 的加密原理是块加密算法和对称加密算法。EEA2 是以16 个字节(128 位)为一块,把密钥和明文分成若干块。用轮密钥的方法来产生密钥,每一轮采用不同的替换函数进行变换,这样可以保证有更高的安全性。CTR 模式(COUNTER)顾名思义就是计数模式,利用COUNT、BEAR、DIRECTION 等参数构成一个 128 位的输入块,用最低位的 32 位的值做为计数值,每加密一块明文计数就增加一次,这样就会产生 T1、T2、T3Tn 等若干输入块,这样在每一块明文加密的过程中采用的输入块都是不相同的,这样的目的就是保证了安全性,不易被破解。EEA2 的 CTR 模式的加解密过程可以用下面的公式

31、来简易给出:CTR 加密: Oj = CIPHK(Tj) for j = 1, 2 n;Cj = Pj Oj for j = 1, 2 n-1;C*n = P*n MSBu(On). CTR 解密: Oj = CIPHK(Tj) for j = 1, 2 n;Pj = Cj Oj for j = 1, 2 n-1;P*n = C*n MSBu(On).其中:n = (Length ) / 16;输入块 T1、T2Tn 的关系如下:T1 = COUNT0 | COUNT31 | BEARER0 |BEARER4 | DIRECTION | 0 26 | 0 32 | COUNTER0 COUNT

32、ER31;Tn = Tn-1 + 1;计数的增加通过 COUNTER = (COUNTER + 1) mod (2 32)来实现。3.1.3.2输入和输出输入和输出表 3.1.4.2-1 为输入参数,表 3.1.4.2-2 为输出参数。互联 b 类16表 3.1.4.2-1 输入参数参数大小(bits)注释COUNT-C32结构取决于输入 COUNT-I0COUNT-I31BEAR5承载实体 BEARER0BEARER4DIRECTION1传输方向 DIRECTION0IK128加解密密钥 IK0IK127LENGTH64加密的明文的长度(以字节为单位)T-COUNTER128利用以上参数构造

33、的输入块的长度IBSLENGTH输入的明文表 3.1.4.2-2 输出参数参数大小(bits)注释OBSLENGTH输出的密文互联 b 类173.1.3.3EEA2 算法流程图算法流程图 图 3.1.4.3-1 EEA2 加解密算法流程如图 3.1.4.3-1 所示,加解密算法 EEA2 的流程有以下步骤:1) 根据输入参数 COUNT、BEARER、DIRECTION 等构造输入输入块 T12) 从 RRC 层获得输入参数 KEY;3) 把明文/密文分成若干块,每块的长度为 16 字节(128 位);4) 输入块在轮密钥的作用下通过函数替换产生输出块;5) 输出块和明文做异或操作产生一块密文

34、;6) 计数块 T 加一,更新计数值,产生新的输入块;7) 执行到最后一块则推出8) 执行步骤 4注意:若最后一块明文的长度不够 16 字节(128 位),则在加密的过程中要单独处理。处理完后放到之前产生的密文/明文的后面。3.1.4 128-EIA13.1.4.1EIA1 算法原理算法原理128-EIA1 基于 SNOW 3G 算法,和 UIA2 的实现方式相同。互联 b 类183.1.4.2输入和输出输入和输出u32 f9( const u8* key, u32 count, u32 fresh, int dir, u8 *data, u64 length)算法的输入参数和输出参数见下表。

35、表 3.1.3.2-1 输入参数参数大小(bits)注释COUNT-I32结构取决于输入 COUNT-I0COUNT-I31FRESH32随机数 FRESH0FRESH31DIRECTION1传输方向 DIRECTION0IK128完整性密钥 IK0IK127LENGTH64MESSAGE 的长度,比特MESSAGELENGTH输入 bit 流表 3.1.3.2-1 输出参数参数大小(bits)注释MAC-I32消息鉴权码 MAC-I0MAC-I31互联 b 类193.1.4.3EIA1 算法流程图算法流程图COUNT-I|FRESH|DIRECTION | 0.0 COUNT-I|00000

36、00000000000 | DIRECTION | 000000000000000 FRESHIV3|IV2|IV1|IV0SNOW 3GIKK3|K2|K1|K0z1|z2|z3|z4|z5 P|Q|q32 | . | q63|OTP0 . OTP31图 3.1.3.3-1 EIA1 完整性保护算法流程, 第 1 部分如图3.1.3.3-1所示,完整性保护算法 EIA1 的流程中第 1 部分有以下步骤:1) 将输入变量转变为适用于 SNOW 3G 算法的输入变量:K3=IK0|IK1|IK2|IK31K2=IK32|IK33|IK34|IK63K1=IK64|IK65|IK66|IK95K0

37、=IK96|IK97|IK98|IK127IV3=COUNT-I0 | COUNT-I1 | COUNT-I2 | | COUNT-I31IV2=FRESH0 | FRESH1 | FRESH2 | | FRESH31IV1=DIRECTION0 COUNT-I0 | COUNT-I1 | COUNT-I2 | | COUNT-I31IV0=FRESH0 | FRESH1 | | FRESH15 | FRESH16 DIRECTION0 | FRESH17 | | FRESH312) 根据 SNOW 3G 算法,得到密钥流z1|z2|z3|z4|z5 P|Q|OTP0 . OTP31互联 b

38、类20z1 | z2PEVAL_MMESSAGE | 0 . 0M0 | . | MD-2e0 | e1 | . | e31(left 32 bits)MAC-IMULz3 | z4QLENGTHMD-1z5OTP0 | . | OTP31图 3.1.3.3-2 EIA1 完整性保护算法流程, 第 2 部分如图3.1.3.3-2所示,完整性保护算法 EIA1 的流程中第 2 部分有以下步骤:1) 根据 EVAL_M 功能计算得到参数2) 将 1)中得到的参数与 MD-1进行与或计算,得到3) 将 2)中得到的参数与 Q 进行 MUL 计算,得到数值 e0 | e1 | . | e314) 将

39、3)中得到的参数与 OTP0 | . | OTP31进行与或计算,得到最终的密钥验证码 MAC-I。3.1.4.4EIA1 算法解析算法解析3.1.4.4.1初始化输入参数初始化输入参数1.根据输入参数得到 SNOW 3G 算法需要的参数,如图 4.2.4互联 b 类21s11s5s2s1s0s15-1 R1R3R2S1S2FSM图 3.1.3.4-1 密钥初始化流程根据 32-bit 字 k0, k1, k2, k3和 128-bit 变量(由 4 个 32-bit 字 IV0, IV1, IV2, IV3组成)进行初始化:s15 = k3 IV0s14= k2 s13 = k1s12 =

40、k0 IV1s11 = k3 1s10= k2 1 IV2s9 = k1 1 IV3s8 = k0 1s7 = k3 s6= k2s5 = k1s4 = k0s3 = k3 1s2= k2 1s1 = k1 1s0 = k0 1FSM 初始为:R1 = R2 = R3 = 0;执行以下步骤,循环 32 次:步骤 1:The FSM is clocked (see Error! Reference source not found.) producing the 32-bit word F步骤 2:Then the LFSR is clocked in Initialisation Mode (

41、see Error! Reference source not found.) consuming F(LFSR 运行初始化模式,32 比特 F 作为输入,也是输出)3.1.4.4.2生成密钥流生成密钥流互联 b 类22s11s5s2s1s0s15-1R1R3R2ztS2S1FSM图 3.1.3.4-2 生成密钥流流程如图 4.2.5 所示生成密钥流流程:首先,FSM clock 一次,丢弃 FSM 输出字;然后 LFSR 在密钥流模式 clock一次。在生成 32-bit 字的密钥流时,执行 5 次以下步骤,生成 5 个 32 比特的密钥流:步骤 1:FSM clock,产生一个 32-bi

42、t 输出字 F;步骤 2:计算下一个密钥流字:zt = F s0;步骤 3:LFSR 在密钥流模式下 clock。3.1.4.4.3计算得到鉴权码计算得到鉴权码 MAC根据 Eval_M 函数计算:1) EVAL = 0;2) For(i=0;i=D-2;i+)EVAL = MUL(EVAL Mi, P, 0 x000000000000001b );3) EVAL = EVAL MD-1;4) EVAL = Mul(EVAL, Q, 0 x000000000000001b);互联 b 类235) For(i=0;i=0消息长度(按 8 位字节计算)表 3.1.5.2-2 输出参数参数大小(bi

43、ts)注释MAC128消息鉴权码3.1.5.3EIA2 算法流程图算法流程图开始结束获取输入参数KEY、MESSAGE、LENGTH根据输入参数KEY计算得到子密钥生成鉴权码MAC检验鉴权码图 3.1.5.3-1 EIA2 完整性保护算法流程如图 3.1.5.3-1 所示,完整性保护算法 EIA2 的流程有以下步骤:1) 从 RRC 层获得输入参数 KEY、MESSAGE 和 LENGTH;2) 根据输入参数 KEY 计算得到子密钥:K1,K2;3) 利用子密钥对 MESSAGE 加密,生成鉴权码 MAC;4) 验证鉴权码。注释:以上两种算法中的密钥 KEY 即 KRRCint,该密钥从密钥

44、KeNB中获得;而 KeNB又是基于上层提供的密互联 b 类25钥 KASME。KASME存储在 UE 和 MME 中,并在下一个鉴权过程中更新。3.1.5.4EIA2 算法解析算法解析3.1.5.4.1产生子密钥产生子密钥产生子密钥的算法为 Generate_Subkey(),其输入为密钥 K,输出为两个子密钥 K1,K2,如图 4.3 所示。K1,K2 同时应用于鉴权码 MAC 的生成和验证算法中。K1 用于最后一个 block 长度等于整块长度的情况;K2 适用于最后一个 block 长度小于整块长度的情况。+ + Algorithm Generate_Subkey + + + + +

45、Input : K (128-bit key) + + Output : K1 (128-bit first subkey) + + K2 (128-bit second subkey) + +-+ + + + Constants: const_Zero is 0 x00000000000000000000000000000000 + + const_Rb is 0 x00000000000000000000000000000087 + + Variables: L for output of AES-128 applied to 0128 + + + + Step 1. L := AES-1

46、28(K, const_Zero); + + Step 2. if MSB(L) is equal to 0 + + then K1 := L 1; + + else K1 := (L 1) XOR const_Rb; + + Step 3. if MSB(K1) is equal to 0 + + then K2 := K1 1; + + else K2 := (K1 1. 即LFSRWithInitialisationMode(u) 1.v=【215s15+217s13+221s10+220s4+(1+28)s0 】mod (231-1); 2.If v=0, then set v=231

47、-1; 3.s16=vu; 4.If s16=0, then set s16=231-1; 5.(s1,s2, ,s15,s16)(s0,s1, ,s14,s15). 在工作模式 LFSR 不接收输入,逐位执行右移操作。LFSRWithWorkMode() 1.s16=215s15+217s13+221s10+220s4+(1+28)s0 mod (231-1); 2.If s16=0, then set s16=231-1; 3.(s1,s2, ,s15,s16)(s0,s1, ,s14,s15). 注 1:2i与 31 比特数相乘可表示为向左循环移位 i 位,只是在上述功能的第 1 步中,

48、增加模(231-1)的操作。因此 LFSRWithInitialisationMode(u)函数中的第 1 步也可如下实现:v=(s153115)+(s133117)+(s103121)+(s43120) +s0 mod(231-1).同样,LFSRWithWorkMode()中的 step1 也可依此实现。注 2:对于 GF(231-1)的两参数 a、b,v=a+b mod (231-1)可通过几步实现:(1)计算 v=a+b,(2)如果进位是 1,令 v=v+1。也可以:(1)计算 w=a+b,w 是 32 比特的值, (2)令 v= (w 的低 31 比特)+(w 的最高有效位) 。3.

49、1.6.3比特重组比特重组 BR 该层将 LFSR 产生的 128 位重组为 4 个 32 位的字做为 F 的输入。 互联 b 类32设 s0, s2, s5, s7, s9, s11, s14, s15 是 LFSR 的 8 个寄存器,重组后的 4 个 32 位字 X0,X1,X2,X3 产生方法如下: Bitreorganization() 1 X0=s15H | s14L; 2.X1=s11L | s9H; 3 X2=s7L | s5H; 4.X3=s2L |s0H. 3.1.6.4非线性函数非线性函数 F3.1.6.4.1 工作过程工作过程F 有 2 个 32 位的存储单元 R1 和

50、R2. 输入为 X0, X1 和 X2, F 输出一个 32 位字 W. 过程如下:F (X0, X1, X2) 1.W=( X0R1) R2; 2.W1= R1X1; 3.W2= R2X2; 4.R1=S(L1(W1L|W2H); 5.R2=S(L2(W2L|W1H). 上面 S 是 3232 的 S 盒, L1 和 L2 是线性转换.3.1.6.4.2S 盒盒一个 3232 S 盒由 4 个并列的 88 S 盒组成,即 S=(S0,S1,S2,S3), 并且 S0=S2, S1=S3. S0 、 S1 定义分别参见表 3.1.6.4-1 和表 3.1.6.4-2. 表 3.1.6.4-1

51、S0(S2)盒定义0 1 2 3 4 5 6 7 8 9 A B C D E F 0 3E 72 5B 47 CA E0 00 33 04 D1 54 98 09 B9 6D CB 1 7B 1B F9 32 AF 9D 6A A5 B8 2D FC 1D 08 53 03 90 2 4D 4E 84 99 E4 CE D9 91 DD B6 85 48 8B 29 6E AC 3 CD C1 F8 1E 73 43 69 C6 B5 BD FD 39 63 20 D4 38 4 76 7D B2 A7 CF ED 57 C5 F3 2C BB 14 21 06 55 9B 5 E3 EF 5

52、E 31 4F 7F 5A A4 0D 82 51 49 5F BA 58 1C 6 4A 16 D5 17 A8 92 24 1F 8C FF D8 AE 2E 01 D3 AD 互联 b 类337 3B 4B DA 46 EB C9 DE 9A 8F 87 D7 3A 80 6F 2F C8 8 B1 B4 37 F7 0A 22 13 28 7C CC 3C 89 C7 C3 96 56 9 07 BF 7E F0 0B 2B 97 52 35 41 79 61 A6 4C 10 FE ABC 26 95 88 8A B0 A3 FB C0 18 94 F2 E1 E5 E9 5D BD

53、0 DC 11 66 64 5C EC 59 42 75 12 F5 74 9C AA 23 C 0E 86 AB BE 2A 02 E7 67 E6 44 A2 6C C2 93 9F F1 D F6 FA 36 D2 50 68 9E 62 71 15 3D D6 40 C4 E2 0F E 8E 83 77 6B 25 05 3F 0C 30 EA 70 B7 A1 E8 A9 65 F 8D 27 1A DB 81 B3 A0 F4 45 7A 19 DF EE 78 34 60 表 3.1.6.4-2 S1(S3)盒定义0 1 2 3 4 5 6 7 8 9 A B C D E F

54、0 55 C2 63 71 3B C8 47 86 9F 3C DA 5B 29 AA FD 77 1 8C C5 94 0C A6 1A 13 00 E3 A8 16 72 40 F9 F8 42 2 44 26 68 96 81 D9 45 3E 10 76 C6 A7 8B 39 43 E1 3 3A B5 56 2A C0 6D B3 05 22 66 BF DC 0B FA 62 48 4 DD 20 11 06 36 C9 C1 CF F6 27 52 BB 69 F5 D4 87 5 7F 84 4C D2 9C 57 A4 BC 4F 9A DF FE D6 8D 7A EB

55、6 2B 53 D8 5C A1 14 17 FB 23 D5 7D 30 67 73 08 09 7 EE B7 70 3F 61 B2 19 8E 4E E5 4B 93 8F 5D DB A9 8 AD F1 AE 2E CB 0D FC F4 2D 46 6E 1D 97 E8 D1 E9 9 4D 37 A5 75 5E 83 9E AB 82 9D B9 1C E0 CD 49 89 A 01 B6 BD 58 24 A2 5F 38 78 99 15 90 50 B8 95 E4 B D0 91 C7 CE ED 0F B4 6F A0 CC F0 02 4A 79 C3 DE

56、C A3 EF EA 51 E6 6B 18 EC 1B 2C 80 F7 74 E7 FF 21 D 5A 6A 54 1E 41 31 92 35 C4 33 07 0A BA 7E 0E 34 E 88 B1 98 7C F3 3D 60 6C 7B CA D3 1F 32 65 04 28 F 64 BE 85 9B 2F 59 8A D7 B0 25 AC AF 12 03 E2 F2 如果 x 是 8 位输入到 S0 (或 S1),并且 x=h|l.则 S0(或 S1)表第 h 行第 l 列的数据就是输出。 互联 b 类34【例子例子】S0(0 x12)=0 xF9 and S1(

57、0 x34)=0 xC0. 如果 X 是 32 位的输入,输出 Y 也是 32 位: X = x0 | x1 | x2 | x3,Y = y0 | y1 | y2 | y3,这里 xi 和 yi 是所有的字节, i=0,1,2,3.则 yi=Si(xi), i=0,1,2,3.【例子例子】设设 输入 X=0 x12345678 , 输出 Y为: Y=S(X)=S0(0 x12)|S1(0 x34)|S2(0 x56)|S3(0 x78)=0 xF9C05A4E.3.1.6.4.3线性转换线性转换 L1 和 L2 定义为: L1(X)=X(X2)(X10)(X18)(X24), L2(X)=X(

58、X8)(X14)(X22)(X1).3.1.6.5.2 密钥流产生阶段密钥流产生阶段首先执行下面操作一次,丢弃 F 的输出 W: 1. Bitreorganization(); 2. F(X0, X1, X2); 3. LFSRWithWorkMode() 然后产生密钥流,即每执行一次,产生一个 32 位的 Z: 1. Bitreorganization(); 互联 b 类352. Z= F(X0, X1, X2)X3; 3. LFSRWithWorkMode() 3.1.6.6EIA3 算法实现算法实现3.1.6.6.1 输入输出输入输出void EIA3(u8* IK,u32 COUNT,

59、u32 DIRECTION,u32 BEARER,u32 LENGTH,u32* M,u32* MAC)输入参数:参数长度(bits)说明COUNT32计数COUNT 0COUNT 31BEARER5承载标识DIRECTION1方向DIRECTION 0IK128完整性保护密钥IK 0IK 127LENGTH32数据流长度MLENGTH输入数据流输出参数:参数长度(bits)说明MAC32产生的验证码3.1.6.6.2 初始化初始化下面介绍 ZUC 参数如何定义:初始密钥 KEY 和初始向量 IV 是根据完整性保护密钥 IK 和初始变量产生的。 IK 是 128 比特完整性密钥,其中 IKi

60、(0i15)是一个字节。IK= IK 0 IK 1 IK 2 IK 15用于 ZUC 算法的 128 比特初始密钥 KEY 如下,其中 KEYKEYi=IKi, i=0,1,2,15. COUNT 是 32 位计数,其中 COUNTi ( 0i3)是一个字节。 COUNT=COUNT0COUNT1COUNT2COUNT3 128 比特初始向量 IV 为:互联 b 类36IV = IV0IV1 IV2 IV15,其中,IVi ( 0i15) 是字节。且:IV0 = COUNT0, IV1 = COUNT1, IV2 = COUNT2, IV3 = COUNT3, IV4 = BEARER0002

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论