跳到主要内容

GB/T 33133.1-2016 信息安全技术 祖冲之序列密码算法 第 1 部分:算法描述

返回主题目录 · 官方来源

来源:GB/T 33133.1-2016 国家标准详情;封面发布日期:2016-10-13;实施日期:2017-05-01。 官方 PDF SHA-256:8fc9bbfb192bcc8a856a30c913fc947eda9fe04e06cb3ae38f7844fbffe14cbc。 转写说明:对照官方 PDF 全部 17 页的页面图像校正文字、公式、图示、两张 S 盒表及附录 C 的三组测试向量;省略封面、目录、页眉、页脚和页码,合并跨页内容。正式引用请核对原 PDF。

前言​

GB/T 33133《信息安全技术 祖冲之序列密码算法》分为以下 3 部分:

  • 第 1 部分:算法描述;
  • 第 2 部分:保密性算法;
  • 第 3 部分:完整性算法。

本部分为 GB/T 33133 的第 1 部分。

本部分按照 GB/T 1.1—2009 给出的规则起草。

本部分由国家密码管理局提出。

本部分由全国信息安全标准化技术委员会(SAC/TC 260)归口。

本部分起草单位:北京信息科学技术研究院、中国科学院软件研究所、中国科学院数据与通信保护研究教育中心、北京创原天地科技有限公司。

本部分主要起草人:冯登国、林东岱、冯秀涛、周春芳、刘辛越。

引言​

本部分的目标是保证祖冲之序列密码算法使用的正确性,为国内企业正确研发使用祖冲之算法的相关设备提供指导。

本部分修改采用如下国际标准:

  • ETSI/SAGE TS 35.221. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 1: 128-EEA3 and 128-EIA3 Specification.
  • ETSI/SAGE TS 35.222. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 2: ZUC Specification.
  • ETSI/SAGE TS 35.223. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 3: Implementor's Test Data.
  • ETSI/SAGE TR 35.924. Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. Document 4: Design and Evaluation Report.

本文件的发布机构请注意,声明符合本文件时,可能涉及《一种序列密码实现方法和装置》(专利号:ZL200910086409.9)和《一种完整性认证方法》(专利号:ZL200910243440.9)相关专利的使用。

本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。

该专利的持有人已向本文件的发布机构保证,他愿意同任何申请人在合理且无歧视的条款和条件下,就该专利授权许可进行谈判。该专利的持有人已在本文件的发布机构备案。相关信息可以通过以下联系方式获得:

专利持有人姓名:中国科学院数据与通信保护研究教育中心、中国科学院软件研究所

地址:北京市海淀区闵庄路甲 89 号,邮编:100093;北京市中关村南四街 4 号,邮编:100190

请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。

1 范围​

GB/T 33133 的本部分给出了祖冲之序列密码算法的一般结构,基于该结构可实现本标准其他各部分所规定的密码机制。

本部分适用于祖冲之序列密码算法相关产品的研制、检测和使用,可应用于涉及非国家秘密范畴的商业应用领域。

2 规范性引用文件​

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

  • GB/T 25069—2010 信息安全技术 术语

3 术语和定义​

GB/T 25069—2010 界定的以及下列术语和定义适用于本文件。

3.1 祖冲之序列密码算法 ZUC Stream Cipher​

祖冲之序列密码算法是中国自主研制的流密码算法,是运用于下一代移动通信 4G 网络中的国际标准密码算法,该算法包括祖冲之算法、保密性算法和完整性算法三个部分。

3.2 位 bit​

二进制数字(binary digit)。

二进制计数制中使用的数字 0 或 1。

3.3 字节 byte​

一种由若干位组成的串,视作一个单位,通常代表一个字符或字符的一部分。

注 1:对一个给定的数据处理系统,一个字节中的位数是固定的。 注 2:一个字节通常是 8 位。

3.4 字 word​

由 2 个以上(包含 2 个)比特组成的比特串。

本部分主要使用 31 比特字和 32 比特字。

3.5 字表示 word representation​

本部分字默认采用十进制表示。当字采用其他进制表示时,总是在字的表示之前或之后添加指示符。例如,前缀 0x 指示该字采用十六进制表示,后缀下角标 2 指示该字采用二进制表示。

3.6 高低位顺序 bit ordering​

本部分规定字的最高位总是位于字表示中的最左边,最低位总是位于字表示中的最右边。

4 符号和缩略语​

4.1 运算符​

