祖冲之序列密码算法(ZUC算法).doc

上传人:小** 文档编号:3032507 上传时间:2020-06-23 格式:DOC 页数:34 大小:132.06KB
返回 下载 相关 举报
祖冲之序列密码算法(ZUC算法).doc_第1页
第1页 / 共34页
祖冲之序列密码算法(ZUC算法).doc_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《祖冲之序列密码算法(ZUC算法).doc》由会员分享,可在线阅读,更多相关《祖冲之序列密码算法(ZUC算法).doc(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1.1.1.1.1.2 .-祖冲之序列密码算法第1部分:算法描述1 范围本部分描述了祖冲之序列密码算法,可用于指导祖冲之算法相关产品的研制、检测和使用。2 术语和约定以下术语和约定适用于本部分。2.1比特 bit二进制字符0和1称之为比特。2.2字节 byte由8个比特组成的比特串称之为字节。2.3字 word由2个以上(包含2个)比特组成的比特串称之为字。本部分主要使用31比特字和32比特字。2.4 字表示 word representation本部分字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字

2、采用二进制表示。2.5 高低位顺序 bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。3 符号和缩略语3.1 运算符+ 算术加法运算mod 整数取余运算 按比特位逐位异或运算 模232加法运算 字符串连接符H 取字的最高16比特L 取字的最低16比特k 32比特字右移k位ab 向量a赋值给向量b,即按分量逐分量赋值3.2 符号下列符号适用于本部分:s0,s1,s2,s15线性反馈移位寄存器的16个31比特寄存器单元变量X0,X1,X2,X3比特重组输出的4个32比特字R1, R2非线性函数F的2个32比特记忆单元变量W非线性函数F输出的32比

3、特字Z算法每拍输出的32比特密钥字k初始种子密钥iv初始向量D用于算法初始化的字符串常量3.3 缩略语下列缩略语适用于本部分:ZUC 祖冲之序列密码算法或祖冲之算法LFSR 线性反馈移位寄存器BR 比特重组F 非线性函数4 算法描述4.1 算法整体结构祖冲之算法逻辑上分为上中下三层,见图1。上层是16级线性反馈移位寄存器(LFSR);中层是比特重组(BR);下层是非线性函数F。图 1 祖冲之算法结构图4.2 线性反馈移位寄存器LFSR4.2.1 概述LFSR包括16个31比特寄存器单元变量s0, s1, , s15。LFSR的运行模式有2种:初始化模式和工作模式。4.2.2 初始化模式在初始化

4、模式下,LFSR接收一个31比特字u。u是由非线性函数F的32比特输出W通过舍弃最低位比特得到,即u=W 1。在初始化模式下,LFSR计算过程如下:LFSRWithInitialisationMode(u)(1) v = 215 s15 +217 s13 + 221 s10 + 220 s4 + (1 + 28)s0 mod (231-1);(2) s16=(v+u) mod (231-1);(3) 如果s16=0,则置s16=231-1;(4) (s1, s2, , s15, s16) (s0, s1, , s14, s15)。4.2.3 工作模式在工作模式下,LFSR不接收任何输入。其计算

5、过程如下:LFSRWithWorkMode()(1) s16 = 215 s15 +217 s13 + 221 s10 + 220 s4 + (1 + 28)s0 mod (231-1);(2) 如果s16=0,则置s16=231-1;(3) (s1, s2, , s15, s16) (s0, s1, , s14, s15)。4.3 比特重组BR比特重组从LFSR的寄存器单元中抽取128比特组成4个32比特字X0、X1、X2、X3。BR的具体计算过程如下:BitReconstruction()(1) X0 = s15Hs14L;(2) X1 = s11Ls9H;(3) X2 = s7Ls5H;

6、(4) X3 = s2Ls0H。4.4 非线性函数FF包含2个32比特记忆单元变量R1和R2。F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。F的计算过程如下:F (X0, X1, X2)(1) W = (X0 R1) R2;(2) W1 = R1 X1;(3) W2 = R2 X2;(4) R1 = S(L1(W1LW2H);(5) R2 = S(L2(W2LW1H)。其中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)

7、(X 22) (X 1)。4.6.2 工作阶段首先执行下列过程一次,并将F的输出W舍弃:(1) BitReconstruction();(2) F (X0, X1, X2);(3) LFSRWithWorkMode()。然后进入密钥输出阶段。在密钥输出阶段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:(1) BitReconstruction();(2) Z = F (X0, X1, X2) X3;(3) LFSRWithWorkMode()。附录A(规范性附录)S盒32比特S盒S由4个小的88的S盒并置而成,即S=(S0, S1, S2, S3),其中S0=S2,S1=S

8、3。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。表1 S0盒0123456789ABCDEF03E725B47CAE0003304D1549809B96DCB17B1BF932AF9D6AA5B82DFC1

9、D0853039024D4E8499E4CED991DDB685488B296EAC3CDC1F81E734369C6B5BDFD396320D4384767DB2A7CFED57C5F32CBB142106559B5E3EF5E314F7F5AA40D8251495FBA581C64A16D517A892241F8CFFD8AE2E01D3AD73B4BDA46EBC9DE9A8F87D73A806F2FC88B1B437F70A2213287CCC3C89C7C39656907BF7EF00B2B975235417961A64C10FEABC2695888AB0A3FBC01894F2E1

10、E5E95DBD0DC1166645CEC59427512F5749CAA23C0E86ABBE2A02E767E644A26CC2939FF1DF6FA36D250689E6271153DD640C4E20FE8E83776B25053F0C30EA70B7A1E8A965F8D271ADB81B3A0F4457A19DFEE783460表2 S1盒0123456789ABCDEF055C263713BC847869F3CDA5B29AAFD7718CC5940CA61A1300E3A8167240F9F84224426689681D9453E1076C6A78B3943E133AB5562

11、AC06DB3052266BFDC0BFA62484DD20110636C9C1CFF62752BB69F5D48757F844CD29C57A4BC4F9ADFFED68D7AEB62B53D85CA11417FB23D57D30677308097EEB7703F61B2198E4EE54B938F5DDBA98ADF1AE2ECB0DFCF42D466E1D97E8D1E994D37A5755E839EAB829DB91CE0CD4989A01B6BD5824A25F387899159050B895E4BD091C7CEED0FB46FA0CCF0024A79C3DECA3EFEA51E6

12、6B18EC1B2C80F774E7FF21D5A6A541E41319235C433070ABA7E0E34E88B1987CF33D606C7BCAD31F32650428F64BE859B2F598AD7B025ACAF1203E2F2注:S0盒和S1盒数据均为十六进制表示。(资料性附录)模231-1乘法和模231-1加法的实现B.1 模231-1乘法两个31比特字模231-1乘法可以快速实现。特别地,当其中一个字具有较低的汉明重量时,可以通过31比特的循环移位运算和模231-1加法运算实现。例如,计算ab mod(231-1),其中b=2i+2j+2k。则ab mod(231-1) =

13、 (a 31 i) + (a 31 j) +(a 31 k) mod(231-1),其中 31)。附录C(资料性附录)算法计算实例C.1 测试向量1(全0)输入:密钥k: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 初始向量iv: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00输出:z1: 27bede74 z2: 018082da初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i00044d7000026bc0000626b0000135e000

14、05789000035e200007135000009af008004d7800 002f1300006bc400001af100005e2600003c4d0000789a000047ac00tX0X1X2X3R1R2WS150008f9a00f100005eaf00006b6b0000896782214162a3a55f008f9a004563cb1b18ac7ac00260000d7780000e25e00004d474a2e7e119e94bb4fe932a028652a0f250cacb1b4d00003513000013890000c4c29687a5e9b6eb51291f7a2

15、07464f7443e8c92a0f9a0000bcc400009ae200002629c272f38cac7f5d141698fb3f5644ba47eacf744ac000078f100005e350000af2c85a65524259cb0e41b0514006a144c500d444bacb1b00f1260000d7af00006bcbfbc5c044c10b3a50777f9f07038b9b60e07144c2a0f008f4d000035780000e2e083c8d37abf76790abddcc669b90e2b7d3728b9bf7448ac79a0000bc130000

16、13147e14f4b669e72daeb0b9c162a913ea8c5520e2b44ba50caac000078c400009a982834a0f095d6948796020c7b591cc09f6b213ea144ce8c9cb1b00f1f100005ee14727d6d02258695f2ffdde70e21147 初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i07ce15b8b 747ca0c46259dd0b47a94c2b3a89c82e32b433fc231ea13f31711e4284ccce955 3fb6071e16

17、1d35127114b1365154d45278c69a744f26ba6b3e1b8d6a有限状态机内部状态:R1 = 14cfd44c R2 = 8c6de800密钥流:tX0X1X2X3R1R2zS1507c37ba6b b1367f6c1e426568dd0bf9c23512bf50a0920453286dafe57f08e1411fe118d6a d4522c3ae955463d4c2be8f9c7ee7f130c0fa81727bede743d383d0427a70e141 9a74e229071e62e2c82ec4b3dde63da7b9dd6a41018082da13d6d7

18、80C.2 测试向量 2(全1)输入:密钥k: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff初始向量iv: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff输出:z1: 0657cfa0z2: 7096398b初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i07fc4d7ff7fa6bcff7fe26bff7f935eff7fd789ff7fb5e2ff7ff135ff7f89afff87fcd78ff7faf13ff7febc4ff7f9af1ff

19、7fde26ff7fbc4dff7ff89aff7fc7acfftX0X1X2X3R1R2WS150ff8f9afff1ffff5eafffff6b6bffff89b51c211030a3629aff8f9aff 76e49a1a1edc9acff26ffffd778ffffe25effff4da75b6f4b1a0796288978f089 5e2d89832bc5b9a1a4dffff3513ffff1389ffffc49810b3159929673535088b795b9484b83b72989839affffbcc4ffff9ae2ffff264c5bd8eb2d577790c862a

20、1cb2db5c75545b6b84b8acffff78f1ffff5e35ffffafa13dcb6621d0939f4487d3e3605792325c0afc7559a1afff126ffffd7afffff6bcc5ce2600c50a8e283629fd229d4e960653a992328983ff8f4dffff3578ffffe2dada0730b516b128ac4619345e02d9e57bc05e96084b8edc99affffbc13ffff132bbe53a412a8a16e1bf69f787904dddc8f209d9e5c755bc5bacffff78c4ff

21、ff9a4a90d661d9c744b4ec602baf0c3c901691879dddc9232b7299a1afff1f1ffff5e76bc13d7a49ea4042cb050710b9d257b 初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i009a339ad1291d1902555422736c091870697773b443cf9cd6a4cd89949e34bd0856130b1420e8f24c7a5b1dcc0c3cc2d11cc082c87f5904a255b61ce81fe46106有限状态机内部状态:R1 = b801

22、7bd5 R2 = 9ce2de5c密钥流:tX0X1X2X3R1R2zS1503fc81ce8c2d141d14bd0887942271346aa131b1109d7706c668b56df13f56dbf127ea610682c8f4b60b14d49991872523251e7804caac5d660657cfa00c0fe3532181f6dbf04a21879f24c93c6773b4aaad94e922891d88fba7096398b10f1eecfC.3 测试向量3(随机)输入:密钥k: 3d 4c 4b e9 6a 82 fd ae b5 8f 64 1d b1 7b 45

23、5b初始向量iv: 84 31 9a a8 de 69 15 ca 1f 6b da 6b fb d8 c7 66输出:z1: 14f1c272 z2: 3279c419初始化:线性反馈移位寄存器初态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i01ec4d784 2626bc3125e26b9a74935ea8355789de4135e2697ef135155709afca85acd781f 47af136b326bc4da0e9af16b58de26fb3dbc4dd822f89ac72dc7ac66tX0X1X2X3R1R2WS1505b8f9ac7 f16b8f5

24、eafca826b6b9a3d899c62829f5df008315b8f9ac7 3c7b93c0178f7ac66 26fb64d7781ffde25ea84c4d3d533f3a80ff1faf4285372a 41901ee92832093c0 4dd81d35136bae1389de4bc42ca57e9dd1db72f93f72cca9 411efa993823d1ee9 9ac7b1bcc4dab59ae269e9260e8dc40f60921a4f8073d36d 24b3f49f44967fa99 ac667b78f16b8f5e35156aaf16c81467da8e7d8

25、aa87c58e5 742657855e84cf49f 93c045f126fb64d7afca826b50c9eaa43c3b2dfdd9135e82 481c5b9d690385785 1ee95b8f4dd81d35781ffde259857b80be0fbdc1fd2ceb1e 4b7f87ed796ff5b9d fa9978f79ac7b1bc136bae139528f8eabcc7f7eb8d89ddde 0e633ce781cc687ed f49f8320ac667b78c4dab59ac59d2932e1098a6446b676f2 643ae5a69c8753ce7 5785

26、823d93c045f1f16b8f5e755ebae83f9e6e86eef1a039 625ac5d7初始化后线性反馈移位寄存器状态:iS0+iS1+iS2+iS3+iS4+iS5+iS6+iS7+i010da5941 5b6acbf617060ce1353681745cf4385a479943df2753bab273775d6a843930a37 77b4af3115b2e89f24ff6e20740c40b9026a5503194b2a577a9a1cff有限状态机内部状态:R1 = 860a7dfa R2 = bf0e0ffc密钥流:tX0X1X2X3R1R2zS150f5342a5

27、7 6e20ef695d6a8f320ce121b4129d8b392d7cdce13ead461d 3d4aa9e717a951cff 40b92b650a374ea78174b6d5ab7cf688c1598aa614f1c272 71db18282e3b6a9e7 550349feaf31e6ee385a2e0c3cec1a4a9053cc0e3279c419 258937da注:上述祖冲之算法计算实例中数据全部采用十六进制表示。参考文献1 ETSI/SAGE TS 35.221. Specification of the 3GPP Confidentiality and Integri

28、ty Algorithms 128-EEA3 & 128-EIA3. Document 1: 128-EEA3 and 128-EIA3 Specification.2 ETSI/SAGE TS 35.222. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 2: ZUC Specification.3 ETSI/SAGE TS 35.223. Specification of the 3GPP Confidentiality and Integri

29、ty Algorithms 128-EEA3 & 128-EIA3. Document 3: Implementors Test Data.4 ETSI/SAGE TR 35.924. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 4: Design and Evaluation Report.祖冲之序列密码算法第2部分:基于祖冲之算法的机密性算法1 范围本部分描述了基于祖冲之算法的机密性算法。该机密性算法可适用于3GPP LTE通信中的加密和解密

30、。本部分可用于指导基于祖冲之算法的机密性算法的相关产品的研制、检测和使用。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注明日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。GM/T 0001.1 2012 祖冲之序列密码算法 第1部分:算法描述3 术语和约定以下术语和约定适用于本部分。2.6比特 bit二进制字符0和1称之为比特。2.7字节 byte由8个比特组成的比特串称之为字节。2.8字 word由2个以上(包含2个)比特组成的比特串称之为字。本部分主要使用31比特字和32比特字。2.9 字表示 word rep

31、resentation本部分字默认采用十进制表示。当字采用其它进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀0x指示该字采用十六进制表示,后缀下角标2指示该字采用二进制表示。2.10 高低位顺序 bit ordering本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。4 符号和缩略语4.1 符号下列符号适用于本部分: 按比特位逐位异或运算ab 字符串连接符 不小于的最小整数4.2 缩略语下列缩略语适用于本部分:CK 基于祖冲之算法的机密性算法密钥KEY 祖冲之算法的初始密钥IV 祖冲之算法的初始向量IBS 输入比特流OBS 输出比特流5 算法描述5.1

32、 算法输入与输出本算法的输入参数见表1,输出参数见表2。表1输入参数表输入参数比特长度备注COUNT32计数器BEARER5承载层标识DIRECTION1传输方向标识CK128机密性密钥LENGTH32明文消息流的比特长度IBSLENGTH输入比特流表2输出参数表输出参数比特长度备注OBSLENGTH输出比特流5.2 算法工作流程5.2.1 初始化本算法的初始化是指根据机密性密钥CK以及其它输入参数(参见5.1节表1)构造祖冲之算法的初始密钥KEY和初始向量IV。记机密性密钥CK = CK0CK1CK2CK15和祖冲之算法的初始密钥KEY = KEY0KEY1KEY2KEY15,其中CKi、K

33、EY i(0i15)都是8比特的字节。则有KEYi = CKi, i=0,1,2,15。记计数器COUNT=COUNT0COUNT1COUNT2COUNT3和祖冲之算法的初始向量IV = IV0IV1IV2IV15,其中COUNT0、COUNT1、COUNT2、COUNT3和IV0、IV1、IV15都是8比特的字节。则有IV0 = COUNT0,IV1 = COUNT1,IV2 = COUNT2,IV3 = COUNT3,IV4 = BEARERDIRECTION002,IV5 = IV6 = IV7 = 000000002,IV8 = IV0,IV9 = IV1,IV10 = IV2,IV1

34、1 = IV3,IV12 = IV4,IV13 = IV5,IV14 = IV6,IV15 = IV7。5.2.2 产生密钥流利用5.2.1节生成的初始密钥KEY和初始向量IV,祖冲之算法产生L个字的密钥流。将生成的密钥流用比特串表示为k0,k1,k32*L-1,其中k0为祖冲之算法生成的第一个密钥字的最高位比特,k31为最低位比特,其它依此类推。为了处理LENGTH比特的输入比特流,L的取值为L=LENGTH/32。5.2.3 加解密设长度为LENGTH的输入比特流为IBS= IBS0IBS1IBS2IBSLENGTH-1,对应的输出比特流为OBS= OBS0OBS1OBS2OBSLENGT

35、H-1,其中IBSi和OBSi均为比特,i=0,1,2,LENGTH-1。则有OBSi= IBSiki,i=0,1,2,LENGTH-1。(资料性附录)算法计算实例以下为本算法的计算实例。数据采用16进制表示。 第一组加密实例:CK = 17 3d 14 ba 50 03 73 1d 7a 60 04 94 70 f0 0a 29COUNT = 66035492BEARER = fDIRECTION = 0LENGTH = c1 IBS: 6cf65340 735552ab 0c9752fa 6f9025fe 0bd675d9 005875b2 00000000OBS: a6c85fc6 6afb8533 aafc2518 dfe7

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com