祖冲之序列密码算法(ZUC算法)_第1页
祖冲之序列密码算法(ZUC算法)_第2页
祖冲之序列密码算法(ZUC算法)_第3页
祖冲之序列密码算法(ZUC算法)_第4页
祖冲之序列密码算法(ZUC算法)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

.2.WORD格式整理专业资料值得拥有祖冲之序列密码算法第1部分:算法描述范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。术语和约定以下术语和约定适用于本部分。比特bit二进制字符0和1称之为比特。字节byte由8个比特组成的比特串称之为字节。字word由2个以上〔包含2个比特组成的比特串称之为字。本部分主要使用31比特字和32比特字。字表示wordrepresentation本部分字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。高低位顺序bitordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。符号和缩略语运算符+算术加法运算mod整数取余运算⨁按比特位逐位异或运算⊞模232加法运算‖字符串连接符∙H取字的最高16比特∙L取字的最低16比特<<<k32比特字左循环移k位>>k32比特字右移k位ab向量a赋值给向量b,即按分量逐分量赋值符号下列符号适用于本部分:s0,s1,s2,…,s15 线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3 比特重组输出的4个32比特字R1,R2 非线性函数F的2个32比特记忆单元变量W 非线性函数F输出的32比特字 Z 算法每拍输出的32比特密钥字k 初始种子密钥iv初始向量D 用于算法初始化的字符串常量缩略语下列缩略语适用于本部分:ZUC祖冲之序列密码算法或祖冲之算法LFSR线性反馈移位寄存器BR比特重组F非线性函数算法描述算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。上层是16级线性反馈移位寄存器〔LFSR;中层是比特重组〔BR;下层是非线性函数F。图SEQ图\*ARABIC1祖冲之算法结构图线性反馈移位寄存器LFSR4.2.1概述LFSR包括16个31比特寄存器单元变量s0,s1,…,s15。LFSR的运行模式有2种:初始化模式和工作模式。4.2.2初始化模式在初始化模式下,LFSR接收一个31比特字u。u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W>>1。在初始化模式下,LFSR计算过程如下:LFSRWithInitialisationMode<u>{v=215s15+217s13+221s10+220s4+<1+28>s0mod<231-1>;s16=<v+u>mod<231-1>;如果s16=0,则置s16=231-1;<s1,s2,…,s15,s16><s0,s1,…,s14,s15>。}4.2.3工作模式在工作模式下,LFSR不接收任何输入。其计算过程如下:LFSRWithWorkMode<>{s16=215s15+217s13+221s10+220s4+<1+28>s0mod<231-1>;如果s16=0,则置s16=231-1;<s1,s2,…,s15,s16><s0,s1,…,s14,s15>。}比特重组BR比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。BR的具体计算过程如下:BitReconstruction<>{X0=s15H‖s14L;X1=s11L‖s9H;X2=s7L‖s5HX3=s2L‖s0H。}非线性函数FF包含2个32比特记忆单元变量R1和R2。F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。F的计算过程如下:F<X0,X1,X2>{W=<X0R1>⊞R2;W1=R1⊞X1;W2=R2X2;R1=S<L1<W1L‖W2H>>;R2=S<L2<W2L‖W1H>>。}其中S为32比特的S盒变换,定义在附录A中给出;L1和L2为32比特线性变换,定义如下:L1<X>=X<X<<<2><X<<<10><X<<<18><X<<<24>,L2<X>=X<X<<<8><X<<<14><X<<<22><X<<<30>。密钥装入密钥装入过程将128比特的初始密钥k和128比特的初始向量iv扩展为16个31比特字作为LFSR寄存器单元变量s0,s1,…,s15的初始状态。设k和iv分别为k0‖k1‖……‖k15和iv0‖iv1‖……‖iv15,其中ki和ivi均为8比特字节,0≤i≤15。密钥装入过程如下:D为240比特的常量,可按如下方式分成16个15比特的子串:D=d0‖d1‖……‖d15,其中:d4=10012,d5=2,d8=10012,d10=1002d11=2,d15=1002对0≤i≤15,有si=ki‖di‖ivi。算法运行4.6.1初始化阶段首先把128比特的初始密钥k和128比特的初始向量iv按照4.5节密钥装入方法装入到LFSR的寄存器单元变量s0,s1,…,s15中,作为LFSR的初态,并置32比特记忆单元变量R1和R2为全0。然后执行下述操作:重复执行下述过程32次:BitReconstruction<>;W=F<X0,X1,X2>;LFSRWithInitialisationMode<W>>1>。4.6.2工作阶段首先执行下列过程一次,并将F的输出W舍弃:BitReconstruction<>;F<X0,X1,X2>;LFSRWithWorkMode<>。然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:BitReconstruction<> ;Z=F<X0,X1,X2>X3;LFSRWithWorkMode<>。〔规范性附录S盒32比特S盒S由4个小的8х8的S盒并置而成,即S=<S0,S1,S2,S3>,其中S0=S2,S1=S3。S0和S1的定义分别见表1和表2。设S0<或S1>的8比特输入为x。将x视作两个16进制数的连接,即x=h||l,则表1<或表2>中第h行和第l列交叉的元素即为S0<或S1>的输出S0<x><或S1<x>>。设S盒S的32比特输入X和32比特输出Y分别为:X=x0‖x1‖x2‖x3,Y=y0‖y1‖y2‖y3,其中xi和yi均为8比特字节,i=0,1,2,3。则有yi=Si<xi>,i=0,1,2,3。表SEQ表\*ARABIC1S0盒0123456789ABCDEF03E725B47CAE0003304D1549809B96DCB17B1BF932AF9D6AA5B82DFC1D0853039024D4E8499E4CED991DDB685488B296EAC3CDC1F81E734369C6B5BDFD396320D4384767DB2A7CFED57C5F32CBB142106559B5E3EF5E314F7F5AA40D8251495FBA581C64A16D517A892241F8CFFD8AE2E01D3AD73B4BDA46EBC9DE9A8F87D73A806F2FC88B1B437F70A2213287CCC3C89C7C39656907BF7EF00B2B975235417961A64C10FEABC2695888AB0A3FBC01894F2E1E5E95DBD0DC1166645CEC59427512F5749CAA23C0E86ABBE2A02E767E644A26CC2939FF1DF6FA36D250689E6271153DD640C4E20FE8E83776B25053F0C30EA70B7A1E8A965F8D271ADB81B3A0F4457A19DFEE783460表SEQ表\*ARABIC2S1盒0123456789ABCDEF055C263713BC847869F3CDA5B29AAFD7718CC5940CA61A1300E3A8167240F9F84224426689681D9453E1076C6A78B3943E133AB5562AC06DB3052266BFDC0BFA62484DD20110636C9C1CFF62752BB69F5D48757F844CD29C57A4BC4F9ADFFED68D7AEB62B53D85CA11417FB23D57D30677308097EEB7703F61B2198E4EE54B938F5DDBA98ADF1AE2ECB0DFCF42D466E1D97E8D1E994D37A5755E839EAB829DB91CE0CD4989A01B6BD5824A25F387899159050B895E4BD091C7CEED0FB46FA0CCF0024A79C3DECA3EFEA51E66B18EC1B2C80F774E7FF21D5A6A541E41319235C433070ABA7E0E34E88B1987CF33D606C7BCAD31F32650428F64BE859B2F598AD7B025ACAF1203E2F2注:S0盒和S1盒数据均为十六进制表示。〔资料性附录模231-1乘法和模231-1加法的实现B.1模231-1乘法两个31比特字模231-1乘法可以快速实现。特别地,当其中一个字具有较低的汉明重量时,可以通过31比特的循环移位运算和模231-1加法运算实现。例如,计算abmod<231-1>,其中b=2i+2j+2k。则abmod<231-1>=<a<<<31i>+<a<<<31j>+<a<<<31k>mod<231-1>,其中<<<31表示31比特左循环移位运算。B.2模231-1加法 在32位处理平台上,两个31比特字a和b模231-1加法运算c=a+bmod<231-1>可以通过下面的两步计算实现:c=a+b;c=<c&0x7FFFFFFF>+<c>>31>。〔资料性附录算法计算实例C.1测试向量1〔全0输入:密钥k:00000000000000000000000000000000初始向量iv:00000000000000000000000000000000输出: z1:27bede74z2:018082da初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i00044d7000026bc0000626b0000135e00005789000035e200007135000009af008004d7800002f1300006bc400001af100005e2600003c4d0000789a000047ac00tX0X1X2X3R1R2WS150008f9af100005eaf00006b6b0000896782214162a008f9a4563cb1b18ac7ac260000d7780000e25e00004d474a2e7e119e94bb4fe932a028652a250cacb1b4d00003513000013890000c4c29687a5e9b6eb51291f7a7464f7443e8c9a0000bcc400009ae200002629c272f8cac7f5d141698fb3f5644ba47eacf744ac000078f100005e350000af2c85a24259cb0e41b0514006a500d444bacb1b00f1260000d7af00006bcbfbc5c044c10b3a50777f07038b9b60e07144c2a4d000035780000e2e083c8d37abf76790abddcc669b90e2b7d3728b9bf7448ac79a0000b14f4b669e72daeb0b9c162a913ea8c5520e2b44ba50caac000078c400009a982834a0f095d6948796020c7b591cc09f6b213ea144ce8c9cb1b00f1f100005ee14727d6d02258695f2ffdde70e21147初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i07ce15b8b747ca0c46259dd0b47a94c3a89c32b433fc231ea13f31711e4284ccce9553fb6071e161d35127114b1365154d45278c69a4f26ba6b3e1b8d6a有限状态机内部状态:R1=14cfd44cR2=8c6de800密钥流:tX0X1X2X3R1R2zS1507c37ba6bb1367f1e426568dd0bf9c23512bf50a0920453286dafe57f08e1411fe118d6ad4522ce955463d4c2be8f9c7ee7f130c0fa81727bede743d383d0427a70e1419a74e229071e62e2c82ec4b3dde63da7b9dd6a41018082da13d6d780C.2测试向量2〔全1输入:密钥k:ffffffffffffffffffffffffffffffff初始向量iv:ffffffffffffffffffffffffffffffff输出: z1:0657cfa0z2:7096398b初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i07fc4d7ff7fa6bcff7fe26bff7f935eff7fd789ff7fb5e2ff7ff135ff7f89afff87fcd78ff7faf13ff7febc4ff7f9af1ff7fde26ff7fbc4dff7ff89aff7fc7acfftX0X1X2X3R1R2WS150ff8f9afff1ffff5eafffff6b6bffff89b51c211030aff8f9aff76e49a1edc9acff26ffffd778ffffe25effff4da75b6f4b1a0796288978f0895e2d89832bc5b9a4dffff3513ffff1389ffffc49810b3159929673535088b795b9484b83b72989839affffbcc4ffff9ae2ffff264c5bd8eb2d577790c862a1cb2db5c75545b6b84b8acffff78f1ffff5e35ffffafa13dcb6621d0939f4487d3e3605792325c0afc7559a1afff126ffffd7afffff6bcc5ce2600c50a83629fd229d4e960653a992328983ff8f4dffff3578ffffe2dada0730b516b128ac4619345e02d9e57bc05e96084b8edc99affffbc13ffff132bbe53a412a8a1bf69f787904dddc8f209d9e5c755bc5bacffff78c4ffff9a4a90d661d9c744b4ec602baf0c3c91879dddc9232b7299a1afff1f1ffff5e76bc13d7a49ea4042cb050710b9d257b初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i009a339ad1291d1902555422736c091870697773b443cf9cd6a4cd89949e34bd0856130b1420e8f7a5b1dcc0c3cc2d11cc082c87f5904a55b61ce81fe46106有限状态机内部状态:R1=b8017bd5R2=9ce2de5c密钥流:tX0X1X2X3R1R2zS1503fc81ce8c2d141d14bd0887942271346aa131b1109d7706c668b56df13f56dbf127ea610682c8f0b14d49991872523251e7804caac5d660657cfa00c0fe3532181f6dbf04a21879f24c93c773b4aaad94e922891d88fba7096398b10f1eecfC.3测试向量3〔随机输入:密钥k:3d4c4be96a82fdaeb58f641db17b455b初始向量iv:84319aa8de6915ca1f6bda6bfbd8c766输出: z1:14f1cz2:3279c419初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i01ec4d7842626bc3125e26b9a74935ea8355789de4135e2697ef135155709afca85acd781f47af136b326bc4da0e9af16b58de26fb3dbc4dd822f89ac2dc7ac66tX0X1X2X3R1R2WS1505b8f9acf16b8f5eafca826b6b9a3d899c5df008315b8f9ac3c7b93c0178f7ac26fb64d7781ffde25ea84c4d3d533f80ff1faf4285372a41901ee92832093c04dd81d35136bae1389de4bc42ca57e9dd1db72f93f72cca9411efa993823d1ee99ac7b1bcc4dab59ae269e9260e8dc40f60921a8073d36d24b3f44967fa99ac667b78f16b8f5e35156aaf16c81467da8e7d8aa87c58e5742657855e84cf49f93c045f26fb64d7afca826b50c9eaa43c3b2dfdd9135e82481c5b9d6903857851ee95b8f4dd81d35781ffde259857b80be0fbdc1fd2ceb1e4b7f87ed796ff5b9dfa9978f79ac7b1bc136bae139528f8eabcc7f7eb8d89ddde0e633ce781cc687edf49f8320ac667b78c4dab59ac59d2932e1098a6446b676f2643ae5a69c8753ce75785823d93c045ff16b8f5e755ebae83f9e6e86eef1a039625ac5d7初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i010da59415b6acbf617060ce1353681745cf4385a479943df2753bab273775d6a843930a3777b4af3115b2e89f24ff6e20740c40b9026a5503194b2a577a9a有限状态机内部状态:R1=860a7dfaR2=bf0e0ffc密钥流:tX0X1X2X3R1R2zS150f5342a576e20ef695d6a8f0ce121b4129d8b392d7cdce13ead461d3d4aa9e717a951cff40b92b650a374ea78174b6d5ab7cf688c1598aa614f1c71db18282e3b6a9e7550349feaf31e6ee385a2e0c3cec1a9053cc0e3279c419258937da注:上述祖冲之算法计算实例中数据全部采用十六进制表示。————————————参考文献ETSI/SAGETS35.221.Specificationofthe3GPPConfidentialityandIntegrityAlgorithms128-EEA3&128-EIA3.Document1:128-EEA3and128-EIA3Specification.ETSI/SAGETS35.222.Specificationofthe3GPPConfidentialityandIntegrityAlgorithms128-EEA3&128-EIA3.Document2:ZUCSpecification.ETSI/SAGETS35.223.Specificationofthe3GPPConfidentialityandIntegrityAlgorithms128-EEA3&128-EIA3.Document3:Implementor'sTestData.ETSI/SAGETR35.924.Specificationofthe3GPPConfidentialityandIntegrityAlgorithms128-EEA3&128-EIA3.Document4:DesignandEvaluationReport.祖冲之序列密码算法第2部分:基于祖冲之算法的机密性算法1范围本部分描述了基于祖冲之算法的机密性算法。该机密性算法可适用于3GPPLTE通信中的加密和解密。本部分可用于指导基于祖冲之算法的机密性算法的相关产品的研制、检测和使用。2规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注明日期的引用文件,其最新版本〔包括所有的修改单适用于本文件。GM/T0001.1–2012祖冲之序列密码算法第1部分:算法描述术语和约定以下术语和约定适用于本部分。比特bit二进制字符0和1称之为比特。字节byte由8个比特组成的比特串称之为字节。字word由2个以上〔包含2个比特组成的比特串称之为字。本部分主要使用31比特字和32比特字。字表示wordrepresentation本部分字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。高低位顺序bitordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。4符号和缩略语4.1符号下列符号适用于本部分:按比特位逐位异或运算a‖b字符串连接符不小于的最小整数4.2缩略语下列缩略语适用于本部分:CK基于祖冲之算法的机密性算法密钥KEY祖冲之算法的初始密钥IV祖冲之算法的初始向量IBS输入比特流OBS输出比特流5算法描述5.1算法输入与输出本算法的输入参数见表1,输出参数见表2。表1输入参数表输入参数比特长度备注COUNT32计数器BEARER5承载层标识DIRECTION1传输方向标识CK128机密性密钥LENGTH32明文消息流的比特长度IBSLENGTH输入比特流表2输出参数表输出参数比特长度备注OBSLENGTH输出比特流5.2算法工作流程5.2.1初始化本算法的初始化是指根据机密性密钥CK以及其它输入参数〔参见5.1节表1构造祖冲之算法的初始密钥KEY和初始向量IV。记机密性密钥CK=CK[0]∥CK[1]∥CK[2]∥…∥CK[15]和祖冲之算法的初始密钥KEY=KEY[0]∥KEY[1]∥KEY[2]∥…∥KEY[15],其中CK[i]、KEY[i]<0≤i≤15>都是8比特的字节。则有KEY[i]=CK[i],i=0,1,2,…,15。记计数器COUNT=COUNT[0]∥COUNT[1]∥COUNT[2]∥COUNT[3]和祖冲之算法的初始向量IV=IV[0]∥IV[1]∥IV[2]∥…∥IV[15],其中COUNT[0]、COUNT[1]、COUNT[2]、COUNT[3]和IV[0]、IV[1]、…、IV[15]都是8比特的字节。则有IV[0]=COUNT[0],IV[1]=COUNT[1],IV[2]=COUNT[2],IV[3]=COUNT[3],IV[4]=BEARER∥DIRECTION∥002,IV[5]=IV[6]=IV[7]=000000002,IV[8]=IV[0],IV[9]=IV[1],IV[10]=IV[2],IV[11]=IV[3],IV[12]=IV[4],IV[13]=IV[5],IV[14]=IV[6],IV[15]=IV[7]。5.2.2产生密钥流利用节生成的初始密钥KEY和初始向量IV,祖冲之算法产生L个字的密钥流。将生成的密钥流用比特串表示为k[0],k[1],…,k[32*L-1],其中k[0]为祖冲之算法生成的第一个密钥字的最高位比特,k[31]为最低位比特,其它依此类推。为了处理LENGTH比特的输入比特流,L的取值为L=LENGTH/32。5.2.3加解密设长度为LENGTH的输入比特流为IBS=IBS[0]∥IBS[1]∥IBS[2]∥…∥IBS[LENGTH-1],对应的输出比特流为OBS=OBS[0]∥OBS[1]∥OBS[2]∥…∥OBS[LENGTH-1],其中IBS[i]和OBS[i]均为比特,i=0,1,2,……,LENGTH-1。则有OBS[i]=IBS[i]⨁k[i],i=0,1,2,…,LENGTH-1。.4.专业资料值得拥有〔资料性附录算法计算实例以下为本算法的计算实例。数据采用16进制表示。第一组加密实例:CK=173d14ba5003731d7a60049470f00a29COUNT=66035492BEARER=fDIRECTION=0LENGTH=c1IBS:6cf65340735552ab0c9752fa6f9025fe0bd675d9005875b200000000OBS:a6c85fc66afb8533aafc2518dfe784940ee1e4b030238cc800000000第二组加密实例:CK=e5bd3ea0eb55ade866c6ac58bd5430COUNT=56823BEARER=18DIRECTION=1LENGTH=320IBS:14a8ef693d678507bbe7270a7f67ff5006c3525b9807e467c4e56000ba338f5d429559036751822246c80d3b38f07f4be2d8ff5805f5132229bde93bbbdcaf382bf1ee972fbf9977bada8945847a2a6c9ad34a667554e04d1f7faOBS:131d43e0dea1be5c5a1bfd971d852cbf712d7b4f57961fea3208afa8bca433f456ad09c7417e58bc69cf8866d1353f74865e80781d202dfb3ecff7fcbc3b190fe82a204ed0e350fc0f6f2613b2f2bca6df5a473a57a4a第三组加密实例:CK=e13fed21b46e4e7ec31253b2bb17b3e0COUNT=2738cdaaBEARER=1aDIRECTION=0LENGTH=FB3IBS:8d74e20d54894e06d3cb13cb3933065e8674be62adb1c72b3a646965ab63cb7b7854dfdc27e84929f49c64b872a490b13f957b64827e71f41fbd4269a42c97f824537027f86e9f4ad82d1df451690fdd98b6d03f3a0ebe3a312d6b840ba5a1820b2a2c9709c090d245ed267cf845ae41fa975d3333ac3009fd40eba9eb5b885714b768b697138baf21380eca49f644d48689e4215760b906739f0d2b3f091133ca15d981cbe401baf72d05ace05cccb2d297f4ef6a5f58d91246cfa77215b892ab441d5278452795ccb7f5d79057a1c4f77f80d46db2033cb79bedf8e60551ce10c667f62a97abafabbcd6772018df96a282ea737ce2cb331211f60d5354ce78f9918d9c206ca042c9b62387dd709604a50af16d8d35a8906be484cf2e74a9289940364353249b27b4c9ae29eddfc7da6418791a4e7baa0660fa64511f2d685cc3a5ff70e0d2b74292e3b8a0cd6b04b1c790b8ead2703708540dea2fc09c3da770f65449e84d817a4f551055e19ab85018a0028b71a144d96791e9a3577933504eee0060340c69d274e1bf9d805dcbcc1a6faa976800b6ff2b671dc463652fa8a33ee50974c1cOBS:94eaa4aa30a57137ddf09b97b25618a20a13e2f10fa5bf8161a879cc2ae797a6b4cf2d9df31debb9905ccfec97de605d21c61ab8531b7f3c9da5f03931f8a0642de48211f5f52ffea10f392a047669985da454a28f080961a6c2b62daa17f33cd60a497

温馨提示

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

评论

0/150

提交评论