下列运算符适用于本文件:

  • +:算术加法运算。
  • ab:整数 a 和 b 的乘积。
  • =:赋值操作符。
  • mod:整数模运算。
  • ⊕:按比特位逐位异或运算。
  • ⊞:模 2^32 加法运算。
  • ∥:字符串或字节串连接符。
  • ·_H:取字的最高 16 比特。
  • ·_L:取字的最低 16 比特。
  • <<< k:32 比特字循环左移 k 位。
  • >> k:32 比特字右移 k 位。
  • a → b:向量 a 赋值给向量 b,即按分量逐分量赋值。

4.2 符号​

下列符号适用于本文件:

  • s₀, s₁, s₂, …, s₁₅:线性反馈移位寄存器的 16 个 31 比特寄存器单元变量。
  • X₀, X₁, X₂, X₃:比特重组输出的 4 个 32 比特字。
  • R₁, R₂:非线性函数 F 的 2 个 32 比特记忆单元变量。
  • W:非线性函数 F 输出的 32 比特字。
  • W₁:R₁ 与 X₁ 进行模 2^32 加法运算输出的 32 比特字。
  • W₂:R₂ 与 X₂ 按比特位逐位异或运算输出的 32 比特字。
  • Z:算法每拍输出的 32 比特密钥字。
  • k:初始种子密钥。
  • iv:初始向量。
  • dᵢ:15 比特的字符串常量,i = 0, 1, 2, …, 15。
  • F:非线性函数。
  • L:输出密钥字长度。

4.3 缩略语​

下列缩略语适用于本文件:

  • LFSR:线性反馈移位寄存器(Linear Feedback Shift Register)。
  • BR:比特重组(Bit Reorganization)。

5 算法流程​

5.1 算法结构​

祖冲之算法由线性反馈移位寄存器(LFSR)、比特重组(BR)和非线性函数 F 组成,见图 1。

图 1 祖冲之算法结构图

5.2 线性反馈移位寄存器 LFSR​

5.2.1 概述​

LFSR 包括 16 个 31 比特寄存器单元变量 s₀, s₁, …, s₁₅。

LFSR 的运行模式有 2 种:初始化模式和工作模式。

5.2.2 初始化模式​

LFSR 接收 1 个 31 比特字 u 的输入,对寄存器单元变量 s₀, s₁, …, s₁₅ 进行更新,计算过程如下:

LFSRWithInitialisationMode(u)
v = (2^15 s15 + 2^17 s13 + 2^21 s10 + 2^20 s4 + (1 + 2^8) s0) mod (2^31 - 1)
s16 = (v + u) mod (2^31 - 1)
如果 s16 = 0,则置 s16 = 2^31 - 1
(s1, s2, …, s15, s16) → (s0, s1, …, s14, s15)

模 2^31 - 1 乘法和模 2^31 - 1 加法的实现参见附录 B。

5.2.3 工作模式​

LFSR 无输入,直接对寄存器单元变量 s₀, s₁, …, s₁₅ 进行更新,计算过程如下:

LFSRWithWorkMode()
s16 = (2^15 s15 + 2^17 s13 + 2^21 s10 + 2^20 s4 + (1 + 2^8) s0) mod (2^31 - 1)
如果 s16 = 0,则置 s16 = 2^31 - 1
(s1, s2, …, s15, s16) → (s0, s1, …, s14, s15)

5.3 比特重组 BR​

输入为 LFSR 寄存器单元变量 s₀, s₂, s₅, s₇, s₉, s₁₁, s₁₄, s₁₅,输出为 4 个 32 比特字 X₀, X₁, X₂, X₃。计算过程如下:

BitReconstruction()
X0 = s15H ∥ s14L
X1 = s11L ∥ s9H
X2 = s7L ∥ s5H
X3 = s2L ∥ s0H

5.4 非线性函数 F​

F 包含 2 个 32 比特记忆单元变量 R₁ 和 R₂。

F 的输入为 3 个 32 比特字 X₀, X₁, X₂,输出为一个 32 比特字 W。计算过程如下:

F(X0, X1, X2)
W = (X0 ⊕ R1) ⊞ R2
W1 = R1 ⊞ X1
W2 = R2 ⊕ X2
R1 = S[L1(W1L ∥ W2H)]
R2 = S[L2(W2L ∥ W1H)]

其中 S 为 32 比特的 S 盒变换,S 盒定义见附录 A;L₁ 和 L₂ 为 32 比特线性变换,定义如下:

  • L₁(X) = X ⊕ (X <<< 2) ⊕ (X <<< 10) ⊕ (X <<< 18) ⊕ (X <<< 24);
  • L₂(X) = X ⊕ (X <<< 8) ⊕ (X <<< 14) ⊕ (X <<< 22) ⊕ (X <<< 30)。

