




已阅读5页,还剩93页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 LTE 安安全全功功能能 2 目目 录录 1概述 4 1 1参考文献 4 1 2术语 4 2加密和完整性保护算法 6 2 1完整性保护完整性保护 6 2 2加密加密 7 2 3加密和完整性保护的关系加密和完整性保护的关系 9 3算法 9 3 1算法介绍 9 3 1 1EEA0 EIA0 NULL Algorithm 9 3 1 2128 EEA1 10 3 1 3128 EEA2 15 3 1 4128 EIA1 17 3 1 5128 EIA2 23 3 1 6EIA3 EEA3 ZUC 29 3 2算法选择 38 3 2 1初始安全上下文建立过程 38 3 2 2X2 切换过程中算法选择 38 3 2 3S1 切换过程中的算法选择 38 4密钥的生成和更新 38 4 1HMAC SHA256 算法 38 4 1 1输入输出 39 4 1 2HMAC 过程 40 4 1 3SHA 256 算法 41 4 2密钥层次 44 4 3接入层的密钥生成 46 4 4接入层的密钥处理机制 49 5ENB 影响分析 51 5 1流程分析 51 5 1 1初始业务接入 51 5 1 2X2 切换 52 5 1 3eNB 内切换 53 5 1 4S1 切换 54 5 1 5RRC 重建 54 5 1 5UE 能力改变 62 5 1 6安全密钥更新 63 5 1 7E UTRAN UTRAN GERAN 的切换 64 5 1 8UTRAN GERAN E UTRAN 的切换 65 3 5 1 9PDCP 计数器回卷 66 5 2性能分析 66 5 2 5UP 66 6相关协议参数 68 6 1TS36 331 68 6 1 1RRCConnectionReconfiguration 68 6 1 2RRCConnectionReestablishmentRequest 70 6 1 3RRCConnectionReestablishment 71 6 1 4SecurityModeCommand 72 6 1 5HandoverPreparationInformation 72 6 1 6MobilityFromEUTRACommand message 74 6 2TS36 413 77 6 2 1INITIAL CONTEXT SETUP REQUEST 77 6 2 2UE CONTEXT MODIFICATION REQUEST 79 6 2 3PATH SWITCH REQUEST ACKNOWLEDGE 79 6 2 4HANDOVER REQUEST 80 6 2 5HANDOVER COMMAND 82 6 3TS36 423 83 6 3 1HANDOVER REQUEST 83 6 4TS36 323 85 6 4 1PDCP SN 85 6 4 2Data 85 6 4 3MAC I 85 6 4 4COUNT 85 7汇总 86 7 1流程 87 7 1 1SMC 流程 87 7 1 2eNB 间切换 S1 切换 X2 切换 87 7 1 3RRC 重建流程 88 7 1 4小区内切换 92 7 1 5PDCP 回卷流程 93 7 1 6UE 上下文修改 93 7 2性能优化 93 7 2 1DSP 支持 ZUC 94 8问题 94 9附录 ZUC 相关资料 94 9 1ZUC 算法研制中心提供的性能数据 94 9 2ZUC IP 核的设计与实现 95 9 3CLP 411 ZUC 后备 LOOK ASIDE 密码核 97 4 1 概述概述 本文档对 LTE 安全技术进行的总结 描述了与安全相关的协议 重点包括 安全流程梳理 1 1 参考文献 1 3GPP TS 33 401 3GPP System Architecture Evolution SAE Security architecture 2 3GPP 36 331 Radio Resource Control RRC Protocol specification 3 3GPP 36 413 S1 application protocol S1AP 4 3GPP 36 423 X2 application protocol X2AP 5 3GPP TS 36 323 Evolved Universal Terrestrial Radio Access E UTRA Packet Data Convergence Protocol PDCP Specification 1 2 术语 AESAdvanced Encryption Standard CKCipher Key IKIntegrity Key EARFCN DLE UTRA Absolute Radio Frequency Channel Number Down Link EEAEPS Encryption Algorithm EIAEPS Integrity Algorithm eKSIKey Set Identifier in E UTRAN E UTRAN 的密钥组标识 KDFKey Derivation Function 密钥获取功能 KSIKey Set Identifier MAC IMessage Authentication Code for Integrity TS36 323 NCCNext hop Chaining Counter NHNext Hop SMCSecurity Mode Command SQNSequence Number HFNHyper Frame Number LSMLimited Service Mode 受限服务模式 COUNT 包括上行下行两个变量 HFNPDCP SN Chaining of KeNB 从一个 KeNB生成另一个 KeNB 如切换过程中 根据生成源小区 KeNB生成目标小区 KeNB 5 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 跨系统移动 由源系统的安全上下文 映射获得的安全上下文 比如在 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 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 COUNT 都保存在 USIM 中或者 UE 的非易失 性存储设备中 NAS COUNT NAS overflow Counter 16 位 NAS SN 8 位 NAS SN 是在 NAS 信令交互过程中 NAS 头中包含的 Sequence Number IE 6 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 组成 COUNT32bit由HFN和PDCP SN组成 共32bit BEARER5bit 取值为 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 算法128 bit algorithms EIA0 空算法 7 生成KEYSTREAM BLOCK EIA1 基于3G网络的标准算法 sonw3G EIA2 增强性加密算法AES EIA3 祖冲之算法ZUC 输出MAC I XMAC I32bit 2 2 加密加密 参数说明 UE 与 eNB 之间的用户面通过 PDCP 协议进行加密 128bit EEA 算法 加密 的输入 INPUT 参数为 1 一个 128bit 密钥 KUPenc 2 一个 5bit 承载标识 BEARER 3 1bit 传输方向 DIRECTION 4 密钥流的长度 LENGTH 5 时间以及方向 COUNT32bit由HFN和PDCP SN组成 共32bit BEARER5bit 对于信令数据 RB identity 1 对于业务数据 DRB identity 1 DIRECTION1bit0 上行 1 下行 输入 LENGTH16bit Keystream block长度 在加密算法中 利用keystream block对 未加密的数据的消息字段进行操作 1 对于EIA1和EIA3 采用流密码加密方式 LENGTH取值为Keystream block的bit数 2 对于EIA2 采用块密码加密方式 LENGTH取值为Keystream block的字节数 对于信令数据 加密数据为PDCP DATA和MAC I 长度 8 为PDCP DATA长度加上MAC I长度 而PDCP DATA即为未压 缩的PDCP SDU 对于业务数据 加密数据为PDCP DATA 长度为PDCP DATA长度 而PDCP DATA可以为压缩的PDCP SDU 也可以 为未压缩的PDCP SDU KEY128bit 对于信令数据 KRRCenc 对于业务数据 KUPenc 算法128 bit algorithms EEA0 空算法 EEA1 基于3G网络的标准算法 sonw3G EEA2 增强性加密算法AES EEA3 祖冲之算法ZUC 安全加密是针对如下三种类型的 PDU 1 控制平面 SRB 数据的 PDCP Data PDU 首先对信令数据进行完整性保护 然后对信令数据和认证 码一起加密 Oct 1 Oct 2 Oct N Oct N 1 Oct N 2 Oct N 3 Data PDCP SNRRR MAC 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 Data D CPDCP SNRRROct 1 Oct 2 Oct 3 加 密 3 使用 7bit SN 值的 PDCP Data PDU 此格式适用于携带映射到 RLC UM 的 DRB 的数据的 PDCP Data PDU 对数据进行加密 9 D CPDCP SNOct 1 Oct 2Data 加 密 2 3 加密和完整性保护的关系加密和完整性保护的关系 完整性验证 加密 P PD DC CP P S SD DU U MAC 1计算 解密 确定计数 P PD DC CP P P PD DU U 编号 RRC 信令 完整性保护结果需要进行加 解密 对于发送方 先进行完整性保护 MAC I 计算 后进行加密 对于接收方 先进行数据解密 再进行完整性验证 MAC I 校验 注 RRC 信令的处理方式正好与 NAS 信令的处理方式相反 NAS 信令先加密 后进行完整性保护 完整性 保护信息不进行加密 3 算法算法 3 1 算法介绍 3 1 1 EEA0 EIA0 NULL Algorithm 参见 36401 Annex B B 0 10 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 中 认为使用 2G SIM 的 UE 处于 LSM 状态 注 3 EEA0 和 EIA0 没有提供任何安全 3 1 2 128 EEA1 3 1 2 1EEA1 算法原理算法原理 参见 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 输入参数 参数大小 bits 注释 COUNT C32结构取决于输入 COUNT I 0 COUNT I 31 BEAR5承载实体 BEARER 0 BEARER 4 DIRECTION1传输方向 DIRECTION 0 CK128加解密密钥 IK 0 IK 127 LENGTH64加密的明文的长度 以位为单位 11 IBSLENGTH输入 bit 流 input bitstream 表 3 1 2 2 2 输出参数 参数大小 bits 注释 OBSLENGTH输出 bit 流 output bitstream 3 1 2 3EEA1 算法流程图算法流程图 图 3 1 2 3 1 EEA1 加解密算法流程 第 1 部分 如图3 1 2 3 1所示 加解密算法 EEA1 的流程中第 1 部分有如下步骤 1 将输入变量转变为适用于将输入变量转变为适用于 SNOW 3G 算法的输入变量算法的输入变量 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 12 IV0 IV2 2 根据根据 SNOW 3G 算法 得到密钥流算法 得到密钥流 图 3 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 所示 13 s11s5s2s1s0s15 1 R1R3R2 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 k2 s13 k1s12 k0 IV1 s11 k3 1s10 k2 1 IV2s9 k1 1 IV3s8 k0 1 s7 k3 s6 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 生成密钥流生成密钥流 14 s11s5s2s1s0s15 1 R1R3R2 zt S2S1 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 所示生成密钥流流程 首先 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 OBS i IBS i KS i 15 3 1 3 128 EEA2 3 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 模式进行加密的 AES 的加密原理是块加密算法和对称加密算法 EEA2 是以 16 个字节 128 位 为一块 把密钥和明文分成若干块 用轮密钥的方法来产生密钥 每一轮采用不同的替换 函数进行变换 这样可以保证有更高的安全性 CTR 模式 COUNTER 顾名思义就是计数模式 利用 COUNT BEAR DIRECTION 等参数构成一个 128 位的输入块 用最低位的 32 位的值做为计数值 每加 密一块明文计数就增加一次 这样就会产生 T1 T2 T3 Tn 等若干输入块 这样在每一块明文加密的过 程中采用的输入块都是不相同的 这样的目的就是保证了安全性 不易被破解 EEA2 的 CTR 模式的加解密 过程可以用下面的公式来简易给出 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 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 为输出参数 16 表 3 1 4 2 1 输入参数 参数大小 bits 注释 COUNT C32结构取决于输入 COUNT I 0 COUNT I 31 BEAR5承载实体 BEARER 0 BEARER 4 DIRECTION1传输方向 DIRECTION 0 IK128加解密密钥 IK 0 IK 127 LENGTH64加密的明文的长度 以字节为单位 T COUNTER 128利用以上参数构造的输入块的长度 IBSLENGTH输入的明文 表 3 1 4 2 2 输出参数 参数大小 bits 注释 OBSLENGTH输出的密文 17 3 1 3 3EEA2 算法流程图算法流程图 图 3 1 4 3 1 EEA2 加解密算法流程 如图 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 4 128 EIA1 3 1 4 1EIA1 算法原理算法原理 128 EIA1 基于 SNOW 3G 算法 和 UIA2 的实现方式相同 18 3 1 4 2输入和输出输入和输出 u32 f9 const u8 key u32 count u32 fresh int dir u8 data u64 length 算法的输入参数和输出参数见下表 表 3 1 3 2 1 输入参数 参数大小 bits 注释 COUNT I32结构取决于输入 COUNT I 0 COUNT I 31 FRESH32随机数 FRESH 0 FRESH 31 DIRECTION1传输方向 DIRECTION 0 IK128完整性密钥 IK 0 IK 127 LENGTH64MESSAGE 的长度 比特 MESSAGELENGTH输入 bit 流 表 3 1 3 2 1 输出参数 参数大小 bits 注释 MAC I32消息鉴权码 MAC I 0 MAC I 31 19 3 1 4 3EIA1 算法流程图算法流程图 COUNT I FRESH DIRECTION 0 0 COUNT I 0000000000000000 DIRECTION 000000000000000 FRESH IV3 IV2 IV1 IV0 SNOW 3G IK K3 K2 K1 K0 z1 z2 z3 z4 z5 P Q q32 q63 OTP 0 OTP 31 图 3 1 3 3 1 EIA1 完整性保护算法流程 第 1 部分 如图3 1 3 3 1所示 完整性保护算法 EIA1 的流程中第 1 部分有以下步骤 1 将输入变量转变为适用于 SNOW 3G 算法的输入变量 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 IV2 FRESH 0 FRESH 1 FRESH 2 FRESH 31 IV1 DIRECTION 0 COUNT I 0 COUNT I 1 COUNT I 2 COUNT I 31 IV0 FRESH 0 FRESH 1 FRESH 15 FRESH 16 DIRECTION 0 FRESH 17 FRESH 31 2 根据 SNOW 3G 算法 得到密钥流 z1 z2 z3 z4 z5 P Q OTP 0 OTP 31 20 z1 z2 P EVAL M MESSAGE 0 0 M0 MD 2 e0 e1 e31 left 32 bits MAC I MUL z3 z4 Q LENGTH MD 1 z5 OTP 0 OTP 31 图 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 e31 4 将 3 中得到的参数与 OTP 0 OTP 31 进行与或计算 得到最终的密钥验证码 MAC I 3 1 4 4EIA1 算法解析算法解析 3 1 4 4 1初始化输入参数初始化输入参数 1 根据输入参数得到 SNOW 3G 算法需要的参数 如图 4 2 4 21 s11s5s2s1s0s15 1 R1R3R2 S1 S2 FSM 图 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 k0 IV1 s11 k3 1s10 k2 1 IV2s9 k1 1 IV3s8 k0 1 s7 k3 s6 k2s5 k1s4 k0 s3 k3 1s2 k2 1s1 k1 1s0 k0 1 FSM 初始为 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 see Error Reference source not found consuming F LFSR 运行初始化模式 32 比特 F 作为输入 也是输出 3 1 4 4 2生成密钥流生成密钥流 22 s11s5s2s1s0s15 1 R1R3R2 zt S2S1 FSM 图 3 1 3 4 2 生成密钥流流程 如图 4 2 5 所示生成密钥流流程 首先 FSM clock 一次 丢弃 FSM 输出字 然后 LFSR 在密钥流模式 clock 一次 在生成 32 bit 字的密钥流时 执行 5 次以下步骤 生成 5 个 32 比特的密钥流 步骤 1 FSM clock 产生一个 32 bit 输出字 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 5 For i 0 i 0消息长度 按 8 位字节计算 24 表 3 1 5 2 2 输出参数 参数大小 bits 注释 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 该密钥从密钥 KeNB中获得 而 KeNB又是基于上层提供的密 钥 KASME KASME存储在 UE 和 MME 中 并在下一个鉴权过程中更新 25 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 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 0 128 Step 1 L AES 128 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 31 1 v 215s15 217s13 221s10 220s4 1 28 s0 mod 231 1 2 If v 0 then set v 231 1 3 s16 v u 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 步中 增加模 231 1 的操作 因此 LFSRWithInitialisationMode u 函数中的第 1 步也可如下实现 v s15 3115 s13 3117 s10 3121 s4 3120 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 1 6 3比特重组比特重组 BR 该层将 LFSR 产生的 128 位重组为 4 个 32 位的字做为 F 的输入 设 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非线性函数非线性函数 F 3 1 6 4 1 工作过程工作过程 32 F 有 2 个 32 位的存储单元 R1 和 R2 输入为 X0 X1 和 X2 F 输出一个 32 位字 W 过程如下 F X0 X1 X2 1 W X0 R1 R2 2 W1 R1 X1 3 W2 R2 X2 4 R1 S L1 W1L W2H 5 R2 S L2 W2L W1H 上面 S 是 32 32 的 S 盒 L1 和 L2 是线性转换 3 1 6 4 2S 盒盒 一个 32 32 S 盒由 4 个并列的 8 8 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 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 5E 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 7 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 BD0 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 33 表 3 1 6 4 2 S1 S3 盒定义 0 1 2 3 4 5 6 7 8 9 A B C D E F 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 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 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 列的数据就是输出 例子例子 S0 0 x12 0 xF9 and S1 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线性转换线性转换 34 L1 和 L2 定义为 L1 X X X 2 X 10 X 18 X 24 L2 X X X 8 X 14 X 22 X 1 3 1 6 5 2 密钥流产生阶段密钥流产生阶段 首先执行下面操作一次 丢弃 F 的输出 W 1 Bitreorganization 2 F X0 X1 X2 3 LFSRWithWorkMode 然后产生密钥流 即每执行一次 产生一个 32 位的 Z 1 Bitreorganization 2 Z F X0 X1 X2 X3 3 LFSRWithWorkMode 3 1 6 6EIA3 算法实现算法实现 3 1 6 6 1 输入输出输入输出 void EIA3 u8 IK u32 COUNT u32 DIRECTION u32 BEARER u32 LENGTH u32 M u32 MAC 输入参数 参数长度 bits 说明 COUNT32计数COUNT 0 COUNT 31 BEARER5承载标识 35 DIRECTION1方向DIRECTION 0 IK128完整性保护密钥IK 0 IK 127 LENGTH32数据流长度 MLENGTH输入数据流 输出参数 参数长度 bits 说明 MAC32产生的验证码 3 1 6 6 2 初始化初始化 下面介绍 ZUC 参数如何定义 初始密钥 KEY 和初始向量 IV 是根据完整性保护密钥 IK 和初始变量产 生的 IK 是 128 比特完整性密钥 其中 IK i 0 i 15 是一个字节 IK IK 0 IK 1 IK 2 IK 15 用于 ZUC 算法的 128 比特初始密钥 KEY 如下 其中 KEY KEY i IK i i 0 1 2 15 COUNT 是 32 位计数 其中 COUNT i 0 i 3 是一个字节 COUNT COUNT 0 COUNT 1 COUNT 2 COUNT 3 128 比特初始向量 IV 为 IV IV 0 IV 1 IV 2 IV 15 其中 IV i 0 i 15 是字节 且 IV 0 COUNT 0 IV 1 COUNT 1 IV 2 COUNT 2 IV 3 COUNT 3 IV 4 BEARER 0002 IV 5 000000002 IV 6 000000002 IV 7 000000002 IV 8 IV 0 DIRECTION 7 IV 9 IV 1 IV 10 IV 2 IV 11 IV 3 IV 12 IV 4 IV 13 IV 5 IV 14 IV 6 DIRECTION 64字节 S 如果SEncryption AlgorithmsMBIT STRING 16 按照bitmap方式指示对加密算法的 支持 1表示支持 0表示不支持 全零表示仅支持EEA0 first bit 128 EEA1 second bit 128 EEA2 Integrity Protection Algorithms MBIT STRING 16 按照bitmap方式指示对完整性保护 算法的支持 1表示支持 0表示不 支持 全零表示仅支持EEA1 78 first bit 128 EIA1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论