ETSI/SAGE 
Specification 
Version:  1.4 
Date: 30th July 2010 
Specification of the 3GPP Confidentiality and 
Integrity Algorithms 128-EEA3 & 128-EIA3. 
Document 2: ZUC Specification 
 
 
 
 
 
 
 
 
 
 
 
 
      The ZUC algorithm is the core of the standardised 3GPP 
Confidentiality and Integrity algorithms 128-EEA3 & 128-EIA3. 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 1 of 18 
18-06-2010 
26-07-2010 
27-07-2010 
30-07-2010 
Document History 
Publication 
Improvements to C code 
Minor corrections to C code 
Corrected preface 
 
 
1.0 
1.2 
1.3 
1.4 
  
 
 
 
 
 
 
 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 2 of 18 
 
 
 
 
 
 
 
 
 
 
 
 
 
Blank Page 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 3 of 18 
PREFACE 
This specification has been prepared by the 3GPP Task Force, and gives a detailed 
specification of the 3GPP algorithm ZUC. ZUC is a stream cipher that forms the heart of the 
3GPP confidentiality algorithm 128-EEA3 and the 3GPP integrity algorithm 128-EIA3. This 
document is the second of three, which between them form the entire specification of the 
3GPP Confidentiality and Integrity Algorithms: 
 
•  Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 
128-EIA3. 
Document 1: 128-EEA3 and 128-EIA3 Specifications. 
•  Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 
128-EIA3. 
Document 2: ZUC Specification. 
•  Specification of the 3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 
128-EIA3. 
Document 3: Implementors’ Test Data. 
The normative part of the specification of ZUC is in the main body of this document. Annex 
A, which is purely informative, contains an implementation program listing of the 
cryptographic algorithm specified in the main body of this document, written in the 
programming language C. 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 4 of 18 
TABLE OF CONTENTS 
1 
Introduction ........................................................................................................................7 
2  Notations and conventions..................................................................................................7 
2.1  Radix...........................................................................................................................7 
2.2  Bit ordering.................................................................................................................7 
2.3  Notations.....................................................................................................................7 
3  Algorithm description.........................................................................................................9 
3.1  General structure of the algorithm ..............................................................................9 
3.2  The linear feedback shift register (LFSR) ..................................................................9 
3.3  The Bit-reorganization..............................................................................................10 
3.4  The nonlinear function F ..........................................................................................10 
3.5  Key loading...............................................................................................................13 
3.6  The execution of ZUC ..............................................................................................14 
Appendix A: A C implementation of ZUC ..............................................................................15 
 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 5 of 18 
 
NORMATIVE SECTION 
This part of the document contains the normative specification of the ZUC algorithm. 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 6 of 18 
1  Introduction 
ZUC is a word-oriented stream cipher. It takes a 128-bit initial key and a 128-bit initial vector 
as input, and outputs a key stream of 32-bit words (where each 32-bit word is hence called a 
key-word). This key stream can be used to encrypt the plaintext.  
The execution of ZUC has two stages: key initialization stage and working stage. In the first 
stage, a key initialization is performed, i.e. the cipher is clocked without producing output 
(see section 3.6.1). The second stage is a working stage. In this stage, with every clock tick, it 
produces a 32-bit word of output(see section 3.6.2).  
2  Notations and conventions 
2.1  Radix 
In this document, integers are represented as decimal numbers unless specified otherwise. We 
use the prefix “0x” to indicate hexadecimal numbers, and the subscript “2” to indicate a 
number in binary representation.  
Example  1 
Integer a can be written in different representations:  
a = 1234567890                                                  decimal representation 
= 0x499602D2                                                hexadecimal representation 
= 10010011001011000000010110100102      binary representation 
2.2  Bit ordering 
In this document, all data variables are presented with the most significant bit(byte) on the left 
hand side and the least significant bit(byte) on the right hand side.  
Example  2  Let a=10010011001011000000010110100102. Then its most significant bit is 
1 (the leftmost bit) and its least significant bit is 0 (the rightmost bit).  
2.3  Notations 
+       The addition of two integers 
ab 
The product of integers a and b 
= 
The assignment operator 
mod 
The modulo operation of integers 
⊕   The bit-wise exclusive-or operation of integers 
⊞   The modulo 232 addition  
a || b       The concatenation of strings a and b 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 7 of 18 
aH       The leftmost 16 bits of integer a 
aL       The rightmost 16 bits of integer a 
a <<< k        The k-bit cyclic shift of a to the left 
a >> 1     The l-bit right shift of integer a 
(a1, a2,…, an)→ (b1, b2,…, bn)   
It assigns the values of ai to bi in parallel 
 For any two strings a and b, the presentation of string c created by the 
Example  3 
concatenation of a and b also follows the rules defined in section 2.2 i.e., the most significant 
digits is on the left hand side and the least significant digits is on the right hand side. For 
instance,  
a=0x1234, 
b=0x5678, 
c = a||b =0x12345678. 
a=10010011001011000000010110100102 
aH=10010011001011002, 
aL=00000010110100102. 
a=110010011001011000000010110100102。 
Then we have  
Example  4  Let  
Then we have  
Example  5  Let  
Then we have  
a >> 1=11001001100101100000001011010012。 
Example  6  Let a0, a1, …, a15, b0, b1, …, b15 be all integer variables. Then  
(a0, a1, …, a15)→ (b0, b1, …, b15)  
will result in bi=ai, 0≤ i≤ 15. 
3GPP Confidentiality and Integrity Algorithms 128-EEA3 & 128-EIA3. 
ZUC Algorithm Specification Version 1.4 
page 8 of 18