CN110011798A - 一种zuc-256流密码算法的初始化方法和装置及通信方法 - Google Patents
一种zuc-256流密码算法的初始化方法和装置及通信方法 Download PDFInfo
- Publication number
- CN110011798A CN110011798A CN201910276961.8A CN201910276961A CN110011798A CN 110011798 A CN110011798 A CN 110011798A CN 201910276961 A CN201910276961 A CN 201910276961A CN 110011798 A CN110011798 A CN 110011798A
- Authority
- CN
- China
- Prior art keywords
- bit
- lfsr
- input
- zuc
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
Abstract
本发明公开了一种ZUC‑256流密码的初始化方法和装置及通信方法。该方法包括:1)将输入的256比特的初始密钥划分为32个字节,输入的184比特初始向量划分为25个比特串;输入的常数划分为15个7比特常数;2)设置1个含16个31比特单元的线性移位寄存器和2个32比特记忆单元R1,R2的有限状态自动机,以上述32个字节、25个比特串、和15个7比特常数为输入参数,依次装载每个寄存器单元,并将R1与R2清零;3)进行前32轮带反馈值得迭代和末1轮不带反馈值迭代的迭代过程后,形成ZUC‑256流密码算法的工作状态。本发明与ZUC‑128算法之初始化方法兼容性高,且满足了新条件下的安全性需求。
Description
技术领域
本发明提出了一种ZUC-256流密码算法的初始化方法和装置,以及采用该方法的通信方法,属于通信技术领域。
背景技术
密码技术历史悠久,按照时代可以分为古典密码学和现代密码学。古典密码学主要用于保护军事和外交通信安全。随着通信网络和计算机网络的普及,现代密码学得到了迅速地发展,其应用不再限于政治、军事和外交,其商业价值和社会价值得到了广泛的认同。密码算法是密码学应用的核心,可分为公钥密码算法和对称密码算法。对称密码算法又可分为分组密码算法和流密码算法。分组密码算法一般对于消息进行分块加密,算法运行一次加密一个明文消息块。流密码算法一般由一个初始密钥和初始向量,根据特定的密钥流生成算法,生成与要加密的消息长度相等的密钥流序列,将密钥流序列与明文序列按位异或加密。而解密方由初始密钥和初始向量生成同样的密钥流序列,与密文异或,即可得到明文。
ZUC-128算法的输入为128比特的初始密钥和128比特的初始向量,输出为32比特字的密钥流序列,整体结构包括域231-1上的线性移位反馈寄存器(LFSR)、比特重组(BR)、和非线性有限状态自动机(FSM)组成。2004年3GPP启动了长期演进计划(LTE)的研究,亦即4G国际通信标准。2011年9月,由我国自主设计的以ZUC-128算法为核心的加密算法128-EEA3和完整性算法128-EIA3正式成为LTE国际通信加密标准,这是我国商用密码首次走出国门参与国际标准竞争,并取得重大成功,极大提高了我国在世界移动通信领域的地位和影响力,对我国移动通信产业和商用密码产业发展具有重大而深远的意义。
随着计算机计算能力的不断提高和后量子密码时代的来临,采用256比特的密钥已经成为未来5G应用环境下的一种趋势,亟需提出采用256比特密钥的升级版本ZUC-256算法。新的ZUC-256流密码算法采用256比特密钥与184比特的初始向量IV,以提供更强且长期的安全性,同时保持了与ZUC-128算法高度的兼容性。
发明内容
本发明提供了一种ZUC-256流密码算法的初始化方法,在保持与ZUC-128流密码算法高度兼容性的同时,将密码长度升级为256比特,初始向量IV升级为184比特,可提供更强且长期的安全性,以满足5G应用环境与后量子密码时代的需求。其基本设计思想为简单装载,无需额外的运算,且加快初始向量上的差分传播速度,有效抵抗相关密钥下的滑动攻击与其他相关密钥选择初始向量攻击。
本发明的技术方案为:
一种ZUC-256流密码算法的初始化方法,其步骤包括:
1)将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,且占据一个字节的低6比特;输入的常数D划分为16个7比特常数(d0,…,d15);
2)设置1个含16个31比特单元s0,…,s15的线性移位寄存器(LFSR)和含2个32比特记忆单元R1,R2的有限状态自动机(FSM),以(K31,K30,…,K0)、(IV24,IV23,…,IV0)和(d0,…,d14)为输入参数,按照规定的装载方式依次装载LFSR的每个寄存器单元,并将R1与R2清零;
3)以装载完成后的s0,…,s15和R1,R2作为初始状态St0,进行32轮带生成密钥流反馈的迭代和末轮不带生成密钥流反馈的初始化过程后,形成ZUC-256流密码算法的密钥流生成阶段的工作初始状态St33。
进一步地,所述规定的装载方式为对于LFSR每一寄存器单元si,将8比特密钥分块Ki、7比特常数分块di与初始向量IV分块按如下之方式装载:
s0=K0||d0||K21||K16,
s1=K1||d1||K22||K17,
s2=K2||d2||K23||K18,
s3=K3||d3||K24||K19,
s4=K4||d4||K25||K20,
s5=IV0||(d5|IV17)||K5||K26,
s6=IV1||(d6|IV18)||K6||K27,
s7=IV10||(d7|IV19)||K7||IV2,
s8=K8||(d8|IV20)||IV3||IV11,
s9=K9||(d9|IV21)||IV12||IV=4,
s10=IV5||(d10|IV22)||K10||K28,
s11=K11||(d11|IV23)||IV6||IV13,
s12=K12||(d12|IV24)||IV7||IV14,
s13=K13||d13||IV15||IV8,
其中和分别表示K31字节的高4位和低4位;所述的“||”表示比特串的拼接操作,所述的“|”表示按位逻辑或运算。
进一步地,所述的常数di(0≤i≤15)定义为:
d0=0100010,d1=0101111,d2=0100100,d3=0101010,
d4=1101101,d5=1000000,d6=1000000,d7=1000000,
d8=1000000,d9=1000000,d10=1000000,d11=1000000,
d12=1000000,d13=1010010,d14=0010000,d15=0110000。
进一步地,反馈迭代过程包括比特重组、反馈值计算、FSM更新、LFSR按初始化模式步进和LFSR按工作模式步进,其处理方法为:
1)前32轮反馈迭代步骤包括比特重组、反馈值计算、FSM更新和LFSR按初始化模式步进4个环节;
2)末轮反馈迭代步骤包括比特重组、FSM更新和LFSR按密钥流生成工作模式步进3个环节。
进一步地:
1)所述比特重组环节作用于4组共8个31比特LFSR单元,(s15,s14),(s11,s9),(s7,s5),(s2,s0);输出为4个32比特字,具体为X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H;
2)所述反馈值计算环节作用于前述比特重组环节输出的1个32比特字与FSM的2个32比特单元,即X0,R1,R2,将X0与R1异或后的结果再模232加R2作为反馈值W;
3)所述的FSM更新环节作用于前述比特重组环节输出的2个32比特字与FSM的2个32比特单元,即X1,X2,R1,R2。首先计算R1模232加X1的值作为中间值W1,R2异或X2的值作为中间值W2,其次将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1,R2的更新值;图1中L1与L2分别表示两个MDS矩阵的线性变换M1与M2,S表示4个8-比特S-盒的并置,°表示两个函数的复合。
4)所述LFSR按初始化模式步进环节作用于16个31比特的LFSR单元和上述之反馈值,即W,s0,s1,…,s15。首先计算中间值v=215·s15+217·s13+221·s10+220·s4+(1+28)·s0,其次计算更新值s16=v+(W>>1),最后进行移位操作si=si+1,0≤i≤15;
5)所述LFSR按工作模式步进环节作用于16个31比特的LFSR单元,即s0,s1,…,s15。首先计算更新值s16=215·s15+217·s13+221·s10+220·s4+(1+28)·s0,其次进行移位操作si=si+1,0≤i≤15。
进一步地,
1)所述移位变换将输入的2个32比特中间值(W1,W2)看作4个16比特字串(W1H,W1L,W2H,W2L),经循环移位后变为(W1L,W2H,W2L,W1H)。所述的拼接变换将移位变换后得到的(W1L,W2H,W2L,W1H),拼接为2个32比特字,即x1=W1L||W2H和x2=W2L||W1H。所述的线性变换将输入的2个32比特字x1和x2分别用MDS矩阵M1和M2作用,得到2个32比特的字y1=M1x1和y2=M2x2。所述的非线性变换将输入的两个32比特字y1和y2,分别看作2个4字节串(y10.y11,y12,y13)和(y20,y21,y22,y23),分别经过由4个8比特S盒(S0,S1,S0,S1)并置构成的S盒代替变换后,得到2个32比特字;
2)所述的模加为环上的加法。所述的“+”加运算与“.”乘运算法,均定义在素域上,且域使用以231-1表示0元素的代表字母表,即代表元为{1,2,…,231-1}。所述的“>>1”运算为32比特字右移1位运算。所述的“||”表示比特串的连接运算,所述的下标H(或L)表示相应值的高16比特(或低16比特)。
进一步地,所述两个MDS矩阵M1和M2作用为:
进一步地,所述“<<<”运算为32比特字的循环左移位运算,运算为为相应操作数的对位比特异或运算。
基于同一发明构思,本发明还提供一种ZUC-256流密码算法的初始化装置,其包括:
装载模块,负责通过以下操作装载初始密钥、初始向量和常数:将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,且占据一个字节的低6比特;输入的常数D划分为16个7比特常数(d0,…,d15);设置1个含16个31比特单元s0,…,s15的线性移位寄存器(LFSR)和2个32比特记忆单元R1,R2的有限状态自动机(FSM),以(K31,K30,…,K0)、(IV24,IV23,…,IV0)和(d0,…,d14)为输入参数,按照规定的装载方式依次装载LFSR的每个寄存器单元,并将R1与R2清零;
迭代模块,负责以装载完成后的s0,…,s15和R1,R2作为初始状态St0,进行32轮带生成密钥流反馈的迭代和末轮不带生成密钥流反馈的初始化过程后,形成ZUC-256流密码算法的密钥流生成阶段的工作初始状态St33。
本发明还提供一种采用ZUC-256流密码算法的加密通信方法,包括以下步骤:
a)采用上面所述方法进行ZUC-256流密码算法的初始化;
b)加密端利用初始化后的ZUC-256流密码算法,生成与要加密的消息长度相等的密钥流序列,将密钥流序列与明文序列按位异或加密,形成待传输的消息密文。
进一步地,解密端接收到所述消息密文后,由初始密钥和初始向量生成同样的密钥流序列,与消息密文异或,得到消息明文。
与现有技术相比,本发明的积极效果为:
本发明提出的一种ZUC-256流密码算法的初始化方法,具有易实现性、兼容性与安全性优势:
1)密钥装载快,方式简单,软硬件实现友好。密钥长度增长,但迭代轮数不增加,初始化迭代轮数仍为33轮与128比特密钥版本的ZUC-128相同。
2)ZUC-256初始化算法逻辑与ZUC-128算法的密钥加载方式保持了良好的兼容性,降低了成本。
3)在单密钥模型下,ZUC-256流密码的初始化方法扩散性好于ZUC-128算法,每一个初始向量上的单比特差分可以在最多4步内进入有限状态自动机FSM。
4)能够有效抵抗选择IV攻击、滑动攻击、弱密钥攻击等针对初始化阶段的典型密码分析方法,安全性高。
附图说明
图1为ZUC-256算法的初始化过程示意图;
图2为FSM更新结构图。
具体实施方式
下面通过具体实施示例,对本发明做详细的说明。
本发明提供了一种ZUC-256流密码的初始化方法,其中密钥长度为256比特,初始向量IV长度为184比特,图1给出了ZUC-256流密码的算法结构图。ZUC-256算法初始化方法分为两个阶段,即密钥/初始向量/常数装载阶段和迭代阶段。迭代阶段包括前32轮的带反馈迭代和末1轮的不带反馈值迭代,具体来说,初始化迭代轮的环节包括比特重组、计算反馈值、FSM更新、LFSR初始化模式步进和LFSR工作模式步进。各环节涉及到的变换包括剪接变换、线性变换以及非线性变换。ZUC-256算法初始化方法的具体步骤如下:
将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,占据一个字节的低6比特。
密钥/初始向量/常数装载阶段:
1)设置16个7比特的密钥装载常数d0,…,d15,见表1。
表1:密钥装载常数(二进制表示)
d<sub>i</sub> | d<sub>0</sub> | d<sub>1</sub> | d<sub>2</sub> | d<sub>3</sub> | d<sub>4</sub> | d<sub>5</sub> | d<sub>6</sub> | d<sub>7</sub> |
值 | 0100010 | 0101111 | 0100100 | 0101010 | 1101101 | 1000000 | 1000000 | 1000000 |
d<sub>i</sub> | d<sub>8</sub> | d<sub>9</sub> | d<sub>10</sub> | d<sub>11</sub> | d<sub>12</sub> | d<sub>13</sub> | d<sub>14</sub> | d<sub>15</sub> |
值 | 1000000 | 1000000 | 1000000 | 1000000 | 1000000 | 1010010 | 0010000 | 0110000 |
2)将密钥字节Ki,IV数据分块IVi及装载常数di,按照如下规则拼接为16个31比特的值s0,…,s15,作为域231-1上定义之LFSR的16个单元的初值,具体如下:
s0=K0||d0||K21||K16,
s1=K1||d1||K22||K17,
s2=K2||d2||K23||K18,
s3=K3||d3||K24||K19,
s4=K4||d4||K25||K20,
s5=IV0||(d5|IV17)||K5||K26,
s6=IV1||(d6|IV18)||K6||K27,
s7=IV10||(d7|IV19)||K7||IV2,
s8=K8||(d8|IV20)||IV3||IV11,
s9=K9||(d9|IV21)||IV12||IV4,
s10=IV5||(d10|IV22)||K10||K28,
s11=K11||(d11|IV23)||IV6||IV13,
s12=K12||(d12|IV24)||IV7||IV14,
s13=K13||d13||IV15||IV8
其中和分别表示K31字节的高4位和低4位。
3)将FSM的两个单元R1,R2都置为0。
初始化迭代阶段:
1)前32轮迭代,依次由比特重组、计算反馈值、FSM更新、LFSR初始化模式步进4个环节组成。具体步骤如下:
A.将4组共8个31比特的LFSR单元(s15,s14),(s11,s9),(s7,s5),(s2,s0),经比特重组后输出为4个32比特字,X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H。
B.将比特重组环节输出的X0与FSM的R1单元异或后的结果再模232加FSM的R2单元作为反馈值W。
C.将R1模加X1的值作为中间值W1,R2异或X2的值作为中间值W2。将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1和R2的更新值。
D.将215·s15+217·s13+221·s10+220·s4+(1+28)·s0+(W>>1)作为更新值s16,之后LFSR单元左移si=si+1,0≤i≤15;
所述的“>>1”运算为32比特字右移1位运算。
2)末轮迭代,依次由比特重组、FSM更新、LFSR工作模式步进3个环节组成。具体步骤如下:
E.将4组共8个31比特的LFSR单元(s15,s14),(s11,s9),(s7,s5),(s2,s0),经比特重组后输出为4个32比特字,X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H。
F.将R1模232加X1的值作为中间值W1,R2异或X2的值作为中间值W2。将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1和R2的更新值。
G.将215·s15+217·s13+221·s10+220·s4+(1+28)·s0作为更新值s16,之后LFSR各单元进行移位操作si=si+1,0≤i≤15。
初始化迭代阶段所述移位变换将输入的2个32比特中间值(W1,W2)看作4个16比特字串(W1H,W1L,W2H,W2L),经循环移位后变为(W1L,W2H,W2L,W1H)。所述的拼接变换将移位变换后得到的(W1L,W2H,W2L,W1H),拼接为2个32比特字x1=W1L||W2H和x2=W2L||W1H。所述的线性变换将输入的2个32比特字x1和x2分别用MDS矩阵M1和M2作用,见表2,得到2个32比特的字y1=M1x1和y2=M2x2。所述的非线性变换将输入的两个32比特字y1和y2,看作2个4字节串(y10.y11,y12,y13)和(y20.y21,y22,y23),分别经过由4个8比特S盒(S0,S1,S0,S1)的并置构成的S盒代替变换后,得到2个32比特字,S盒S0,S1内容由表3、表4给出,FSM的更新环节由图2给出。所述的模加为环上的加法。所述的“+”加运算与“.”乘运算法,均定义在素域上,且域使用以231-1表示0元素的字母表,代表元为{1,2,…,231-1}。所述的“>>1”运算为32比特字右移1位运算。所述的“||”表示比特串的连接运算,所述的下标H(或L)表示该值的高16比特(或低16比特)。
表2:MDS矩阵M1和M2
表3:S0盒(十六进制表示)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | 3E | 72 | 5B | 47 | CA | E0 | 00 | 33 | 04 | D1 | 54 | 98 | 09 | B9 | 6D | CB |
1 | 7B | 1B | F9 | 32 | AF | 9D | 6A | A5 | B8 | 2D | FC | 1D | 08 | 53 | 03 | 90 |
2 | 4D | 4E | 84 | 99 | E4 | CE | D9 | 91 | DD | B6 | 85 | 48 | 8B | 29 | 6E | AC |
3 | CD | C1 | F8 | 1E | 73 | 43 | 69 | C6 | B5 | BD | FD | 39 | 63 | 20 | D4 | 38 |
4 | 76 | 7D | B2 | A7 | CF | ED | 57 | C5 | F3 | 2C | BB | 14 | 21 | 06 | 55 | 9B |
5 | E3 | EF | 5E | 31 | 4F | 7F | 5A | A4 | 0D | 82 | 51 | 49 | 5F | BA | 58 | 1C |
6 | 4A | 16 | D5 | 17 | A8 | 92 | 24 | 1F | 8C | FF | D8 | AE | 2E | 01 | D3 | AD |
7 | 3B | 4B | DA | 46 | EB | C9 | DE | 9A | 8F | 87 | D7 | 3A | 80 | 6F | 2F | C8 |
8 | B1 | B4 | 37 | F7 | 0A | 22 | 13 | 28 | 7C | CC | 3C | 89 | C7 | C3 | 96 | 56 |
9 | 07 | BF | 7E | F0 | 0B | 2B | 97 | 52 | 35 | 41 | 79 | 61 | A6 | 4C | 10 | FE |
A | BC | 26 | 95 | 88 | 8A | B0 | A3 | FB | C0 | 18 | 94 | F2 | E1 | E5 | E9 | 5D |
B | D0 | DC | 11 | 66 | 64 | 5C | EC | 59 | 42 | 75 | 12 | F5 | 74 | 9C | AA | 23 |
C | 0E | 86 | AB | BE | 2A | 02 | E7 | 67 | E6 | 44 | A2 | 6C | C2 | 93 | 9F | F1 |
D | F6 | FA | 36 | D2 | 50 | 68 | 9E | 62 | 71 | 15 | 3D | D6 | 40 | C4 | E2 | 0F |
E | 8E | 83 | 77 | 6B | 25 | 05 | 3F | 0C | 30 | EA | 70 | B7 | A1 | E8 | A9 | 65 |
F | 8D | 27 | 1A | DB | 81 | B3 | A0 | F4 | 45 | 7A | 19 | DF | EE | 78 | 34 | 60 |
表4:S1盒(十六进制表示)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | 55 | C2 | 63 | 71 | 3B | C8 | 47 | 86 | 9F | 3C | DA | 5B | 29 | AA | FD | 77 |
1 | 8C | C5 | 94 | 0C | A6 | 1A | 13 | 00 | E3 | A8 | 16 | 72 | 40 | F9 | F8 | 42 |
2 | 44 | 26 | 68 | 96 | 81 | D9 | 45 | 3E | 10 | 76 | C6 | A7 | 8B | 39 | 43 | E1 |
3 | 3A | B5 | 56 | 2A | C0 | 6D | B3 | 05 | 22 | 66 | BF | DC | 0B | FA | 62 | 48 |
4 | DD | 20 | 11 | 06 | 36 | C9 | C1 | CF | F6 | 27 | 52 | BB | 69 | F5 | D4 | 87 |
5 | 7F | 84 | 4C | D2 | 9C | 57 | A4 | BC | 4F | 9A | DF | FE | D6 | 8D | 7A | EB |
6 | 2B | 53 | D8 | 5C | A1 | 14 | 17 | FB | 23 | D5 | 7D | 30 | 67 | 73 | 08 | 09 |
7 | EE | B7 | 70 | 3F | 61 | B2 | 19 | 8E | 4E | E5 | 4B | 93 | 8F | 5D | DB | A9 |
8 | AD | F1 | AE | 2E | CB | 0D | FC | F4 | 2D | 46 | 6E | 1D | 97 | E8 | D1 | E9 |
9 | 4D | 37 | A5 | 75 | 5E | 83 | 9E | AB | 82 | 9D | B9 | 1C | E0 | CD | 49 | 89 |
A | 01 | B6 | BD | 58 | 24 | A2 | 5F | 38 | 78 | 99 | 15 | 90 | 50 | B8 | 95 | E4 |
B | D0 | 91 | C7 | CE | ED | 0F | B4 | 6F | A0 | CC | F0 | 02 | 4A | 79 | C3 | DE |
C | A3 | EF | EA | 51 | E6 | 6B | 18 | EC | 1B | 2C | 80 | F7 | 74 | E7 | FF | 21 |
D | 5A | 6A | 54 | 1E | 41 | 31 | 92 | 35 | C4 | 33 | 07 | 0A | BA | 7E | 0E | 34 |
E | 88 | B1 | 98 | 7C | F3 | 3D | 60 | 6C | 7B | CA | D3 | 1F | 32 | 65 | 04 | 28 |
F | 64 | BE | 85 | 9B | 2F | 59 | 8A | D7 | B0 | 25 | AC | AF | 12 | 03 | E2 | F2 |
表中元素为十六进制表示,即如果S盒S0的8比特输入为0000 0001(十六进制表示为0x01),则经过S盒的8比特输出为0x72(对应于第0行,第1列的值)。
下面提供一个具体实例。本实例的处理方法如下:
Step 1:将输入的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,占据一个字节的低6比特。
Step 2:将密钥字节Ki,初始向量IV数据IVi,密钥装载常数di,按照约定规则拼接为16个31比特的值s0,…,s15,作为域231-1上之LFSR的16个单元的初值。
Step 3:将FSM中的两个单元R1,R2都置为0。
Step 4:将4组共8个31比特的LFSR单元(s15,s14),(s11,s9),(s7,s5),(s2,s0),经由4个剪接变换并置构成的比特重组后输出4个32比特字,即X0,X1,X2,X3。
Step 5:将比特重组环节输出的X0与FSM的R1单元异或后的结果再模232加FSM的R2单元作为反馈值W。
Step 6:将R1模232加X1的值作为中间值W1,R2异或X2的值作为中间值W2。将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1和R2的更新值。
Step 7:将215·s15+217·s13+221·s10+220·s4+(1+28)·s0+(W>>1)作为更新值s16,之后将LFSR单元进行平移操作si=si+1,0≤i≤15;
Step 8:重复运行Step 4~Step 7共计32轮。
Step 9:将4组共8个31比特的LFSR单元(s15,s14),(s11,s9),(s7,s5),(s2,s0),经比特重组变换后输出为4个32比特字,X0,X1,X2,X3。
Step 10:将R1模232加X1的值作为中间值W1,R2异或X2的值作为中间值W2。将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1和R2的更新值。
Step 11:将215·s15+217·s13+221·s10+220·s4+(1+28)·s0作为更新值s16,之后将LFSR各单元进行平移操作si=si+1,0≤i≤15。
Step 12:将此时的LFSR的16个单元s0,…,s15与FSM单元R1,R2值作为ZUC-256流密码算法密钥流生成开始前的状态St33。
在一个具体实例中,令密钥Ki=0xff,对于0≤i≤31;而初始向量IVi=0xff,对0≤i≤16及IVi=0x3f,对17≤i≤24,则完成初始化后生成的头20个密钥流字为
0x3356cbaed1a1c18b6baa4ffe343f777c9e15128f,
0x251ab65b949f7b26ef7157f296dd2fa9df95e3ee,
0x7a5be02ec32ba585505af316c2f9ded27cdbd935,
0xe441ce1115fd0a80bb7aef6768989416b8fac8c2
本发明另一实施例提供一种ZUC-256流密码算法的初始化装置,其包括:
装载模块,负责通过以下操作装载初始密钥、初始向量和常数:将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,且占据一个字节的低6比特;输入的常数D划分为16个7比特常数(d0,…,d15);设置1个含16个31比特单元s0,…,s15的线性移位寄存器(LFSR)和2个32比特记忆单元R1,R2的有限状态自动机(FSM),以(K31,K30,…,K0)、(IV24,IV23,…,IV0)和(d0,…,d14)为输入参数,按照规定的装载方式依次装载LFSR的每个寄存器单元,并将R1与R2清零;
迭代模块,负责以装载完成后的s0,…,s15和R1,R2作为初始状态St0,进行32轮带生成密钥流反馈的迭代和末轮不带生成密钥流反馈的初始化过程后,形成ZUC-256流密码算法的密钥流生成阶段的工作初始状态St33。
本发明另一实施例提供一种采用ZUC-256流密码算法的加密通信方法,包括以下步骤:
a)采用上面所述方法进行ZUC-256流密码算法的初始化;
b)加密端利用初始化后的ZUC-256流密码算法,生成与要加密的消息长度相等的密钥流序列,将密钥流序列与明文序列按位异或加密,形成待传输的消息密文。解密端接收到所述消息密文后,由初始密钥和初始向量生成同样的密钥流序列,与消息密文异或,得到消息明文。
以上对本发明方法进行了详细的说明,但显然本发明的具体实现形式并不局限于此。对于本技术领域的一般技术人员来说,在不背离本发明所述方法的精神和权利要求范围的情况下对它进行的各种显而易见的改变都在本发明的保护范围之内。
Claims (10)
1.一种ZUC-256流密码算法的初始化方法,其步骤包括:
1)将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,且占据一个字节的低6比特;输入的常数D划分为16个7比特常数(d0,…,d15);
2)设置1个含16个31比特单元s0,…,s15的线性移位寄存器LFSR和2个32比特记忆单元R1,R2的有限状态自动机FSM,以(K31,K30,…,K0)、(IV24,IV23,…,IV0)和(d0,…,d14)为输入参数,按照规定的装载方式依次装载LFSR的每个寄存器单元,并将R1与R2清零;
3)以装载完成后的s0,…,s15和R1,R2作为初始状态St0,进行32轮带生成密钥流反馈的迭代和末轮不带生成密钥流反馈的初始化过程后,形成ZUC-256流密码算法的密钥流生成阶段的工作初始状态St33。
2.如权利要求1所述的方法,其特征在于,所述规定的装载方式为对于LFSR每一寄存器单元si,将8比特密钥分块Ki、7比特常数分块di与初始向量IV分块按如下之方式装载:
s0=K0||d0||K21||K16,
s1=K1||d1||K22||K17,
s2=K2||d2||K23||K18,
s3=K3||d3||K24||K19,
s4=K4||d4||K25||K20,
s5=IV0||(d5|IV17)||K5||K26,
s6=IV1||(d6|IV18)||K6||K27,
s7=IV10||(d7|IV19)||K7||IV2,
s8=K8||(d8|IV20)||IV3||IV11,
s9=K9||(d9|IV21)||IV12||IV4,
s10=IV5||(d10|IV22)||K10||K28,
s11=K11||(d11|IV23)||IV6||IV13,
s12=K12||(d12|IV24)||IV7||IV14,
s13=K13||d13||IV15||IV8,
其中和分别表示K31字节的高4位和低4位,所述的“||”表示比特串的拼接操作,所述的“|”表示按位逻辑或运算。
3.如权利要求2所述的方法,其特征在于,所述的常数di(0≤i≤15)定义为:
d0=0100010,d1=0101111,d2=0100100,d3=0101010,
d4=1101101,d5=1000000,d6=1000000,d7=1000000,
d8=1000000,d9=1000000,d10=1000000,d11=1000000,
d12=1000000,d13=1010010,d14=0010000,d15=0110000。
4.如权利要求1至3中任一权利要求所述的方法,其特征在于,步骤3)的反馈迭代过程包括比特重组、反馈值计算、FSM更新、LFSR按初始化模式步进和LFSR按工作模式步进,其处理方法为:
1)前32轮反馈迭代步骤包括比特重组、反馈值计算、FSM更新和LFSR按初始化模式步进4个环节;
2)末轮反馈迭代步骤包括比特重组、FSM更新和LFSR按密钥流生成工作模式步进3个环节。
5.如权利要求4所述的方法,其特征在于:
1)所述比特重组环节作用于4组共8个31比特LFSR单元,(s15,s14),(s11,s9),(s7,s5),(s2,s0);输出为4个32比特字,具体为X0=s15H||s14L,X1=s11L||s9H,X2=s7L||s5H,X3=s2L||s0H;
2)所述反馈值计算环节作用于前述比特重组环节输出的1个32比特字与FSM的2个32比特单元,即X0,R1,R2,将X0与R1异或后的结果再模232加R2作为反馈值W;
3)所述的FSM更新环节作用于前述比特重组环节输出的2个32比特字与FSM的2个32比特单元,即X1,X2,R1,R2;首先计算R1模232加X1的值作为中间值W1,R2异或X2的值作为中间值W2,其次将(W1,W2)作为输入,经移位变换、拼接变换、线性变换、非线性变换后输出的2个32比特值作为R1,R2的更新值;
4)所述LFSR按初始化模式步进环节作用于16个31比特的LFSR单元和上述之反馈值,即W,s0,s1,…,s15,首先计算中间值v=215·s15+217·s13+221·s10+220·s4+(1+28)·s0,其次计算更新值s16=v+(W>>1),最后进行移位操作si=si+1,0≤i≤15;
5)所述LFSR密钥流生成工作模式步进环节作用于16个31比特的LFSR单元,即s0,s1,…,s15,首先计算更新值s16=215·s15+217·s13+221·s10+220·s4+(1+28)·s0,其次进行移位操作si=si+1,0≤i≤15。
6.如权利要求5所述的方法,其特征在于:
1)所述移位变换将输入的2个32比特中间值(W1,W2)看作4个16比特字串(W1H,W1L,W2H,W2L),经循环移位后变为(W1L,W2H,W2L,W1H);所述的拼接变换将移位变换后得到的(W1L,W2H,W2L,W1H),拼接为2个32比特字,即x1=W1L||W2H和x2=W2L||W1H;所述的线性变换将输入的2个32比特字x1和x2分别用MDS矩阵M1和M2作用,得到2个32比特的字y1=M1x1和y2=M2x2;所述的非线性变换将输入的两个32比特字y1和y2,分别看作2个4字节串(y10,y11,y12,y13)和(y20,y21,y22,y23),分别经过由4个8比特S盒(S0,S1,S0,S1)并置构成的S盒代替变换后,得到2个32比特字;
2)所述的模加为环上的加法;所述的“+”加运算与“.”乘运算法,均定义在素域上,且域使用以231-1表示0元素的代表字母表,即代表元为{1,2,…,231-1};所述的“>>1”运算为32比特字右移1位运算;所述的“||”表示比特串的连接运算,所述的下标H或L表示相应值的高16比特或低16比特。
7.如权利要求6所述的方法,其特征在于,所述两个MDS矩阵M1和M2作用为:
其中,“<<<”运算为32比特字的循环左移位运算,运算为相应操作数的对位比特异或运算。
8.一种ZUC-256流密码算法的初始化装置,其特征在于,包括:
装载模块,负责通过以下操作装载初始密钥、初始向量和常数:将输入的256比特的初始密钥K,划分为32个字节(K31,K30,…,K0),输入的184比特初始向量IV,划分为25个比特串(IV24,IV23,…,IV0),其中IV16,…,IV0各为1个字节,IV24,…,IV17各为6比特串,且占据一个字节的低6比特;输入的常数D划分为16个7比特常数(d0,…,d15);设置1个含16个31比特单元s0,…,s15的线性移位寄存器(LFSR)和2个32比特记忆单元R1,R2的有限状态自动机(FSM),以(K31,K30,…,K0)、(IV24,IV23,…,IV0)和(d0,…,d14)为输入参数,按照规定的装载方式依次装载LFSR的每个寄存器单元,并将R1与R2清零;
迭代模块,负责以装载完成后的s0,…,s15和R1,R2作为初始状态St0,进行32轮带生成密钥流反馈的迭代和末轮不带生成密钥流反馈的初始化过程后,形成ZUC-256流密码算法的密钥流生成阶段的工作初始状态St33。
9.一种采用ZUC-256流密码算法的加密通信方法,其特征在于,包括以下步骤:
a)采用权利要求1~8中任一权利要求所述方法进行ZUC-256流密码算法的初始化;
b)加密端利用初始化后的ZUC-256流密码算法,生成与要加密的消息长度相等的密钥流序列,将密钥流序列与明文序列按位异或加密,形成待传输的消息密文。
10.如权利要求9所述的方法,其特征在于,解密端接收到所述消息密文后,由初始密钥和初始向量生成同样的密钥流序列,与消息密文异或,得到消息明文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910276961.8A CN110011798A (zh) | 2019-04-08 | 2019-04-08 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910276961.8A CN110011798A (zh) | 2019-04-08 | 2019-04-08 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110011798A true CN110011798A (zh) | 2019-07-12 |
Family
ID=67170292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910276961.8A Pending CN110011798A (zh) | 2019-04-08 | 2019-04-08 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110011798A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795748A (zh) * | 2019-10-24 | 2020-02-14 | 清华大学无锡应用技术研究院 | 基于可重构计算阵列实现流密码算法的方法、系统及介质 |
CN112367155A (zh) * | 2020-10-13 | 2021-02-12 | 黑龙江大学 | 一种基于fpga的zuc加密系统ip核构建方法 |
CN112532377A (zh) * | 2020-12-08 | 2021-03-19 | 山东大学 | 一种Espresso流密码及其变体的硬件实现装置与方法 |
CN112865960A (zh) * | 2020-12-31 | 2021-05-28 | 广州万协通信息技术有限公司 | 基于流密码实现高速密钥链预计算的系统、方法及装置 |
WO2021201780A1 (en) * | 2020-03-31 | 2021-10-07 | Agency For Science, Technology And Research | Method and system for white-box implementation of a stream cipher |
CN114050900A (zh) * | 2022-01-13 | 2022-02-15 | 深圳市成为信息技术有限公司 | 一种车载终端的通信方法、车载终端、摄像终端 |
CN114553424A (zh) * | 2022-02-21 | 2022-05-27 | 南京航空航天大学 | Zuc-256流密码轻量级硬件系统 |
US11843689B2 (en) | 2021-08-06 | 2023-12-12 | Samsung Electronics Co., Ltd. | Methods and systems for reducing propagation delays in hardware implementation of ZUC cryptographic algorithms |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841415A (zh) * | 2009-12-29 | 2010-09-22 | 中国科学院软件研究所 | 一种面向字的密钥流生成方法及加密方法 |
CN103813313A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种祖冲之算法的硬件实现装置及方法 |
CN104852795A (zh) * | 2015-05-05 | 2015-08-19 | 国家密码管理局商用密码检测中心 | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 |
CN105916141A (zh) * | 2016-07-12 | 2016-08-31 | 黑龙江大学 | 一种自同步的祖冲之加解密算法的实现系统及其方法 |
-
2019
- 2019-04-08 CN CN201910276961.8A patent/CN110011798A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841415A (zh) * | 2009-12-29 | 2010-09-22 | 中国科学院软件研究所 | 一种面向字的密钥流生成方法及加密方法 |
CN103813313A (zh) * | 2012-11-07 | 2014-05-21 | 中国科学院微电子研究所 | 一种祖冲之算法的硬件实现装置及方法 |
CN104852795A (zh) * | 2015-05-05 | 2015-08-19 | 国家密码管理局商用密码检测中心 | 一种轮输出为布尔掩码的zuc序列密码算法掩码防护方法 |
CN105916141A (zh) * | 2016-07-12 | 2016-08-31 | 黑龙江大学 | 一种自同步的祖冲之加解密算法的实现系统及其方法 |
Non-Patent Citations (3)
Title |
---|
ZUC算法研制组: "ZUC-256流密码算法", 《密码学报》 * |
冯秀涛: "祖冲之序列密码算法", 《信息安全研究》 * |
江丽娜等: "祖冲之序列密码算法IP核的设计与实现", 《第27次全国计算机安全学术交流会论文集》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795748A (zh) * | 2019-10-24 | 2020-02-14 | 清华大学无锡应用技术研究院 | 基于可重构计算阵列实现流密码算法的方法、系统及介质 |
CN110795748B (zh) * | 2019-10-24 | 2021-12-14 | 清华大学无锡应用技术研究院 | 基于可重构计算阵列实现流密码算法的方法、系统及介质 |
WO2021201780A1 (en) * | 2020-03-31 | 2021-10-07 | Agency For Science, Technology And Research | Method and system for white-box implementation of a stream cipher |
CN112367155A (zh) * | 2020-10-13 | 2021-02-12 | 黑龙江大学 | 一种基于fpga的zuc加密系统ip核构建方法 |
CN112367155B (zh) * | 2020-10-13 | 2022-06-07 | 黑龙江大学 | 一种基于fpga的zuc加密系统ip核构建方法 |
CN112532377A (zh) * | 2020-12-08 | 2021-03-19 | 山东大学 | 一种Espresso流密码及其变体的硬件实现装置与方法 |
CN112865960A (zh) * | 2020-12-31 | 2021-05-28 | 广州万协通信息技术有限公司 | 基于流密码实现高速密钥链预计算的系统、方法及装置 |
CN112865960B (zh) * | 2020-12-31 | 2022-09-09 | 广州万协通信息技术有限公司 | 基于流密码实现高速密钥链预计算的系统、方法及装置 |
US11843689B2 (en) | 2021-08-06 | 2023-12-12 | Samsung Electronics Co., Ltd. | Methods and systems for reducing propagation delays in hardware implementation of ZUC cryptographic algorithms |
CN114050900A (zh) * | 2022-01-13 | 2022-02-15 | 深圳市成为信息技术有限公司 | 一种车载终端的通信方法、车载终端、摄像终端 |
CN114553424A (zh) * | 2022-02-21 | 2022-05-27 | 南京航空航天大学 | Zuc-256流密码轻量级硬件系统 |
CN114553424B (zh) * | 2022-02-21 | 2024-03-15 | 南京航空航天大学 | Zuc-256流密码轻量级硬件系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110011798A (zh) | 一种zuc-256流密码算法的初始化方法和装置及通信方法 | |
CN106788974B (zh) | 掩码s盒、分组密钥计算单元、装置及对应的构造方法 | |
CN112398639B (zh) | 一种Fountain轻量级加密算法的实现装置、方法及应用 | |
CN111431697B (zh) | 一种新型轻量级分组密码corl的实现方法 | |
CN104184579A (zh) | 基于双伪随机变换的轻量级分组密码vh算法 | |
Liu et al. | STP models of optimal differential and linear trail for S-box based ciphers | |
CN105790930A (zh) | 用于移动终端的信息加密方法、信息加密装置和移动终端 | |
CN110795762A (zh) | 基于流密码的保留格式加密方法 | |
CN101848081A (zh) | 一种s盒构造方法及s盒 | |
CN101841415A (zh) | 一种面向字的密钥流生成方法及加密方法 | |
CN101826959B (zh) | 一种面向字节的密钥流生成方法及加密方法 | |
CN108449171A (zh) | 一种轻量级杂凑密码摘要生成方法 | |
CN103780794A (zh) | 一种基于混沌系统的图像加密改进方法 | |
CN111614457B (zh) | 基于p置换改进的轻量级分组加解密方法、装置及存储介质 | |
CN112564890B (zh) | 一种加速sm4算法的方法、装置、处理器及电子设备 | |
CN104320420A (zh) | 一种基于aes算法的scada文件加密方法 | |
CN101848078A (zh) | 一种密钥流序列扰动方法及加密方法 | |
CN108650072A (zh) | 一种支持多种对称密码算法芯片及其抗攻击电路实现方法 | |
CN109936437B (zh) | 一种基于d+1阶掩码的抗功耗攻击方法 | |
CN116707877A (zh) | 一种基于改进型aes算法的数据加密方法及系统 | |
CN101848079B (zh) | 一种面向字、带记忆的序列扰动方法及加密方法 | |
CN112737767B (zh) | 抗差分功耗分析与时间攻击的消息认证码生成方法及系统 | |
CN105391546A (zh) | 基于双伪随机变换和Feistel结构的轻量级分组密码技术VHF | |
CN105162580A (zh) | 基于ofb模式和分组密码vh的轻量级流密码技术vho | |
CN105577362B (zh) | 一种应用于aes算法的字节替换方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190712 |