5.5 密钥装入​

将初始密钥 k 和初始向量 iv 分别扩展为 16 个 31 比特字作为 LFSR 寄存器单元变量 s₀, s₁, …, s₁₅ 的初始状态。步骤如下:

a) 设 k 和 iv 分别为 k₀ ∥ k₁ ∥ … ∥ k₁₅ 和 iv₀ ∥ iv₁ ∥ … ∥ iv₁₅,其中 kᵢ 和 ivᵢ 均为 8 比特字节,0 ≤ i ≤ 15。

b) 对 0 ≤ i ≤ 15,有 sᵢ = kᵢ ∥ dᵢ ∥ ivᵢ。这里 dᵢ 为 15 比特的常量,定义如下:

idᵢ(二进制)dᵢ(十六进制)
010001001101011144D7
101001101011110026BC
2110001001101011626B
3001001101011110135E
41010111100010015789
501101011110001035E2
61110001001101017135
700010011010111109AF
81001101011110004D78
90101111000100112F13
101101011110001006BC4
110011010111100011AF1
121011110001001105E26
130111100010011013C4D
14111100010011010789A
1510001111010110047AC

5.6 算法运行​

5.6.1 概述​

祖冲之算法的输入参数为初始密钥 k、初始向量 iv 和正整数 L,输出参数为 L 个密钥字 Z。算法运行过程包含初始化步骤和工作步骤。

5.6.2 初始化步骤​

a) 按照 5.5 将初始密钥 k 和初始向量 iv 装入到 LFSR 的寄存器单元变量 s₀, s₁, …, s₁₅ 中,作为 LFSR 的初态。

b) 令 32 比特记忆单元变量 R₁ 和 R₂ 为 0。

c) 重复执行下述过程 32 次:

  1. BitReconstruction();
  2. W = F(X₀, X₁, X₂);
  3. 输出 32 比特字 W;
  4. LFSRWithInitialisationMode(W >> 1)。

5.6.3 工作步骤​

a) 执行下述过程:

  1. BitReconstruction();
  2. F(X₀, X₁, X₂);
  3. LFSRWithWorkMode()。

b) 重复计算 L 次下述过程:

  1. BitReconstruction();
  2. Z = F(X₀, X₁, X₂) ⊕ X₃;
  3. 输出 32 比特密钥字 Z;
  4. LFSRWithWorkMode()。

算法计算实例参见附录 C。

附录 A(规范性附录)S 盒​

32 比特 S 盒 S 由 4 个小的 8×8 的 S 盒并置而成,即 S = (S₀, S₁, S₂, S₃),其中 S₀ = S₂,S₁ = S₃。S₀ 和 S₁ 的定义分别见表 A.1 和表 A.2。设 S₀(或 S₁)的 8 比特输入为 x。将 x 视作两个 16 进制数的连接,即 x = h ∥ l,则表 A.1(或表 A.2)中第 h 行和第 l 列交叉的元素即为 S₀(或 S₁)的输出 S₀(x)〔或 S₁(x)〕。

设 S 盒 S 的 32 比特输入 X 和 32 比特输出 Y 分别为:

X = x0 ∥ x1 ∥ x2 ∥ x3
Y = y0 ∥ y1 ∥ y2 ∥ y3

其中,xᵢ 和 yᵢ 均为 8 比特字节,i = 0, 1, 2, 3。则有 yᵢ = Sᵢ(xᵢ),i = 0, 1, 2, 3。

表 A.1 S₀ 盒:每行左侧为高 4 位,行内从左到右对应低 4 位 0 至 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

表 A.2 S₁ 盒:每行左侧为高 4 位,行内从左到右对应低 4 位 0 至 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₀ 盒和 S₁ 盒数据均为十六进制表示。

附录 B(资料性附录)模 2^31 - 1 乘法和模 2^31 - 1 加法的实现​

B.1 模 2^31 - 1 乘法​

两个 31 比特字模 2^31 - 1 乘法可以快速实现。特别地,当其中一个字具有较低的汉明重量时,可以通过 31 比特的循环移位运算和模 2^31 - 1 加法运算实现。例如,计算 ab mod (2^31 - 1),其中 b = 2^i + 2^j + 2^k。则

ab mod (2^31 - 1) = ((a <<<₃₁ i) + (a <<<₃₁ j) + (a <<<₃₁ k)) mod (2^31 - 1)。(B.1)

