1、(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不接收任何输入。其计算过程如下:LFSRWithWorkMode()(1) s16 = 215 s15 +217 s13 + 221 s10 + 220 s4 + (1 + 28)s0 mod (231-1);(2) 如果s16
2、=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;(4) X3 = s2Ls0H。4.4 非线性函数FF包含2个32比特记忆单元变量R1和R2。F的输入为3个32比特字X0、X1、X2,输出为一个32比特字W。F的计算过程如下:F (X0, X1, X2)
3、(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) (X 22) (X 1)。4.6.2 工作阶段首先执行下列过程一次,并将F的输出W舍弃:(2) F (X0, X1, X2);(3) LFSRWithWorkMode()。然后进入密钥输出阶段。在密钥输出阶
4、段,每运行一个节拍,执行下列过程一次,并输出一个32比特的密钥字Z:(1) BitReconstruction() ;(2) Z = F (X0, X1, X2) X3;附录A(规范性附录)S盒32比特S盒S由4个小的88的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 =
5、y0 y1 y2 y3,其中xi和yi均为8比特字节,i = 0, 1, 2, 3。则有yi = Si(xi), i = 0, 1, 2, 3。表1 S0盒123456789ABCDEF3E725B47CAE0003304D1549809B96DCB7B1BF932AF9D6AA5B82DFC1D085303904D4E8499E4CED991DDB685488B296EACCDC1F81E734369C6B5BDFD396320D438767DB2A7CFED57C5F32CBB142106559BE3EF5E314F7F5AA40D8251495FBA581C4A16D517A892241
6、F8CFFD8AE2E01D3AD3B4BDA46EBC9DE9A8F87D73A806F2FC8B1B437F70A2213287CCC3C89C7C3965607BF7EF00B2B975235417961A64C10FEBC2695888AB0A3FBC01894F2E1E5E95DD0DC1166645CEC59427512F5749CAA230E86ABBE2A02E767E644A26CC2939FF1F6FA36D250689E6271153DD640C4E20F8E83776B25053F0C30EA70B7A1E8A9658D271ADB81B3A0F4457A19DFEE7
7、83460表2 S1盒注:S0盒和S1盒数据均为十六进制表示。附录B(资料性附录)模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) = (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
8、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+i0044d7000026bc0000626b0000135e00005789000035e200007135000009af00004d7800 002f1300006bc400001af100005e2600003c4d0000789a000047ac00tX0X1X2X3R1R2WS15
9、008f9a00f100005eaf00006b6b0000896782214162a3a55f4563cb1b8ac7ac00260000d7780000e25e00004d474a2e7e119e94bb4fe932a028652a0f50cacb1b4d00003513000013890000c4c29687a5e9b6eb51291f7a207464f744e8c92a0f9a0000bcc400009ae200002629c272f38cac7f5d141698fb3f5644ba7eacf744ac000078350000af2c85a65524259cb0e41b0514006a
10、144c00d444bacb1b00f1cbfbc5c044c10b3a50777f9f07038b9b0e07144c2a0f008fe083c8d37abf76790abddcc669b90e2bd3728b9bf7448ac7147e14f4b669e72daeb0b9c162a913eac5520e2b44ba50ca982834a0f095d6948796020c7b591cc0f6b213ea144ce8c9e14727d6d02258695f2ffdde70e21147 初始化后线性反馈移位寄存器状态:7ce15b8b 747ca0c46259dd0b47a94c2b3a89c8
11、2e32b433fc231ea13f31711e424ccce955 3fb6071e161d35127114b1365154d45278c69a744f26ba6b3e1b8d6a有限状态机内部状态:R1 = 14cfd44c R2 = 8c6de800密钥流:z7c37ba6b b1367f6c1e426568dd0bf9c23512bf50a0920453286dafe57f08e141fe118d6a d4522c3ae955463d4c2be8f9c7ee7f130c0fa81727bede743d383d047a70e141 9a74e229071e62e2c82ec4b3dde6
12、3da7b9dd6a41018082da13d6d780C.2 测试向量 2(全1) ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0657cfa0 7096398b7fc4d7ff7fa6bcff7fe26bff7f935eff7fd789ff7fb5e2ff7ff135ff7f89afff7fcd78ff7faf13ff7febc4ff7f9af1ff7fde26ff7fbc4dff7ff89aff7fc7acffff8f9afff1ffff5eafffff6b6bffff89b51c211030a3629aff8f9aff 76e49a1
13、aedc9acff26ffffd778ffffe25effff4da75b6f4b1a0796288978f089 5e2d8983bc5b9a1a4dffff3513ffff1389ffffc49810b3159929673535088b795b9484b8b72989839affffbcc4ffff9ae2ffff264c5bd8eb2d577790c862a1cb2db5c7555b6b84b8acffff7835ffffafa13dcb6621d0939f4487d3e360579232c0afc7559a1afff1cc5ce2600c50a8e283629fd229d4e96053
14、a992328983ff8fdada0730b516b128ac4619345e02d9e5bc05e96084b8edc92bbe53a412a8a16e1bf69f787904dddcf209d9e5c755bc5b4a90d661d9c744b4ec602baf0c3c90161879dddc9232b72976bc13d7a49ea4042cb050710b9d257b09a339ad1291d1902555422736c091870697773b443cf9cd6a4cd89949e34bd056130b1420e8f24c7a5b1dcc0c3cc2d11cc082c87f5904a255b61ce81fe46106R1 = b8017bd5 R2 = 9ce2de5c3fc81ce8c2d141d14bd0887942271346aa131b1109d7706c668b56df13f56dbf27ea610682c8f4b60b14d499918