| OLD | NEW |
| (Empty) |
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 Crypto Forum Research Group David A. McGrew | |
| 10 Internet Draft Cisco Systems, Inc. | |
| 11 Expires April, 2003 October, 2002 | |
| 12 | |
| 13 | |
| 14 | |
| 15 Integer Counter Mode | |
| 16 <draft-irtf-cfrg-icm-00.txt> | |
| 17 | |
| 18 | |
| 19 Status of this Memo | |
| 20 | |
| 21 This document is an Internet Draft and is in full conformance with | |
| 22 all provisions of Section 10 of RFC-2026. Internet Drafts are working | |
| 23 documents of the Internet Engineering Task Force (IETF), its areas, | |
| 24 and working groups. Note that other groups may also distribute | |
| 25 working documents as Internet Drafts. | |
| 26 | |
| 27 Internet Drafts are draft documents valid for a maximum of six months | |
| 28 and may be updated, replaced, or obsoleted by other documents at any | |
| 29 time. It is inappropriate to use Internet Drafts as reference | |
| 30 material or to cite them other than as "work in progress." | |
| 31 | |
| 32 The list of current Internet-Drafts can be accessed at | |
| 33 http://www.ietf.org/ietf/1id-abstracts.txt | |
| 34 | |
| 35 The list of Internet-Draft Shadow Directories can be accessed at | |
| 36 http://www.ietf.org/shadow.html. | |
| 37 | |
| 38 | |
| 39 1. Abstract | |
| 40 | |
| 41 | |
| 42 This document specifies Integer Counter Mode (ICM), a mode of | |
| 43 operation of a block cipher which defines an indexed keystream | |
| 44 generator (which generates a keystream segment given an index). | |
| 45 This mode is efficient, parallelizable, and has been proven secure | |
| 46 given realistic assumptions about the block cipher. Test vectors | |
| 47 are provided for AES. | |
| 48 | |
| 49 Counter Mode admits many variations. The variant specified in | |
| 50 this document is secure and flexible, yet it enables a single | |
| 51 implementation of a keystream generator to suffice in different | |
| 52 application domains. | |
| 53 | |
| 54 | |
| 55 | |
| 56 | |
| 57 | |
| 58 | |
| 59 McGrew [Page 1] | |
| 60 | |
| 61 | |
| 62 Internet Draft Integer Counter Mode October, 2002 | |
| 63 | |
| 64 | |
| 65 2. Notational Conventions | |
| 66 | |
| 67 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |
| 68 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | |
| 69 this document are to be interpreted as described in RFC-2119 [B97]. | |
| 70 | |
| 71 | |
| 72 3. Introduction | |
| 73 | |
| 74 Counter Mode is a way to define a pseudorandom keystream generator | |
| 75 using a block cipher [CTR]. The keystream can be used for additive | |
| 76 encryption, key derivation, or any other application requiring | |
| 77 pseudorandom data. | |
| 78 | |
| 79 In ICM, the keystream is logically broken into segments. Each | |
| 80 segment is identified with a segment index, and the segments have | |
| 81 equal lengths. This segmentation makes ICM especially appropriate | |
| 82 for securing packet-based protocols. | |
| 83 | |
| 84 | |
| 85 4. ICM | |
| 86 | |
| 87 In this section, ICM keystream generation and encryption are | |
| 88 defined. | |
| 89 | |
| 90 | |
| 91 4.1. ICM Parameters | |
| 92 | |
| 93 The following parameters are used in ICM. These parameters MUST | |
| 94 remain fixed for any given use of a key. | |
| 95 | |
| 96 Parameter Meaning | |
| 97 ----------------------------------------------------------------- | |
| 98 BLOCK_LENGTH the number of octets in the cipher block | |
| 99 KEY_LENGTH the number of octets in the cipher key | |
| 100 OFFSET_LENGTH the number of octets in the offset | |
| 101 SEGMENT_INDEX_LENGTH the number of octets in the segment index | |
| 102 BLOCK_INDEX_LENGTH the number of octets in the block index | |
| 103 | |
| 104 | |
| 105 4.2. Keystream Segments | |
| 106 | |
| 107 Conceptually, ICM is a keystream generator that takes a secret key | |
| 108 and a segment index as an input and then outputs a keystream | |
| 109 segment. The segmentation lends itself to packet encryption, as | |
| 110 each keystream segment can be used to encrypt a distinct packet. | |
| 111 | |
| 112 A counter is a value containing BLOCK_LENGTH octets which is | |
| 113 | |
| 114 | |
| 115 | |
| 116 McGrew [Page 2] | |
| 117 | |
| 118 | |
| 119 Internet Draft Integer Counter Mode October, 2002 | |
| 120 | |
| 121 | |
| 122 incremented using an increment function based on integer addition, | |
| 123 to produce a sequence of distinct values which are used as inputs to | |
| 124 the block cipher. (In the context of this specification, an integer | |
| 125 is an octet string, the most significant of which is the first.) | |
| 126 The output blocks of the cipher are concatenated to form the | |
| 127 keystream segment. The first octet of the segment is the first | |
| 128 octet of the first output block, and so on. A schematic of this | |
| 129 process is shown in Figure 1. | |
| 130 | |
| 131 | |
| 132 Figure 1. The generation of a keystream segment given a segment | |
| 133 index and a block cipher key K. Here C[i] and S[i] denote the ith | |
| 134 counter and keystream block, respectively. | |
| 135 | |
| 136 segment | |
| 137 index | |
| 138 | | |
| 139 v | |
| 140 C[0] -----> C[1] -----> C[2] -----> ... | |
| 141 | | | | |
| 142 v v v | |
| 143 +---+ +---+ +---+ | |
| 144 K->| E | K->| E | K->| E | ... | |
| 145 +---+ +---+ +---+ | |
| 146 | | | | |
| 147 v v v | |
| 148 S[0] S[1] S[2] ... | |
| 149 | |
| 150 The ith counter C[i] of the keystream segment with segment index s | |
| 151 is defined as | |
| 152 | |
| 153 C[i] = (i + s * (256^BLOCK_INDEX_LENGTH)) (+) r | |
| 154 | |
| 155 where r denotes the shifted Offset, which is defined as the Offset | |
| 156 times 256^(BLOCK_LENGTH - OFFSET_LENGTH). (This multiplication | |
| 157 left-shifts the Offset so that it is aligned with the leftmost | |
| 158 edge of the block.) Here ^ denotes exponentiation and (+) denotes | |
| 159 the bitwise exclusive-or operation. | |
| 160 | |
| 161 The number of blocks in any segment MUST NOT exceed | |
| 162 256^BLOCK_INDEX_LENGTH. The number of segments MUST NOT exceed | |
| 163 256^SEGMENT_INDEX_LENGTH. These restrictions ensure the uniqueness | |
| 164 of each block cipher input. They also imply that each segment | |
| 165 contains no more than (256^BLOCK_INDEX_LENGTH)*BLOCK_LENGTH octets. | |
| 166 | |
| 167 The sum of SEGMENT_INDEX_LENGTH and BLOCK_INDEX_LENGTH MUST NOT | |
| 168 exceed BLOCK_LENGTH / 2. This requirement protects the ICM | |
| 169 keystream generator from potentially failing to be pseudorandom (see | |
| 170 | |
| 171 | |
| 172 | |
| 173 McGrew [Page 3] | |
| 174 | |
| 175 | |
| 176 Internet Draft Integer Counter Mode October, 2002 | |
| 177 | |
| 178 | |
| 179 the rationale). | |
| 180 | |
| 181 Figure 2. An illustration of the structure of a counter with | |
| 182 BLOCK_LENGTH = 8, SEGMENT_INDEX_LENGTH = 2, and BLOCK_INDEX_LENGTH | |
| 183 = 2. The field marked `null' is not part of either the block | |
| 184 or segment indices. | |
| 185 | |
| 186 0 1 2 3 | |
| 187 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 | |
| 188 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
| 189 | null | | |
| 190 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
| 191 | segment index | block index | | |
| 192 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |
| 193 | |
| 194 | |
| 195 4.3. ICM Encryption | |
| 196 | |
| 197 Unless otherwise specified, ICM encryption consists of bitwise | |
| 198 exclusive-oring the keystream into the plaintext to produce | |
| 199 the ciphertext. | |
| 200 | |
| 201 | |
| 202 4.4 ICM KEY | |
| 203 | |
| 204 An ICM key consists of the block cipher key and an Offset. The | |
| 205 Offset is an integer with OFFSET_LENGTH octets, which is used to | |
| 206 `randomize' the logical starting point of keystream. The Offset is | |
| 207 crucial to providing security; see the rationale. The value of | |
| 208 OFFSET_LENGTH SHOULD be at least half that of BLOCK_LENGTH. | |
| 209 | |
| 210 For the purposes of transporting an ICM key, e.g. in a signaling | |
| 211 protocol, that key SHOULD be considered a sequence of octets in | |
| 212 which the block cipher key precedes the Offset. | |
| 213 | |
| 214 | |
| 215 5. Implementation Considerations | |
| 216 | |
| 217 Implementation of the `add one modulo 2^m' operation is simple. For | |
| 218 example, with BLOCK_LENGTH = 8 (m=64), it can be implemented in C as | |
| 219 | |
| 220 if (!++x) ++y; | |
| 221 | |
| 222 where x and y are 32-bit unsigned integers in network byte order. | |
| 223 The implementation of general purpose addition modulo 2^m is | |
| 224 slightly more complicated. | |
| 225 | |
| 226 The fact that the Offset is left-aligned enables an implementation | |
| 227 | |
| 228 | |
| 229 | |
| 230 McGrew [Page 4] | |
| 231 | |
| 232 | |
| 233 Internet Draft Integer Counter Mode October, 2002 | |
| 234 | |
| 235 | |
| 236 to avoid propagating carry values outside of the block index and/or | |
| 237 the segment index. Choosing an OFFSET_LENGTH value equal to half | |
| 238 that of BLOCK_LENGTH avoids all of these carries, since the Offset | |
| 239 is then shifted so that it occupies the most significant octets of | |
| 240 the block, while the block and segment indices occupy the least | |
| 241 significant ones. | |
| 242 | |
| 243 | |
| 244 6. Parameters and Test Vectors for AES | |
| 245 | |
| 246 This section provides ICM parameters and test vectors for AES | |
| 247 with a 128 bit block size and 128 bit key (that is, with a | |
| 248 BLOCK_LENGTH and KEY_LENGTH of 16). | |
| 249 | |
| 250 All integers are expressed in hexadecimal. Each consecutive pair of | |
| 251 hex digits corresponds to an octet, so that the integer | |
| 252 000102030405060708090A0B0C0D0E0F corresponds to the octet sequence | |
| 253 { 00, 01, 02, 02 ... }. | |
| 254 | |
| 255 BLOCK_LENGTH 16 | |
| 256 KEY_LENGTH 16 | |
| 257 OFFSET_LENGTH 14 | |
| 258 SEGMENT_INDEX_LENGTH 6 | |
| 259 BLOCK_INDEX_LENGTH 2 | |
| 260 | |
| 261 Block Cipher Key: 2b7e151628aed2a6abf7158809cf4f3c | |
| 262 Offset: f0f1f2f3f4f5f6f7f8f9fafbfcfd | |
| 263 Segment Index: 000000000000 | |
| 264 Keystream: e03ead0935c95e80e166b16dd92b4eb4 | |
| 265 d23513162b02d0f72a43a2fe4a5f97ab | |
| 266 ... | |
| 267 | |
| 268 The counter values that correspond to the keystream blocks are | |
| 269 outlined below. | |
| 270 | |
| 271 Counter Keystream | |
| 272 | |
| 273 f0f1f2f3f4f5f6f7f8f9fafbfcfd0000 e03ead0935c95e80e166b16dd92b4eb4 | |
| 274 f0f1f2f3f4f5f6f7f8f9fafbfcfd0001 d23513162b02d0f72a43a2fe4a5f97ab | |
| 275 f0f1f2f3f4f5f6f7f8f9fafbfcfd0002 41e95b3bb0a2e8dd477901e4fca894c0 | |
| 276 ... ... | |
| 277 | |
| 278 | |
| 279 7. Security Considerations | |
| 280 | |
| 281 Each block cipher input is distinct for any segment and any block | |
| 282 index. To see this fact, subtract any two counter values with | |
| 283 distinct segment or block indices; the result is non-zero. | |
| 284 | |
| 285 | |
| 286 | |
| 287 McGrew [Page 5] | |
| 288 | |
| 289 | |
| 290 Internet Draft Integer Counter Mode October, 2002 | |
| 291 | |
| 292 | |
| 293 The limitation on the number of segments which can be generated | |
| 294 ensures that the probability with which an adversary can distinguish | |
| 295 the keystream generator from random is negligible. For a | |
| 296 theoretical justification of this fact, see Bellare et. al. [BR98]. | |
| 297 Their analysis shows that if the block cipher cannot be | |
| 298 distinguished from a random permutation, then the keystream | |
| 299 generated by ICM cannot be distinguished from keystream generated by | |
| 300 a truly random process, as long as the length of keystream which is | |
| 301 generated is kept below some threshold. The threshold defined in | |
| 302 Section 4.2 is sufficient for most uses of ICM for encryption. This | |
| 303 specification refrains from dictating a lower threshold in order to | |
| 304 refrain from dictating a particular policy, and to avoid a | |
| 305 complicated digression. | |
| 306 | |
| 307 The use of the Offset, a key-dependent value which randomizes the | |
| 308 starting position of the keystream, is essential for security. The | |
| 309 omission of this mechanism leaves the door open for practical | |
| 310 attacks, such as the key collision attack and Hellman's time-memory | |
| 311 tradeoff attack; see McGrew and Fluhrer [MF00] for a description of | |
| 312 these attacks which is applicable to ICM. Several counter mode | |
| 313 proposals do not include an offset, and are thus vulnerable to these | |
| 314 attacks. | |
| 315 | |
| 316 | |
| 317 8. Rationale | |
| 318 | |
| 319 This speficiation includes input from implementation experience with | |
| 320 several counter mode variants. The goals of ICM are to provide: | |
| 321 | |
| 322 o a secure keystream generator and cipher, and | |
| 323 | |
| 324 o a definition flexible enough that a single implementation can be | |
| 325 used for a variety of applications (e.g., Secure RTP [SRTP], | |
| 326 IPsec ESP [KA96]). | |
| 327 | |
| 328 The Offset slightly increases the key management overhead, but this | |
| 329 minor disadvantage is well outweighed by other savings. The Offset | |
| 330 is no larger than a CBC mode IV, and ICM enables the use of an | |
| 331 explicit IV (as is commonly used with CBC [MD98]) to be avoided. | |
| 332 | |
| 333 | |
| 334 9. History | |
| 335 | |
| 336 This draft is based on draft-mcgrew-saag-icm-00.txt, which was | |
| 337 submitted to SAAG on November, 2001 and which expired in May, 2002. | |
| 338 | |
| 339 The current definition of ICM has changed from the earlier one; the | |
| 340 counter formation is different and the specifications are | |
| 341 | |
| 342 | |
| 343 | |
| 344 McGrew [Page 6] | |
| 345 | |
| 346 | |
| 347 Internet Draft Integer Counter Mode October, 2002 | |
| 348 | |
| 349 | |
| 350 unfortunately not interoperable. This change was motivated by a | |
| 351 considerable amount of feedback on the desirability of admitting | |
| 352 optimizations of the sort described in Section 5, in which the carry | |
| 353 operations of counter addition need not be propagated across a large | |
| 354 register. | |
| 355 | |
| 356 The current definition of ICM is interoperable with that defined in | |
| 357 Secure RTP [SRTP]. | |
| 358 | |
| 359 | |
| 360 10. Acknowledgements | |
| 361 | |
| 362 Thanks are due to Helger Lipmaa, Jerome Etienne, Scott Fluhrer and | |
| 363 Mats Naslund for their helpful discussion and comments. | |
| 364 | |
| 365 | |
| 366 11. Contact Information | |
| 367 | |
| 368 Questions and comments on this draft SHOULD be sent to: | |
| 369 | |
| 370 David A. McGrew | |
| 371 Cisco Systems, Inc. | |
| 372 mcgrew@cisco.com | |
| 373 | |
| 374 and copied to the Crypto Forum Research Group at: | |
| 375 | |
| 376 cfrg@ietf.org. | |
| 377 | |
| 378 | |
| 379 12. References | |
| 380 | |
| 381 | |
| 382 [BR98] M. Bellare, A. Desai, E. Lokipii and P. Rogaway, A | |
| 383 Concrete Security Treatment of Symmetric Encryption: | |
| 384 Analysis of DES Modes of Operation, Proceedings of | |
| 385 the 38th Symposium on Foundations of Computer | |
| 386 Science, IEEE, 1997. | |
| 387 | |
| 388 [B97] S. Bradner, Key words for use in RFCs to Indicate | |
| 389 Requirement Levels, RFC 2119, March 1997. | |
| 390 | |
| 391 [AES] The Advanced Encryption Standard, United States | |
| 392 National Institute for Standards and Technology (NIST), | |
| 393 http://www.nist.gov/aes/. | |
| 394 | |
| 395 [CTR] M. Dworkin, NIST Special Publication 800-38A, | |
| 396 "Recommendation for Block Cipher Modes of Operation: Methods | |
| 397 and Techniques", 2001. Online at | |
| 398 | |
| 399 | |
| 400 | |
| 401 McGrew [Page 7] | |
| 402 | |
| 403 | |
| 404 Internet Draft Integer Counter Mode October, 2002 | |
| 405 | |
| 406 | |
| 407 http://csrc.nist.gov/publications/nistpubs/800-38a/sp800- | |
| 408 38a.pdf. | |
| 409 | |
| 410 [MD98] Madson, C., and Doraswamy, N., "The ESP DES-CBC Cipher | |
| 411 Algorithm With Explicit IV", RFC 2405, November 1998. | |
| 412 | |
| 413 [MF00] D. McGrew and S. Fluhrer, Attacks on Additive Encryption and | |
| 414 Implications on Internet Security, Selected Areas in | |
| 415 Cryptography 2000. | |
| 416 | |
| 417 [SRTP] The Secure Real-time Transport Protocol, Baugher et. al., | |
| 418 Internet Draft, draft-ietf-avt-srtp-05.txt. | |
| 419 | |
| 420 | |
| 421 | |
| 422 | |
| 423 | |
| 424 | |
| 425 | |
| 426 | |
| 427 | |
| 428 | |
| 429 | |
| 430 | |
| 431 | |
| 432 | |
| 433 | |
| 434 | |
| 435 | |
| 436 | |
| 437 | |
| 438 | |
| 439 | |
| 440 | |
| 441 | |
| 442 | |
| 443 | |
| 444 | |
| 445 | |
| 446 | |
| 447 | |
| 448 | |
| 449 | |
| 450 | |
| 451 | |
| 452 | |
| 453 | |
| 454 | |
| 455 | |
| 456 | |
| 457 | |
| 458 McGrew [Page 8] | |
| 459 | |
| 460 | |
| OLD | NEW |