您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > ZUC算法原理及实现过程
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)运算符说明mod整数模整数比特异或ab字符串a和b的连接Haa二进制表示的最左16位值Laa二进制表示的最右16位值naka向左k比特的循环移位1aa向右1比特的移位1212,,,,,,nnaaabbbia值分配到对应ib的值(2)算法结构ZUC有三个逻辑层,见下图。顶层为一个线性反馈移位寄存器(LFSR)的16个赛段,中间层是比特重组(BR),最下层为一个非线性函数F。图1ZUC的整体结构图(3)线性移位反馈寄存器(LFSR)LFSR具有16个31比特的单元0115,,,sss,每个单元015isi取值均在下面的集合中:311,2,3,21LFSR有两种模式的操作,即初始化模式和工作模式。在初始化模式中,LFSR接收一个31比特的输入u,u是删除非线性函数F的32位输出W最右边的位得到的。也就是说,可将初始化模式工作原理表示为:LFSRWithInitialisationMode(u){1、1517212083115131040222212mod21vsssss;2、3116mod21svu;3、如果160s,则设311621s;4、12160115,,,,,,ssssss}在工作模式中,LFSR不接收任何输入,它的工作原理表示为:LFSRWithWorkMode(){1、151721208311615131040222212mod21ssssss;2、如果160s,则设311621s;3、12160115,,,,,,ssssss;}(4)比特重组ZUC算法的中间层是比特重组,从LFSR的单元中提取128比特的输出并形成4个32比特的字,前三个字将用于最底层的非线性F函数中,而最后一个字会在密钥流的产生中用到。令02579111415,,,,,,,ssssssss是LFSR中的8个单元,则形成4个32比特字0123,,,XXXX的比特重组过程如下:Bitreorganization(){1、01514HLXss;2、1119LHXss;3、275LHXss;4、320LHXss}(5)非线性函数F非线性函数F有2个32位的存储单元,即1R和2R。令到F的输入为0X,1X和2X,即为比特重组的前三个输出,然后函数F输出一个32位字W。F的详细过程如下:012,,FXXX{1、32012mod2WXRR;2、32111mod2WRX;3、222WRX;4、1112LHRSLWW;5、2221LHRSLWW}(6)S盒F函数中包含的S盒S是由4个并列的8×8的S盒组成的(0123,,,SSSSS),其中02SS、13SS。0S、1S的定义由下面两张表分别给出:令x为0S(或1S)的8比特输入。将x表示成十六进制xhl,则在查表时h和l分别表示S盒的第h行和第l列。(7)线性变换函数线性变换1L和2L均为32比特字输入到32比特字的输出,具体可定义为:1323232322101824LXXXXXX2323232328142230LXXXXXX(8)密钥加载密钥的加载过程将把初始密钥和初始向量扩展为16个31比特的LFSR初始状态。设k为128比特的初始密钥,iv为128比特的初始向量,则有:01215kkkkk01215iviviviviv其中,015i同时,设D为由16个15比特长的子数组组成的240位常值数组:0115Dddd其中,02d=100010011010111;12d=010011010111100;22d=110001001101011;32d=001001101011110;42d=101011110001001;52d=011010111100010;62d=111000100110101;72d=000100110101111;82d=100110101111000;92d=010111100010011;102d=110101111000100;112d=001101011110001;122d=101111000100110;132d=011110001001101;142d=111100010011010;152d=100011110101100;设015,,ss为LFSR的16个单元,则015i,有iiiiskdiv。1.3算法的实现过程ZUC算法的执行过程主要有四个步骤:密钥加载,初始化阶段,工作阶段和密钥流产生阶段,具体过程如下:(1)密钥加载阶段:在密钥加载阶段,将128位的初始密钥和128位的初始化向量载人LFSR,同时设置32位的记忆单元R1,R2为0值。(2)初始化阶段在初始化阶段,执行下面的操作32次:1、Bitreorganization();2、012,,XwXFX;3、LFSRWithInitialisationMode(1w)(3)工作阶段在工作阶段,算法执行下面的操作1次,并弃掉F的输出W:1、Bitreorganization();2、012,,XXXF;3、LFSRWithWorkMode().(4)密钥流产生阶段在密钥流产生阶段,每次迭代执行以下操作1次,Z是一个32位的输出:1、Bitreorganization();2、0123,,XZFXXX;3、LFSRWithWorkMode().
本文标题:ZUC算法原理及实现过程
链接地址:https://www.777doc.com/doc-4779012 .html