式中:<<<₃₁ 表示 31 比特左循环移位运算。

B.2 模 2^31 - 1 加法​

在 32 位处理平台上,两个 31 比特字 a 和 b 模 2^31 - 1 加法运算 c = a + b mod (2^31 - 1) 可以通过下面的两步计算实现:

a) c = a + b;

b) c = (c & 0x7FFFFFFF) + (c >> 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。

输出:z₁ = 27bede74,z₂ = 018082da。

初始化时线性反馈移位寄存器初态:

iS₀₊ᵢS₁₊ᵢS₂₊ᵢS₃₊ᵢS₄₊ᵢS₅₊ᵢS₆₊ᵢS₇₊ᵢ
00044d7000026bc0000626b0000135e00005789000035e200007135000009af00
8004d7800002f1300006bc400001af100005e2600003c4d0000789a000047ac00

初始化过程中的状态:

tX₀X₁X₂X₃R₁R₂WS₁₅
0008f9a00f100005eaf00006b6b0000896782214162a3a55f008f9a004563cb1b
18ac7ac00260000d7780000e25e00004d474a2e7e119e94bb4fe932a028652a0f
250cacb1b4d00003513000013890000c4c29687a5e9b6eb51291f7a207464f744
3e8c92a0f9a0000bcc400009ae200002629c272f38cac7f5d141698fb3f5644ba
47eacf744ac000078f100005e350000af2c85a65524259cb0e41b0514006a144c
500d444bacb1b00f1260000d7af00006bcbfbc5c044c10b3a50777f9f07038b9b
60e07144c2a0f008f4d000035780000e2e083c8d37abf76790abddcc669b90e2b
7d3728b9bf7448ac79a0000bc13000013147e14f4b669e72daeb0b9c162a913ea
8c5520e2b44ba50caac000078c400009a982834a0f095d6948796020c7b591cc0
9f6b213ea144ce8c9cb1b00f1f100005ee14727d6d02258695f2ffdde70e21147

初始化后线性反馈移位寄存器状态:

iS₀₊ᵢS₁₊ᵢS₂₊ᵢS₃₊ᵢS₄₊ᵢS₅₊ᵢS₆₊ᵢS₇₊ᵢ
07ce15b8b747ca0c46259dd0b47a94c2b3a89c82e32b433fc231ea13f31711e42
84ccce9553fb6071e161d35127114b1365154d45278c69a744f26ba6b3e1b8d6a

有限状态机内部状态:R₁ = 14cfd44c,R₂ = 8c6de800。

密钥流:

tX₀X₁X₂X₃R₁R₂zS₁₅
07c37ba6bb1367f6c1e426568dd0bf9c23512bf50a0920453286dafe57f08e141
1fe118d6ad4522c3ae955463d4c2be8f9c7ee7f130c0fa81727bede743d383d04
27a70e1419a74e229071e62e2c82ec4b3dde63da7b9dd6a41018082da13d6d780

C.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。

输出:z₁ = 0657cfa0,z₂ = 7096398b。

初始化时线性反馈移位寄存器初态:

iS₀₊ᵢS₁₊ᵢS₂₊ᵢS₃₊ᵢS₄₊ᵢS₅₊ᵢS₆₊ᵢS₇₊ᵢ
07fc4d7ff7fa6bcff7fe26bff7f935eff7fd789ff7fb5e2ff7ff135ff7f89afff
87fcd78ff7faf13ff7febc4ff7f9af1ff7fde26ff7fbc4dff7ff89aff7fc7acff

初始化过程中的状态:

tX₀X₁X₂X₃R₁R₂WS₁₅
0ff8f9afff1ffff5eafffff6b6bffff89b51c211030a3629aff8f9aff76e49a1a
1edc9acff26ffffd778ffffe25effff4da75b6f4b1a0796288978f0895e2d8983
2bc5b9a1a4dffff3513ffff1389ffffc49810b3159929673535088b795b9484b8
3b72989839affffbcc4ffff9ae2ffff264c5bd8eb2d577790c862a1cb2db5c755
45b6b84b8acffff78f1ffff5e35ffffafa13dcb6621d0939f4487d3e360579232
5c0afc7559a1afff126ffffd7afffff6bcc5ce2600c50a8e283629fd229d4e960
653a992328983ff8f4dffff3578ffffe2dada0730b516b128ac4619345e02d9e5
7bc05e96084b8edc99affffbc13ffff132bbe53a412a8a16e1bf69f787904dddc
8f209d9e5c755bc5bacffff78c4ffff9a4a90d661d9c744b4ec602baf0c3c9016
91879dddc9232b7299a1afff1f1ffff5e76bc13d7a49ea4042cb050710b9d257b

初始化后线性反馈移位寄存器状态:

iS₀₊ᵢS₁₊ᵢS₂₊ᵢS₃₊ᵢS₄₊ᵢS₅₊ᵢS₆₊ᵢS₇₊ᵢ
009a339ad1291d1902555422736c091870697773b443cf9cd6a4cd89949e34bd0
856130b1420e8f24c7a5b1dcc0c3cc2d11cc082c87f5904a255b61ce81fe46106

有限状态机内部状态:R₁ = b8017bd5,R₂ = 9ce2de5c。

密钥流:

tX₀X₁X₂X₃R₁R₂zS₁₅
03fc81ce8c2d141d14bd0887942271346aa131b1109d7706c668b56df13f56dbf
127ea610682c8f4b60b14d49991872523251e7804caac5d660657cfa00c0fe353
2181f6dbf04a21879f24c93c6773b4aaad94e922891d88fba7096398b10f1eecf

C.3 测试向量 3(随机)​

输入:密钥 k = 3d 4c 4b e9 6a 82 fd ae b5 8f 64 1d b1 7b 45 5b;初始向量 iv = 84 31 9a a8 de 69 15 ca 1f 6b da 6b fb d8 c7 66。

输出:z₁ = 14f1c272,z₂ = 3279c419。

初始化时线性反馈移位寄存器初态:

iS₀₊ᵢS₁₊ᵢS₂₊ᵢS₃₊ᵢS₄₊ᵢS₅₊ᵢS₆₊ᵢS₇₊ᵢ
01ec4d7842626bc3125e26b9a74935ea8355789de4135e2697ef135155709afca
85acd781f47af136b326bc4da0e9af16b58de26fb3dbc4dd822f89ac72dc7ac66

初始化过程中的状态:

tX₀X₁X₂X₃R₁R₂WS₁₅
05b8f9ac7f16b8f5eafca826b6b9a3d899c62829f5df008315b8f9ac73c7b93c0
178f7ac6626fb64d7781ffde25ea84c4d3d533f3a80ff1faf4285372a41901ee9
2832093c04dd81d35136bae1389de4bc42ca57e9dd1db72f93f72cca9411efa99
3823d1ee99ac7b1bcc4dab59ae269e9260e8dc40f60921a4f8073d36d24b3f49f
44967fa99ac667b78f16b8f5e35156aaf16c81467da8e7d8aa87c58e574265785
5e84cf49f93c045f126fb64d7afca826b50c9eaa43c3b2dfdd9135e82481c5b9d
6903857851ee95b8f4dd81d35781ffde259857b80be0fbdc1fd2ceb1e4b7f87ed
796ff5b9dfa9978f79ac7b1bc136bae139528f8eabcc7f7eb8d89ddde0e633ce7
81cc687edf49f8320ac667b78c4dab59ac59d2932e1098a6446b676f2643ae5a6
9c8753ce75785823d93c045f1f16b8f5e755ebae83f9e6e86eef1a039625ac5d7

初始化后线性反馈移位寄存器状态:

| i | S₀₊ᵢ | S₁₊ᵢ | S₂₊ᵢ | S₃₊ᵢ | S₄₊ᵢ | S₅₊ᵢ | S₆₊ᵢ | S₇₊ᵢ | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 0 | 10da5941 | 5b6acbf6 | 17060ce1 | 35368174 | 5cf4385a | 479943df | 2753bab2 | 73775d6a | | 8 | 43930a37 | 77b4af31 | 15b2e89f | 24ff6e20 | 740c40b9 | 026a5503 | 194b2a57 | 7a9a1cff |

有限状态机内部状态:R₁ = 860a7dfa,R₂ = bf0e0ffc。

密钥流:

tX₀X₁X₂X₃R₁R₂zS₁₅
0f5342a576e20ef695d6a8f320ce121b4129d8b392d7cdce13ead461d3d4aa9e7
17a951cff40b92b650a374ea78174b6d5ab7cf688c1598aa614f1c27271db1828
2e3b6a9e7550349feaf31e6ee385a2e0c3cec1a4a9053cc0e3279c419258937da

注:上述祖冲之算法计算实例中数据全部采用十六进制表示。

参考文献​

[1] ETSI/SAGE TS 35.221. Specification of the 3GPP Confidentiality and Integrity 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 Integrity Algorithms 128-EEA3 & 128-EIA3. Document 3: Implementor's 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.