home *** CD-ROM | disk | FTP | other *** search
/ The Hacker's Encyclopedia 1998 / hackers_encyclopedia.iso / rfc / 3 / rfc2268.txt < prev    next >
Encoding:
Text File  |  2003-06-11  |  18.6 KB  |  620 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          R. Rivest
  8. Request for Comments: 2268           MIT Laboratory for Computer Science
  9. Category: Informational                      and RSA Data Security, Inc.
  10.                                                               March 1998
  11.  
  12.  
  13.             A Description of the RC2(r) Encryption Algorithm
  14.  
  15. Status of this Memo
  16.  
  17.    This memo provides information for the Internet community.  It does
  18.    not specify an Internet standard of any kind.  Distribution of this
  19.    memo is unlimited.
  20.  
  21. Copyright Notice
  22.  
  23.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  24.  
  25. 1. Introduction
  26.  
  27.    This memo is an RSA Laboratories Technical Note.  It is meant for
  28.    informational use by the Internet community.
  29.  
  30.    This memo describes a conventional (secret-key) block encryption
  31.    algorithm, called RC2, which may be considered as a proposal for a
  32.    DES replacement. The input and output block sizes are 64 bits each.
  33.    The key size is variable, from one byte up to 128 bytes, although the
  34.    current implementation uses eight bytes.
  35.  
  36.    The algorithm is designed to be easy to implement on 16-bit
  37.    microprocessors. On an IBM AT, the encryption runs about twice as
  38.    fast as DES (assuming that key expansion has been done).
  39.  
  40. 1.1 Algorithm description
  41.  
  42.    We use the term "word" to denote a 16-bit quantity. The symbol + will
  43.    denote twos-complement addition. The symbol & will denote the bitwise
  44.    "and" operation. The term XOR will denote the bitwise "exclusive-or"
  45.    operation. The symbol ~ will denote bitwise complement.  The symbol ^
  46.    will denote the exponentiation operation.  The term MOD will denote
  47.    the modulo operation.
  48.  
  49.    There are three separate algorithms involved:
  50.  
  51.      Key expansion. This takes a (variable-length) input key and
  52.      produces an expanded key consisting of 64 words K[0],...,K[63].
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Rivest                       Informational                      [Page 1]
  59.  
  60. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  61.  
  62.  
  63.      Encryption. This takes a 64-bit input quantity stored in words
  64.      R[0], ..., R[3] and encrypts it "in place" (the result is left in
  65.      R[0], ..., R[3]).
  66.  
  67.      Decryption. The inverse operation to encryption.
  68.  
  69. 2. Key expansion
  70.  
  71.    Since we will be dealing with eight-bit byte operations as well as
  72.    16-bit word operations, we will use two alternative notations
  73.  
  74.    for referring to the key buffer:
  75.  
  76.         For word operations, we will refer to the positions of the
  77.              buffer as K[0], ..., K[63]; each K[i] is a 16-bit word.
  78.  
  79.         For byte operations,  we will refer to the key buffer as
  80.              L[0], ..., L[127]; each L[i] is an eight-bit byte.
  81.  
  82.    These are alternative views of the same data buffer. At all times it
  83.    will be true that
  84.  
  85.                        K[i] = L[2*i] + 256*L[2*i+1].
  86.  
  87.    (Note that the low-order byte of each K word is given before the
  88.    high-order byte.)
  89.  
  90.    We will assume that exactly T bytes of key are supplied, for some T
  91.    in the range 1 <= T <= 128. (Our current implementation uses T = 8.)
  92.    However, regardless of T, the algorithm has a maximum effective key
  93.    length in bits, denoted T1. That is, the search space is 2^(8*T), or
  94.    2^T1, whichever is smaller.
  95.  
  96.    The purpose of the key-expansion algorithm is to modify the key
  97.    buffer so that each bit of the expanded key depends in a complicated
  98.    way on every bit of the supplied input key.
  99.  
  100.    The key expansion algorithm begins by placing the supplied T-byte key
  101.    into bytes L[0], ..., L[T-1] of the key buffer.
  102.  
  103.    The key expansion algorithm then computes the effective key length in
  104.    bytes T8 and a mask TM based on the effective key length in bits T1.
  105.    It uses the following operations:
  106.  
  107.    T8 = (T1+7)/8;
  108.    TM = 255 MOD 2^(8 + T1 - 8*T8);
  109.  
  110.    Thus TM has its 8 - (8*T8 - T1) least significant bits set.
  111.  
  112.  
  113.  
  114. Rivest                       Informational                      [Page 2]
  115.  
  116. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  117.  
  118.  
  119.    For example, with an effective key length of 64 bits, T1 = 64, T8 = 8
  120.    and TM = 0xff.  With an effective key length of 63 bits, T1 = 63, T8
  121.    = 8 and TM = 0x7f.
  122.  
  123.    Here PITABLE[0], ..., PITABLE[255] is an array of "random" bytes
  124.    based on the digits of PI = 3.14159... . More precisely, the array
  125.    PITABLE is a random permutation of the values 0, ..., 255. Here is
  126.    the PITABLE in hexadecimal notation:
  127.  
  128.         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  129.    00: d9 78 f9 c4 19 dd b5 ed 28 e9 fd 79 4a a0 d8 9d
  130.    10: c6 7e 37 83 2b 76 53 8e 62 4c 64 88 44 8b fb a2
  131.    20: 17 9a 59 f5 87 b3 4f 13 61 45 6d 8d 09 81 7d 32
  132.    30: bd 8f 40 eb 86 b7 7b 0b f0 95 21 22 5c 6b 4e 82
  133.    40: 54 d6 65 93 ce 60 b2 1c 73 56 c0 14 a7 8c f1 dc
  134.    50: 12 75 ca 1f 3b be e4 d1 42 3d d4 30 a3 3c b6 26
  135.    60: 6f bf 0e da 46 69 07 57 27 f2 1d 9b bc 94 43 03
  136.    70: f8 11 c7 f6 90 ef 3e e7 06 c3 d5 2f c8 66 1e d7
  137.    80: 08 e8 ea de 80 52 ee f7 84 aa 72 ac 35 4d 6a 2a
  138.    90: 96 1a d2 71 5a 15 49 74 4b 9f d0 5e 04 18 a4 ec
  139.    a0: c2 e0 41 6e 0f 51 cb cc 24 91 af 50 a1 f4 70 39
  140.    b0: 99 7c 3a 85 23 b8 b4 7a fc 02 36 5b 25 55 97 31
  141.    c0: 2d 5d fa 98 e3 8a 92 ae 05 df 29 10 67 6c ba c9
  142.    d0: d3 00 e6 cf e1 9e a8 2c 63 16 01 3f 58 e2 89 a9
  143.    e0: 0d 38 34 1b ab 33 ff b0 bb 48 0c 5f b9 b1 cd 2e
  144.    f0: c5 f3 db 47 e5 a5 9c 77 0a a6 20 68 fe 7f c1 ad
  145.  
  146.    The key expansion operation consists of the following two loops and
  147.    intermediate step:
  148.  
  149.    for i = T, T+1, ..., 127 do
  150.      L[i] = PITABLE[L[i-1] + L[i-T]];
  151.  
  152.    L[128-T8] = PITABLE[L[128-T8] & TM];
  153.  
  154.    for i = 127-T8, ..., 0 do
  155.      L[i] = PITABLE[L[i+1] XOR L[i+T8]];
  156.  
  157.    (In the first loop, the addition of L[i-1] and L[i-T] is performed
  158.    modulo 256.)
  159.  
  160.    The "effective key" consists of the values L[128-T8],..., L[127].
  161.    The intermediate step's bitwise "and" operation reduces the search
  162.    space for L[128-T8] so that the effective number of key bits is T1.
  163.    The expanded key depends only on the effective key bits, regardless
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Rivest                       Informational                      [Page 3]
  171.  
  172. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  173.  
  174.  
  175.    of the supplied key K. Since the expanded key is not itself modified
  176.    during encryption or decryption, as a pragmatic matter one can expand
  177.    the key just once when encrypting or decrypting a large block of
  178.    data.
  179.  
  180. 3. Encryption algorithm
  181.  
  182.    The encryption operation is defined in terms of primitive "mix" and
  183.    "mash" operations.
  184.  
  185.    Here the expression "x rol k" denotes the 16-bit word x rotated left
  186.    by k bits, with the bits shifted out the top end entering the bottom
  187.    end.
  188.  
  189. 3.1 Mix up R[i]
  190.  
  191.    The primitive "Mix up R[i]" operation is defined as follows, where
  192.    s[0] is 1, s[1] is 2, s[2] is 3, and s[3] is 5, and where the indices
  193.    of the array R are always to be considered "modulo 4," so that R[i-1]
  194.    refers to R[3] if i is 0 (these values are
  195.  
  196.    "wrapped around" so that R always has a subscript in the range 0 to 3
  197.    inclusive):
  198.  
  199.    R[i] = R[i] + K[j] + (R[i-1] & R[i-2]) + ((~R[i-1]) & R[i-3]);
  200.    j = j + 1;
  201.    R[i] = R[i] rol s[i];
  202.  
  203.    In words: The next key word K[j] is added to R[i], and j is advanced.
  204.    Then R[i-1] is used to create a "composite" word which is added to
  205.    R[i]. The composite word is identical with R[i-2] in those positions
  206.    where R[i-1] is one, and identical to R[i-3] in those positions where
  207.    R[i-1] is zero. Then R[i] is rotated left by s[i] bits (bits rotated
  208.    out the left end of R[i] are brought back in at the right). Here j is
  209.    a "global" variable so that K[j] is always the first key word in the
  210.    expanded key which has not yet been used in a "mix" operation.
  211.  
  212. 3.2 Mixing round
  213.  
  214.    A "mixing round" consists of the following operations:
  215.  
  216.    Mix up R[0]
  217.    Mix up R[1]
  218.    Mix up R[2]
  219.    Mix up R[3]
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Rivest                       Informational                      [Page 4]
  227.  
  228. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  229.  
  230.  
  231. 3.3 Mash R[i]
  232.  
  233.    The primitive "Mash R[i]" operation is defined as follows (using the
  234.    previous conventions regarding subscripts for R):
  235.  
  236.    R[i] = R[i] + K[R[i-1] & 63];
  237.  
  238.    In words: R[i] is "mashed" by adding to it one of the words of the
  239.    expanded key. The key word to be used is determined by looking at the
  240.    low-order six bits of R[i-1], and using that as an index into the key
  241.    array K.
  242.  
  243. 3.4 Mashing round
  244.  
  245.    A "mashing round" consists of:
  246.  
  247.    Mash R[0]
  248.    Mash R[1]
  249.    Mash R[2]
  250.    Mash R[3]
  251.  
  252. 3.5 Encryption operation
  253.  
  254.    The entire encryption operation can now be described as follows. Here
  255.    j is a global integer variable which is affected by the mixing
  256.    operations.
  257.  
  258.         1. Initialize words R[0], ..., R[3] to contain the
  259.            64-bit input value.
  260.  
  261.         2. Expand the key, so that words K[0], ..., K[63] become
  262.            defined.
  263.  
  264.         3. Initialize j to zero.
  265.  
  266.         4. Perform five mixing rounds.
  267.  
  268.         5. Perform one mashing round.
  269.  
  270.         6. Perform six mixing rounds.
  271.  
  272.         7. Perform one mashing round.
  273.  
  274.         8. Perform five mixing rounds.
  275.  
  276.    Note that each mixing round uses four key words, and that there are
  277.    16 mixing rounds altogether, so that each key word is used exactly
  278.  
  279.  
  280.  
  281.  
  282. Rivest                       Informational                      [Page 5]
  283.  
  284. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  285.  
  286.  
  287.    once in a mixing round. The mashing rounds will refer to up to eight
  288.    of the key words in a data-dependent manner. (There may be
  289.    repetitions, and the actual set of words referred to will vary from
  290.    encryption to encryption.)
  291.  
  292. 4. Decryption algorithm
  293.  
  294.    The decryption operation is defined in terms of primitive operations
  295.    that undo the "mix" and "mash" operations of the encryption
  296.    algorithm. They are named "r-mix" and "r-mash" (r- denotes the
  297.    reverse operation).
  298.  
  299.    Here the expression "x ror k" denotes the 16-bit word x rotated right
  300.    by k bits, with the bits shifted out the bottom end entering the top
  301.    end.
  302.  
  303. 4.1 R-Mix up R[i]
  304.  
  305.    The primitive "R-Mix up R[i]" operation is defined as follows, where
  306.    s[0] is 1, s[1] is 2, s[2] is 3, and s[3] is 5, and where the indices
  307.    of the array R are always to be considered "modulo 4," so that R[i-1]
  308.    refers to R[3] if i is 0 (these values are "wrapped around" so that R
  309.    always has a subscript in the range 0 to 3 inclusive):
  310.  
  311.    R[i] = R[i] ror s[i];
  312.    R[i] = R[i] - K[j] - (R[i-1] & R[i-2]) - ((~R[i-1]) & R[i-3]);
  313.    j = j - 1;
  314.  
  315.    In words: R[i] is rotated right by s[i] bits (bits rotated out the
  316.    right end of R[i] are brought back in at the left). Here j is a
  317.    "global" variable so that K[j] is always the key word with greatest
  318.    index in the expanded key which has not yet been used in a "r-mix"
  319.    operation. The key word K[j] is subtracted from R[i], and j is
  320.    decremented. R[i-1] is used to create a "composite" word which is
  321.    subtracted from R[i].  The composite word is identical with R[i-2] in
  322.    those positions where R[i-1] is one, and identical to R[i-3] in those
  323.    positions where R[i-1] is zero.
  324.  
  325. 4.2 R-Mixing round
  326.  
  327.    An "r-mixing round" consists of the following operations:
  328.  
  329.    R-Mix up R[3]
  330.    R-Mix up R[2]
  331.    R-Mix up R[1]
  332.    R-Mix up R[0]
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Rivest                       Informational                      [Page 6]
  339.  
  340. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  341.  
  342.  
  343. 4.3 R-Mash R[i]
  344.  
  345.    The primitive "R-Mash R[i]" operation is defined as follows (using
  346.    the previous conventions regarding subscripts for R):
  347.  
  348.    R[i] = R[i] - K[R[i-1] & 63];
  349.  
  350.    In words: R[i] is "r-mashed" by subtracting from it one of the words
  351.    of the expanded key. The key word to be used is determined by looking
  352.    at the low-order six bits of R[i-1], and using that as an index into
  353.    the key array K.
  354.  
  355. 4.4 R-Mashing round
  356.  
  357.    An "r-mashing round" consists of:
  358.  
  359.    R-Mash R[3]
  360.    R-Mash R[2]
  361.    R-Mash R[1]
  362.    R-Mash R[0]
  363.  
  364. 4.5 Decryption operation
  365.  
  366.    The entire decryption operation can now be described as follows.
  367.    Here j is a global integer variable which is affected by the mixing
  368.    operations.
  369.  
  370.         1. Initialize words R[0], ..., R[3] to contain the 64-bit
  371.            ciphertext value.
  372.  
  373.         2. Expand the key, so that words K[0], ..., K[63] become
  374.            defined.
  375.  
  376.         3. Initialize j to 63.
  377.  
  378.         4. Perform five r-mixing rounds.
  379.  
  380.         5. Perform one r-mashing round.
  381.  
  382.         6. Perform six r-mixing rounds.
  383.  
  384.         7. Perform one r-mashing round.
  385.  
  386.         8. Perform five r-mixing rounds.
  387.  
  388. 5. Test vectors
  389.  
  390.    Test vectors for encryption with RC2 are provided below.
  391.  
  392.  
  393.  
  394. Rivest                       Informational                      [Page 7]
  395.  
  396. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  397.  
  398.  
  399.    All quantities are given in hexadecimal notation.
  400.  
  401.    Key length (bytes) = 8
  402.    Effective key length (bits) = 63
  403.    Key = 00000000 00000000
  404.    Plaintext = 00000000 00000000
  405.    Ciphertext = ebb773f9 93278eff
  406.  
  407.    Key length (bytes) = 8
  408.    Effective key length (bits) = 64
  409.    Key = ffffffff ffffffff
  410.    Plaintext = ffffffff ffffffff
  411.    Ciphertext = 278b27e4 2e2f0d49
  412.  
  413.    Key length (bytes) = 8
  414.    Effective key length (bits) = 64
  415.    Key = 30000000 00000000
  416.    Plaintext = 10000000 00000001
  417.    Ciphertext = 30649edf 9be7d2c2
  418.  
  419.    Key length (bytes) = 1
  420.    Effective key length (bits) = 64
  421.    Key = 88
  422.    Plaintext = 00000000 00000000
  423.    Ciphertext = 61a8a244 adacccf0
  424.  
  425.    Key length (bytes) = 7
  426.    Effective key length (bits) = 64
  427.    Key = 88bca90e 90875a
  428.    Plaintext = 00000000 00000000
  429.    Ciphertext = 6ccf4308 974c267f
  430.  
  431.    Key length (bytes) = 16
  432.    Effective key length (bits) = 64
  433.    Key = 88bca90e 90875a7f 0f79c384 627bafb2
  434.    Plaintext = 00000000 00000000
  435.    Ciphertext = 1a807d27 2bbe5db1
  436.  
  437.    Key length (bytes) = 16
  438.    Effective key length (bits) = 128
  439.    Key = 88bca90e 90875a7f 0f79c384 627bafb2
  440.    Plaintext = 00000000 00000000
  441.    Ciphertext = 2269552a b0f85ca6
  442.  
  443.    Key length (bytes) = 33
  444.    Effective key length (bits) = 129
  445.    Key = 88bca90e 90875a7f 0f79c384 627bafb2 16f80a6f 85920584
  446.          c42fceb0 be255daf 1e
  447.  
  448.  
  449.  
  450. Rivest                       Informational                      [Page 8]
  451.  
  452. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  453.  
  454.  
  455.    Plaintext = 00000000 00000000
  456.    Ciphertext = 5b78d3a4 3dfff1f1
  457.  
  458. 6. RC2 Algorithm Object Identifier
  459.  
  460.    The Object Identifier for RC2 in cipher block chaining mode is
  461.  
  462.    rc2CBC OBJECT IDENTIFIER
  463.      ::= {iso(1) member-body(2) US(840) rsadsi(113549)
  464.           encryptionAlgorithm(3) 2}
  465.  
  466.    RC2-CBC takes parameters
  467.  
  468.    RC2-CBCParameter ::= CHOICE {
  469.      iv IV,
  470.      params SEQUENCE {
  471.        version RC2Version,
  472.        iv IV
  473.      }
  474.    }
  475.  
  476.    where
  477.  
  478.    IV ::= OCTET STRING -- 8 octets
  479.    RC2Version ::= INTEGER -- 1-1024
  480.  
  481.    RC2 in CBC mode has two parameters: an 8-byte initialization vector
  482.    (IV) and a version number in the range 1-1024 which specifies in a
  483.    roundabout manner the number of effective key bits to be used for the
  484.    RC2 encryption/decryption.
  485.  
  486.    The correspondence between effective key bits and version number is
  487.    as follows:
  488.  
  489.    1. If the number EKB of effective key bits is in the range 1-255,
  490.       then the version number is given by Table[EKB], where the 256-byte
  491.       translation table Table[] is specified below. Table[] specifies a
  492.       permutation on the numbers 0-255; note that it is not the same
  493.       table that appears in the key expansion phase of RC2.
  494.  
  495.    2. If the number EKB of effective key bits is in the range
  496.       256-1024, then the version number is simply EKB.
  497.  
  498.       The default number of effective key bits for RC2 is 32. If RC2-CBC
  499.       is being performed with 32 effective key bits, the parameters
  500.       should be supplied as a simple IV, rather than as a SEQUENCE
  501.       containing a version and an IV.
  502.  
  503.  
  504.  
  505.  
  506. Rivest                       Informational                      [Page 9]
  507.  
  508. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  509.  
  510.  
  511.         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  512.  
  513.    00: bd 56 ea f2 a2 f1 ac 2a b0 93 d1 9c 1b 33 fd d0
  514.    10: 30 04 b6 dc 7d df 32 4b f7 cb 45 9b 31 bb 21 5a
  515.    20: 41 9f e1 d9 4a 4d 9e da a0 68 2c c3 27 5f 80 36
  516.    30: 3e ee fb 95 1a fe ce a8 34 a9 13 f0 a6 3f d8 0c
  517.    40: 78 24 af 23 52 c1 67 17 f5 66 90 e7 e8 07 b8 60
  518.    50: 48 e6 1e 53 f3 92 a4 72 8c 08 15 6e 86 00 84 fa
  519.    60: f4 7f 8a 42 19 f6 db cd 14 8d 50 12 ba 3c 06 4e
  520.    70: ec b3 35 11 a1 88 8e 2b 94 99 b7 71 74 d3 e4 bf
  521.    80: 3a de 96 0e bc 0a ed 77 fc 37 6b 03 79 89 62 c6
  522.    90: d7 c0 d2 7c 6a 8b 22 a3 5b 05 5d 02 75 d5 61 e3
  523.    a0: 18 8f 55 51 ad 1f 0b 5e 85 e5 c2 57 63 ca 3d 6c
  524.    b0: b4 c5 cc 70 b2 91 59 0d 47 20 c8 4f 58 e0 01 e2
  525.    c0: 16 38 c4 6f 3b 0f 65 46 be 7e 2d 7b 82 f9 40 b5
  526.    d0: 1d 73 f8 eb 26 c7 87 97 25 54 b1 28 aa 98 9d a5
  527.    e0: 64 6d 7a d4 10 81 44 ef 49 d6 ae 2e dd 76 5c 2f
  528.    f0: a7 1c c9 09 69 9a 83 cf 29 39 b9 e9 4c ff 43 ab
  529.  
  530. A. Intellectual Property Notice
  531.  
  532.    RC2 is a registered trademark of RSA Data Security, Inc. RSA's
  533.    copyrighted RC2 software is available under license from RSA Data
  534.    Security, Inc.
  535.  
  536. B. Author's Address
  537.  
  538.    Ron Rivest
  539.    RSA Laboratories
  540.    100 Marine Parkway, #500
  541.    Redwood City, CA  94065  USA
  542.  
  543.    Phone: (650) 595-7703
  544.    EMail: rsa-labs@rsa.com
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Rivest                       Informational                     [Page 10]
  563.  
  564. RFC 2268              RC2(r) Encryption Algorithm             March 1998
  565.  
  566.  
  567. C.  Full Copyright Statement
  568.  
  569.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  570.  
  571.    This document and translations of it may be copied and furnished to
  572.    others, and derivative works that comment on or otherwise explain it
  573.    or assist in its implementation may be prepared, copied, published
  574.    and distributed, in whole or in part, without restriction of any
  575.    kind, provided that the above copyright notice and this paragraph are
  576.    included on all such copies and derivative works.  However, this
  577.    document itself may not be modified in any way, such as by removing
  578.    the copyright notice or references to the Internet Society or other
  579.    Internet organizations, except as needed for the purpose of
  580.    developing Internet standards in which case the procedures for
  581.    copyrights defined in the Internet Standards process must be
  582.    followed, or as required to translate it into languages other than
  583.    English.
  584.  
  585.    The limited permissions granted above are perpetual and will not be
  586.    revoked by the Internet Society or its successors or assigns.
  587.  
  588.    This document and the information contained herein is provided on an
  589.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  590.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  591.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  592.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  593.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Rivest                       Informational                     [Page 11]
  619.  
  620.