ZUC算法原理及实现过程[共3页]
ZUC算法原理及实现过程1.1 算法设计背景ZUC算法,即祖冲之算法,是3GPP机密性算法EEA3和完整性算法EIA3的核心,为中国自主设计的流密码算法。2009年5月ZUC算法获得3GPP安全算法组SA立项,正式申请参加3GPPLTE第三套机密性和完整性算法标准的竞选工作。历时两年多的时间,ZUC算法经过评估,于2011年9月正式被3GPPSA全会通过,成为3GPPLTE第三套加密标准核心算法。ZUC算法是中国第一个成为国际密码标准的密码算法。1.2 算法原理ZUC是一个面向字的流密码。它采用128位的初始密钥作为输入和一个128位的初始向量(IV),并输出关于字的密钥流(从而每32位被称为一个密钥字)。密钥流可用于对信息进行加密/解密。ZUC的执行分为两个阶段初始化阶段和工作阶段。在第一阶段,密钥和初始向量进行初始化,即不产生输出。第二个阶段是工作阶段,在这个阶段,每一个时钟脉冲产生一个32比特的密钥输出。(1)运算符说明 整数模 整数比特异或 字符串和b的连接 二进制表示的最左16位值 二进制表示的最右16位值 向左比特的循环移位 向右1比特的移位 值分配到对应的值(2)算法结构ZUC有三个逻辑层,见下图。顶层为一个线性反馈移位寄存器()的16个赛段,中间层是比特重组(),最下层为一个非线性函数。图1 ZUC的整体结构图3 线性移位反馈寄存器()具有16个31比特的单元,每个单元取值均在下面的集合中 有两种模式的操作,即初始化模式和工作模式。在初始化模式中,接收一个31比特的输入,是删除非线性函数的32位输出最右边的位得到的。也就是说,可将初始化模式工作原理表示为LFSRWithInitialisationMode()1、;2、;3、如果,则设;4、 在工作模式中,不接收任何输入,它的工作原理表示为LFSRWithWorkMode1、;2、如果,则设;3、;(4) 比特重组ZUC算法的中间层是比特重组,从的单元中提取128比特的输出并形成4个32比特的字,前三个字将用于最底层的非线性函数中,而最后一个字会在密钥流的产生中用到。令是中的8个单元,则形成4个32比特字的比特重组过程如下Bitreorganization1、;2、;3、;4、(5)非线性函数非线性函数有2个32位的存储单元,即和。令到的输入为,和,即为比特重组的前三个输出,然后函数输出一个32位字。的详细过程如下1、;2、;3、;4、;5、(6)S盒函数中包含的S盒是由4个并列的88的S盒组成的(),其中、。、的定义由下面两张表分别给出令为(或)的8比特输入。将表示成十六进制,则在查表时和分别表示S盒的第行和第列。(7)线性变换函数线性变换和均为32比特字输入到32比特字的输出,具体可定义为(8)密钥加载密钥的加载过程将把初始密钥和初始向量扩展为16个31比特的初始状态。设为128比特的初始密钥,为128比特的初始向量,则有其中,同时,设为由16个15比特长的子数组组成的240位常值数组其中,;;;;;;;;;;;;;;;;设为的16个单元,则,有。1.3 算法的实现过程ZUC算法的执行过程主要有四个步骤密钥加载,初始化阶段,工作阶段和密钥流产生阶段,具体过程如下(1)密钥加载阶段在密钥加载阶段,将128位的初始密钥和128位的初始化向量载人LFSR,同时设置32位的记忆单元R1,R2为0值。(2)初始化阶段 在初始化阶段,执行下面的操作32次1、Bitreorganization;2、;3、LFSRWithInitialisationMode(3)工作阶段 在工作阶段,算法执行下面的操作1次,并弃掉F的输出W1、Bitreorganization;2、;3、LFSRWithWorkMode.(4)密钥流产生阶段 在密钥流产生阶段,每次迭代执行以下操作1次, Z是一个32位的输出1、Bitreorganization;2、;3、LFSRWithWorkMode .知识改变命运3 / 3