Crypto Forum Research Group                              David A. McGrewInternet Draft                                       Cisco Systems, Inc.Expires April, 2003                                        October, 2002                          Integer Counter Mode                       <draft-irtf-cfrg-icm-00.txt>Status of this Memo   This document is an Internet Draft and is in full conformance with   all provisions of Section 10 of RFC-2026. Internet Drafts are working   documents of the Internet Engineering Task Force (IETF), its areas,   and working groups.  Note that other groups may also distribute   working documents as Internet Drafts.   Internet Drafts are draft documents valid for a maximum of six months   and may be updated, replaced, or obsoleted by other documents at any   time.  It is inappropriate to use Internet Drafts as reference   material or to cite them other than as "work in progress."     The list of current Internet-Drafts can be accessed at     http://www.ietf.org/ietf/1id-abstracts.txt     The list of Internet-Draft Shadow Directories can be accessed at     http://www.ietf.org/shadow.html.1. Abstract  This document specifies Integer Counter Mode (ICM), a mode of  operation of a block cipher which defines an indexed keystream  generator (which generates a keystream segment given an index).  This mode is efficient, parallelizable, and has been proven secure  given realistic assumptions about the block cipher.  Test vectors  are provided for AES.  Counter Mode admits many variations.  The variant specified in  this document is secure and flexible, yet it enables a single  implementation of a keystream generator to suffice in different  application domains.McGrew                                                          [Page 1]Internet Draft            Integer Counter Mode             October, 20022. Notational Conventions  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",  "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in  this document are to be interpreted as described in RFC-2119 [B97].3. Introduction  Counter Mode is a way to define a pseudorandom keystream generator  using a block cipher [CTR].  The keystream can be used for additive  encryption, key derivation, or any other application requiring  pseudorandom data.  In ICM, the keystream is logically broken into segments.  Each  segment is identified with a segment index, and the segments have  equal lengths.  This segmentation makes ICM especially appropriate  for securing packet-based protocols.4. ICM  In this section, ICM keystream generation and encryption are  defined.4.1. ICM Parameters  The following parameters are used in ICM.  These parameters MUST  remain fixed for any given use of a key.  Parameter              Meaning  -----------------------------------------------------------------  BLOCK_LENGTH           the number of octets in the cipher block  KEY_LENGTH             the number of octets in the cipher key  OFFSET_LENGTH          the number of octets in the offset  SEGMENT_INDEX_LENGTH   the number of octets in the segment index  BLOCK_INDEX_LENGTH     the number of octets in the block index4.2. Keystream Segments  Conceptually, ICM is a keystream generator that takes a secret key  and a segment index as an input and then outputs a keystream  segment.  The segmentation lends itself to packet encryption, as  each keystream segment can be used to encrypt a distinct packet.  A counter is a value containing BLOCK_LENGTH octets which isMcGrew                                                          [Page 2]Internet Draft            Integer Counter Mode             October, 2002  incremented using an increment function based on integer addition,  to produce a sequence of distinct values which are used as inputs to  the block cipher.  (In the context of this specification, an integer  is an octet string, the most significant of which is the first.)  The output blocks of the cipher are concatenated to form the  keystream segment.  The first octet of the segment is the first  octet of the first output block, and so on.  A schematic of this  process is shown in Figure 1.  Figure 1.  The generation of a keystream segment given a segment  index and a block cipher key K.  Here C[i] and S[i] denote the ith  counter and keystream block, respectively.        segment         index           |           v         C[0] -----> C[1] -----> C[2] -----> ...           |           |           |           v           v           v         +---+       +---+       +---+      K->| E |    K->| E |    K->| E |       ...         +---+       +---+       +---+           |           |           |           v           v           v         S[0]        S[1]        S[2]        ...  The ith counter C[i] of the keystream segment with segment index s  is defined as   C[i] = (i + s * (256^BLOCK_INDEX_LENGTH)) (+) r  where r denotes the shifted Offset, which is defined as the Offset  times 256^(BLOCK_LENGTH - OFFSET_LENGTH).  (This multiplication  left-shifts the Offset so that it is aligned with the leftmost  edge of the block.)  Here ^ denotes exponentiation and (+) denotes  the bitwise exclusive-or operation.  The number of blocks in any segment MUST NOT exceed  256^BLOCK_INDEX_LENGTH.  The number of segments MUST NOT exceed  256^SEGMENT_INDEX_LENGTH.  These restrictions ensure the uniqueness  of each block cipher input.  They also imply that each segment  contains no more than (256^BLOCK_INDEX_LENGTH)*BLOCK_LENGTH octets.  The sum of SEGMENT_INDEX_LENGTH and BLOCK_INDEX_LENGTH MUST NOT  exceed BLOCK_LENGTH / 2.  This requirement protects the ICM  keystream generator from potentially failing to be pseudorandom (seeMcGrew                                                          [Page 3]Internet Draft            Integer Counter Mode             October, 2002  the rationale).  Figure 2.  An illustration of the structure of a counter with  BLOCK_LENGTH = 8, SEGMENT_INDEX_LENGTH = 2, and BLOCK_INDEX_LENGTH  = 2.  The field marked `null' is not part of either the block  or segment indices.    0                   1                   2                   3    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |                              null                             |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |          segment index        |          block index          |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+4.3. ICM Encryption  Unless otherwise specified, ICM encryption consists of bitwise  exclusive-oring the keystream into the plaintext to produce  the ciphertext.4.4 ICM KEY  An ICM key consists of the block cipher key and an Offset.  The  Offset is an integer with OFFSET_LENGTH octets, which is used to  `randomize' the logical starting point of keystream.  The Offset is  crucial to providing security; see the rationale.  The value of  OFFSET_LENGTH SHOULD be at least half that of BLOCK_LENGTH.  For the purposes of transporting an ICM key, e.g. in a signaling  protocol, that key SHOULD be considered a sequence of octets in  which the block cipher key precedes the Offset.5. Implementation Considerations  Implementation of the `add one modulo 2^m' operation is simple.  For  example, with BLOCK_LENGTH = 8 (m=64), it can be implemented in C as  if (!++x) ++y;  where x and y are 32-bit unsigned integers in network byte order.  The implementation of general purpose addition modulo 2^m is  slightly more complicated.  The fact that the Offset is left-aligned enables an implementationMcGrew                                                          [Page 4]Internet Draft            Integer Counter Mode             October, 2002  to avoid propagating carry values outside of the block index and/or  the segment index.  Choosing an OFFSET_LENGTH value equal to half  that of BLOCK_LENGTH avoids all of these carries, since the Offset  is then shifted so that it occupies the most significant octets of  the block, while the block and segment indices occupy the least  significant ones.6. Parameters and Test Vectors for AES  This section provides ICM parameters and test vectors for AES  with a 128 bit block size and 128 bit key (that is, with a  BLOCK_LENGTH and KEY_LENGTH of 16).  All integers are expressed in hexadecimal.  Each consecutive pair of  hex digits corresponds to an octet, so that the integer  000102030405060708090A0B0C0D0E0F corresponds to the octet sequence  { 00, 01, 02, 02 ... }.    BLOCK_LENGTH           16    KEY_LENGTH             16    OFFSET_LENGTH          14    SEGMENT_INDEX_LENGTH   6    BLOCK_INDEX_LENGTH     2    Block Cipher Key:      2b7e151628aed2a6abf7158809cf4f3c    Offset:                f0f1f2f3f4f5f6f7f8f9fafbfcfd    Segment Index:         000000000000    Keystream:             e03ead0935c95e80e166b16dd92b4eb4                           d23513162b02d0f72a43a2fe4a5f97ab                           ...  The counter values that correspond to the keystream blocks are  outlined below.  Counter                            Keystream  f0f1f2f3f4f5f6f7f8f9fafbfcfd0000   e03ead0935c95e80e166b16dd92b4eb4  f0f1f2f3f4f5f6f7f8f9fafbfcfd0001   d23513162b02d0f72a43a2fe4a5f97ab  f0f1f2f3f4f5f6f7f8f9fafbfcfd0002   41e95b3bb0a2e8dd477901e4fca894c0  ...                                ...7. Security Considerations  Each block cipher input is distinct for any segment and any block  index.  To see this fact, subtract any two counter values with  distinct segment or block indices; the result is non-zero.McGrew                                                          [Page 5]Internet Draft            Integer Counter Mode             October, 2002  The limitation on the number of segments which can be generated  ensures that the probability with which an adversary can distinguish  the keystream generator from random is negligible.  For a  theoretical justification of this fact, see Bellare et. al. [BR98].  Their analysis shows that if the block cipher cannot be  distinguished from a random permutation, then the keystream  generated by ICM cannot be distinguished from keystream generated by  a truly random process, as long as the length of keystream which is  generated is kept below some threshold.  The threshold defined in  Section 4.2 is sufficient for most uses of ICM for encryption.  This  specification refrains from dictating a lower threshold in order to  refrain from dictating a particular policy, and to avoid a  complicated digression.  The use of the Offset, a key-dependent value which randomizes the  starting position of the keystream, is essential for security.  The  omission of this mechanism leaves the door open for practical  attacks, such as the key collision attack and Hellman's time-memory  tradeoff attack; see McGrew and Fluhrer [MF00] for a description of  these attacks which is applicable to ICM.  Several counter mode  proposals do not include an offset, and are thus vulnerable to these  attacks.8. Rationale  This speficiation includes input from implementation experience with  several counter mode variants.  The goals of ICM are to provide:    o a secure keystream generator and cipher, and    o a definition flexible enough that a single implementation can be      used for a variety of applications (e.g., Secure RTP [SRTP],      IPsec ESP [KA96]).  The Offset slightly increases the key management overhead, but this  minor disadvantage is well outweighed by other savings.  The Offset  is no larger than a CBC mode IV, and ICM enables the use of an  explicit IV (as is commonly used with CBC [MD98]) to be avoided.9. History  This draft is based on draft-mcgrew-saag-icm-00.txt, which was  submitted to SAAG on November, 2001 and which expired in May, 2002.  The current definition of ICM has changed from the earlier one; the  counter formation is different and the specifications areMcGrew                                                          [Page 6]Internet Draft            Integer Counter Mode             October, 2002  unfortunately not interoperable.  This change was motivated by a  considerable amount of feedback on the desirability of admitting  optimizations of the sort described in Section 5, in which the carry  operations of counter addition need not be propagated across a large  register.  The current definition of ICM is interoperable with that defined in  Secure RTP [SRTP].10. Acknowledgements  Thanks are due to Helger Lipmaa, Jerome Etienne, Scott Fluhrer and  Mats Naslund for their helpful discussion and comments.11. Contact Information  Questions and comments on this draft SHOULD be sent to:  David A. McGrew  Cisco Systems, Inc.  mcgrew@cisco.com  and copied to the Crypto Forum Research Group at:  cfrg@ietf.org.12. References  [BR98]  M. Bellare, A. Desai, E. Lokipii and P. Rogaway, A          Concrete Security Treatment of Symmetric Encryption:          Analysis of DES Modes of Operation, Proceedings of          the 38th Symposium on Foundations of Computer          Science, IEEE, 1997.  [B97]   S. Bradner, Key words for use in RFCs to Indicate          Requirement Levels, RFC 2119, March 1997.  [AES]   The Advanced Encryption Standard, United States          National Institute for Standards and Technology (NIST),          http://www.nist.gov/aes/.  [CTR]   M. Dworkin, NIST Special Publication 800-38A,          "Recommendation for Block Cipher Modes of Operation: Methods          and Techniques",  2001.  Online atMcGrew                                                          [Page 7]Internet Draft            Integer Counter Mode             October, 2002          http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-          38a.pdf.  [MD98]  Madson, C., and Doraswamy, N., "The ESP DES-CBC Cipher          Algorithm With Explicit IV", RFC 2405, November 1998.  [MF00]  D. McGrew and S. Fluhrer, Attacks on Additive Encryption and          Implications on Internet Security, Selected Areas in          Cryptography 2000.  [SRTP]  The Secure Real-time Transport Protocol, Baugher et. al.,          Internet Draft, draft-ietf-avt-srtp-05.txt.McGrew                                                          [Page 8]