IBS LENGTH 输入bit流,input bitstream
表3.1.2.2-2 输出参数
参数 大小(bits) 注释 OBS LENGTH 输出bit流,output bitstream 3.1.2.3 EEA1算法流程图
图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
11
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.4 EEA1算法解析
3.1.2.4.1 初始化输入参数
1. 根据输入参数得到SNOW 3G算法需要的参数,如图3.1.2.4-1所示。
12
?-1 s15 ? s11 FSM s5 s2 s1 s0 ? R1 S1 R2 S2 R3 ? 图3.1.2.4-1 密钥初始化流程
2. 根据每个为32-bit字的k0, k1, k2, k3和128-bit变量(由4个32-bit字IV0, IV1, IV2, IV3组成)进行初始化: s15 = k3 ? IV0 s11 = k3 ? 1 s7 = k3 s3 = k3 ? 1
s14= k2
s13 = k1
s12 = k0 ? IV1
s10= k2 ? 1 ? IV2 s9 = k1 ? 1 ? IV3 s8 = k0 ? 1 s6= k2
s5 = k1
s4 = k0 s0 = k0 ? 1
s2= k2? 1 s1 = k1 ? 1
FSM初始为:R1 = R2 = R3 = 0; 执行以下步骤,循环32次:
?
步骤1:更新FSM(有限状态机)来产生初值F(四个字节)
? 步骤2:利用LFSR(线性反馈移位寄存器)以F为输入参数进行密钥初始化
3.1.2.4.2 生成密钥流
13
?-1 s15 ? s11 FSM s5 s2 s1 s0 ? R1 zt S1 R2 S2 R3 ? 图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]; }
14
3.1.3 128-EEA2
3.1.3.1 EEA2算法原理
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为输出参数。
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库LTE - Security(加密保护算法)(3)在线全文阅读。
相关推荐: