ABC: a New Fast Flexible Stream Cipher

ABC: a New Fast Flexible Stream Cipher

ABC: A New Fast Flexible Stream Cipher Specification Version 2 Vladimir Anashin∗, Andrey Bogdanovy, Ilya Kizhvatov Faculty of Information Security Institute for Information Sciences and Security Technologies Russian State University for the Humanities anashin,bogdanov,kizhvatov @rsuh.ru f g Sandeep Kumar z Communication Security Group (COSY) Department of Electrical Engineering and Information Sciences Ruhr-University Bochum [email protected] Introduction ABC is a synchronous stream cipher optimized for software applications. Its design offers large flexibility concerning memory consumption. Here a version of ABC with a 128-bit key and 32-bit internal variables is presented. ∗Corresponding author yPartially supported by the Institute for Experimental Mathematics, University of Duisburg-Essen, Germany zImplementation for 8-bit processor 1 ABC: A new fast flexible stream cipher A new approach to the stream cipher design has been used which results in a cipher based upon key- and clock-dependent state transition and filter functions. Our techniques guarantee the period of 232 (2127 1) words · − (the longest of possible), uniform distribution, and high linear complexity of the keystream of ABC. The ABC stream cipher offers a security level of 2128. No hidden weak- nesses have been incorporated in the design of ABC. No weaknesses of the design with respect to standard cryptanalytic attacks have been found. ABC can be efficiently implemented in software. Our C implementation provides the throughput of about 7 Gbps on a standard 3.2 GHz Pentium 4 processor. The flexibility property results in the possibility of its efficient application on almost every platform by choosing proper implementation parameters. 1 Variables and basic operations In the description of cryptographic primitives and in the specification of ABC one rests upon some variables which change at each step of computa- tions: x is a 32-bit integer value and can be represented in different ways: 31 i 32 x = (x ; : : : ; x ) = xi2 Z=2 Z, xi 0; 1 ; i = 0; : : : ; 31; 31 0 i=0 2 2 f g w x = (x^t 1; : : : ; x^0), x^i Z=2 Z, i = 0; : : : ; t 1, w Z, w 32, − P 2 − 2 j t = 32=w Z; 2 x V = GF(2)32; 2 32 y is a 32-bit integer value, one way of representing it being used only: 31 i 32 y = (y ; : : : ; y ) = yi2 Z=2 Z, yi 0; 1 ; i = 0; : : : ; 31; 31 0 i=0 2 2 f g z is a 128-bit integer valueP and allows several equivalent representations too: 127 i 128 z = (z ; : : : ; z ) = zi2 Z=2 Z, zi 0; 1 ; i = 0; : : : ; 127; 127 0 i=0 2 2 f g z V = GF(2)128; 2 128 P z = (z¯ ; z¯ ; z¯ ; z¯ ) (Z=232Z)4, z¯ ; z¯ ; z¯ ; z¯ Z=232Z. 3 2 1 0 2 3 2 1 0 2 x and z represent the current internal state of the cipher. The initial values of x and z are defined in the course of the initialization stage. y denotes the 32-bit output of the keystream generator. Moreover, ABC uses some further variables that are calculated from the key and initial value at the initialization stage by applying a special key expansion routine: 2 ABC: A new fast flexible stream cipher e; e ; : : : ; e Z=232Z are 32-bit integer values; 0 31 2 32 d = (d ; ; : : : ; d ; ); d = (d ; ; : : : ; d ; ) d = (d ; ; : : : ; d ; ) Z=2 Z 0 0 31 0 0 1 1 31 1 0 2 2 31 2 0 2 are 32-bit integer values. 31 Having been defined once, the variables d , d , d , e and ei remain 0 1 2 f gi=0 unchanged during the whole subsequent encryption stage as distinct from x and z. In the description of cryptographic primitives we will also require a 32-bit integer ζ Z=232Z for storing intermediate computation results. 2 To describe some optimization techniques need an auxiliary w-bit integer variable j Z=2wZ will be needed: 2 w 1 i Z wZ j = (jw 1; : : : ; j0) = i=0− ji2 =2 , ji 0; 1 ; i = 0; : : : ; w 1. − 2 2 f g − Finally, in the descriptionP of operations below two 32-bit integer variables are required: 32 a = (a ; : : : ; a ); b = (b ; : : : ; b ) Z=2 Z; ai; bi 0; 1 ; i = 0; : : : ; 31; 31 0 31 0 2 2 f g for representing operands of some operators. The ABC cipher requires the following operations for its specification: Addition modulo 232, +, represents an ordinary arithmetic addition of 2 operands in Z=232Z as 32-bit integers; Bitwise addition modulo 2, XOR, defines a binary addition of 2 operands in V32, or bitwise exclusive 'OR' of 2 32-bit integer operands as follows: a XOR b = (a b ; : : : ; a b ); 31 ⊕ 31 0 ⊕ 0 where 0; if ai = bi, ai bi = ⊕ (1; otherwise; Bitwise multiplication modulo 2, AND, defines a bitwise 'AND' of 2 32-bit integer operands as follows: a AND b = (a b ; : : : ; a b ); 31 ^ 31 0 ^ 0 where 1; if ai = bi = 1, ai bi = ^ (0; otherwise; Bitwise disjunction, OR, defines a bitwise inclusive 'OR' of 2 32-bit integer operands as follows: a OR b = (a b ; : : : ; a b ); 31 _ 31 0 _ 0 3 ABC: A new fast flexible stream cipher where 0; if ai = bi = 0, ai bi = _ (1; otherwise; The i-th bit selection, δi( ), determines the i-th bit of a 32- or 128-bit · integer number and can be described in the following way as applied to respectively x, z, d1 and j: 32 δi : Z=2 Z 0; 1 , δi(x) = xi, i = 0; : : : ; 31, ! f g 128 δi : Z=2 Z 0; 1 , δi(z) = zi, i = 0; : : : ; 127, ! f g 32 δi : Z=2 Z 0; 1 , δi(d ) = d ;i, i = 0; : : : ; 31, ! f g 1 1 w δi : Z=2 Z 0; 1 , δi(j) = ji, i = 0; : : : ; w 1; ! f g − Bit substring selection, [ ]v , denotes a substring of bits in positions from u · u to v, u; v Z=25Z, in the binary expansion of a 32-bit integer number 2 and is defined as follows: v [a]u = (δv(a); : : : ; δu(a)) = (av; : : : ; au); u < v; for example, a = 000000000000000100000000001110102 ; 16 [a]1 = 10000000000111012 ; Right shift, c, denotes right zero-fill bit shift of binary expansion of a · 32-bit integer number by c bits, c Z=25Z, and can be described as 2 follows: a c = (0; : : : ; 0; a ; : : : ; ac); 31 c Left shift, c, denotes left zero-fill| bit{z shift} of binary expansion of a 32-bit · integer number by c bits, c Z=25Z, and can be described as follows: 2 a c = (a31 c; : : : ; a0; 0; : : : ; 0); − c | {z } Right rotation, o c, denotes right bitwise rotation of binary expansion of · a 32-bit integer number by c bits, c Z=25Z, and can be described as 2 follows: a o c = (ac 1; : : : ; a0; a31; : : : ; ac): − 4 ABC: A new fast flexible stream cipher 2 Primitives ABC uses 3 main primitives (A, B and C respectively): A: Z=2128Z Z=2128Z is a linear feedback shift register of length 128 ! (LFSR), z representing its state; B: Z=232Z Z=232Z represents a single cycle mapping based on arith- ! metical addition in Z=232Z and bitwise addition modulo 2 (XOR), trans- forming x; C: Z=232Z Z=232Z specifies a filter function based on lookup tables, ! arithmetical addition in Z=232Z and right bitwise rotation (o), as- suming x as argument and delivering y. A: Linear feedback shift register, counter 128 A is a linear transformation of the vector space V128 = GF(2) , z = A(z), and is defined by a LFSR. Since bit operations are relatively slow on general purpose processors, a word oriented representation of the LFSR is used. It is of length 128 and its characteristic polynomial is φ(θ) = (θ)θ , where (θ) = θ127 + θ63 + 1 is primitive. Moreover, as in [10] the next 32 bits are produced at once, which is done as follows: ζ z¯ XOR(z¯ 31) XOR(z¯ 1) mod 232; 2 1 0 z¯ z¯ ; 0 1 z¯ z¯ ; (1) 1 2 z¯ z¯ ; 2 3 z¯ ζ: 3 It is important to stress here that the above representation is just another (word-oriented) representation of the 127-bit LFSR with primitive polyno- mial (θ). Two outputs from this LFSR are obtained, the first one for the state transition procedure and the second one for updating the output function. Thus, the cycle length of this LFSR is 2127 1, and not 2128 1. − − This also leads to the fact that the cycle length becomes 1 in case the initial state z = (z¯3; z¯2; z¯1; z¯0) of A is either (0; 0; 0; 0) or (0; 0; 0; 1). This danger is eliminated by forcing δ1(z) to 1 in the ABC key setup and IV setup procedures, thus reducing the secret state of A primitive to 126 bits. B: Single cycle function, state transition The single cycle function B used in the ABC cipher can be specified through the following equation: 32 B(x) = ((x XOR d0) + d1) XOR d2 mod 2 ; (2) 5 ABC: A new fast flexible stream cipher where d ; d ; d Z=232Z, d 0 (mod 4), d 1 (mod 4), d 0 0 1 2 2 0 ≡ 1 ≡ 2 ≡ (mod 4). In other words, the following equations should hold simultane- ously: d0;0 = d0;1 = 0; 8d1;0 = 1; d1;1 = 0; (3) > <d2;0 = d2;1 = 0: These restrictions guaran:> tee that B is a single cycle map modulo 232, see Corollary 1 in Appendix A.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    38 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us