<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc comments="yes"?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc rfcedstyle="yes"?>

<rfc category="std" number="7146" ipr="trust200902"
 updates="3720, 3723, 3821, 3822, 4018, 4172, 4173, 4174, 5040, 5041, 5042,
5043, 5044, 5045, 5046, 5047, 5048" submissionType="IETF" consensus="yes">

  <front>
    <title abbrev="RFC 3723 Reqs Update for IPsec v3">Securing Block Storage Protocols over IP:
    RFC&nbsp;3723&nbsp;Requirements&nbsp;Update&nbsp;for&nbsp;IPsec&nbsp;v3</title>

    <author fullname="David L. Black" initials="D." surname="Black">
      <organization abbrev="EMC">EMC Corporation</organization>
      <address>
        <postal>
          <street>176 South St.</street>
          <city>Hopkinton</city>
          <region>MA</region>
          <code>01748</code>
          <country>USA</country>
        </postal>
        <phone>+1 508 293-7953</phone>
        <email>david.black@emc.com</email>
      </address>
    </author>

    <author fullname="Paul Koning" initials="P." surname="Koning">
      <organization>Dell</organization>
      <address>
        <postal>
          <street>300 Innovative Way</street>
          <city>Nashua</city>
          <region>NH</region>
          <code>03062</code>
          <country>USA</country>
        </postal>
        <phone>+1 603 249-7703</phone>
        <email>paul_koning@Dell.com</email>
      </address>
    </author>

    <date month="March" year="2014"/>

    <area>Transport</area>

    <workgroup>Storage Maintenance (storm)</workgroup>

    <keyword>IPsec</keyword>

    <abstract>
      <t>RFC 3723 specifies IPsec requirements for block storage protocols
      over IP (e.g., Internet Small Computer System Interface (iSCSI))
      based on IPsec v2 (RFC 2401 and related RFCs);
      those requirements have subsequently been applied to remote direct data
      placement protocols, e.g., the Remote Direct Memory Access Protocol
      (RDMAP). This document updates RFC 3723's IPsec
      requirements to IPsec v3 (RFC 4301 and related RFCs) and makes some
      changes to required algorithms based on developments in cryptography
      since RFC 3723 was published.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t><xref target="RFC3723"/> specifies IPsec requirements for
      block storage protocols over IP (e.g., iSCSI <xref target="RFC3720"/>)
      based on IPsec v2 (<xref target="RFC2401"/> and related RFCs);
      those requirements have subsequently been applied to remote direct data
      placement protocols, e.g., RDMAP <xref target="RFC5040"/>. This document
      updates RFC 3723's IPsec requirements to IPsec v3 (<xref
      target="RFC4301"/> and related RFCs) to reflect developments since
      RFC 3723 was published.</t>

      <t>For brevity, this document uses the term "block storage protocols" to
      refer to all protocols to which RFC 3723's requirements apply; see <xref
      target="other-RFCs"/> for details.</t>

      <t>In addition to the IPsec v2 requirements in RFC 3723,
      IPsec v3, as specified in <xref target="RFC4301"/> and
      related RFCs (e.g., IKEv2 <xref target="RFC5996"/>), SHOULD be
      implemented for block storage protocols. Retention of the
      mandatory requirement for IPsec v2 provides interoperability
      with existing implementations, and the strong recommendation
      for IPsec v3 encourages implementers to move forward to that
      newer version of IPsec.</t>

      <t>Cryptographic developments since the publication of RFC 3723
      necessitate changes to the encryption transform requirements for IPsec
      v2, as explained further in <xref target="Conf-xform"/>; these updated
      requirements also apply to IPsec v3.</t>

      <t>Block storage protocols can be expected to operate at high data rates
      (multiple gigabits/second). The cryptographic requirements in this
      document are strongly influenced by that expectation; an important
      example is that Triple Data Encryption Standard Cipher Block Chaining
      (3DES CBC) is no longer recommended for block storage
      protocols due to the frequent rekeying impacts of 3DES's 64-bit block
      size at high data rates.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in
        <xref target="RFC2119"></xref>.</t>
      </section>

      <section title="Summary of Changes to RFC 3723">
        <t>This document makes the following changes to RFC 3723:<list
            style="symbols">
            <t>Adds requirements that IPsec v3 SHOULD be implemented
            (Encapsulating Security Payload (ESPv3) and IKEv2)
            in addition to IPsec v2 (see <xref target="intro"/>).</t>

            <t>Requires extended sequence numbers for both ESPv2 and ESPv3
            (see <xref target="ESP-reqts"/>).</t>

            <t>Clarifies key-size requirements for AES CBC MAC with XCBC
            extensions (MUST implement 128-bit keys; see <xref
            target="Auth-xform"/>).</t>

            <t>Adds IPsec v3 requirements for AES Galois Message
            Authentication Code (GMAC) and Galois/Counter Mode (GCM)
            (SHOULD implement when IKEv2 is supported; see
            Sections&nbsp;<xref target="Auth-xform" format="counter"/>
            and <xref target="Conf-xform" format="counter"/>).</t>

            <t>Removes implementation requirements for 3DES CBC and
            AES in Counter mode (AES CTR) (changes requirements for both to
            "MAY implement"). Adds a "MUST implement" requirement for
            AES CBC (see <xref target="Conf-xform"/>).</t>

            <t>Adds specific IKEv2 implementation requirements (see <xref
            target="IKE-reqts"/>).</t>

            <t>Removes the requirement that IKEv1 use UDP port&nbsp;500
            (see <xref target="IKE-reqts"/>).</t>

            <t>Allows the use of the Online Certificate Status Protocol (OCSP)
            in addition to Certificate Revocation Lists (CRLs) to
            check certificates, and changes the Diffie-Hellman group size
            recommendation to a minimum of 2048&nbsp;bits
            (see <xref target="IKE-reqts"/>).</t>
          </list></t>
      </section>

      <section anchor="other-RFCs" title="Other Updated RFCs">
        <t>RFC 3723's IPsec requirements have been applied to a number of
        protocols. For that reason, in addition to updating RFC 3723's IPsec
        requirements, this document also updates the IPsec requirements for
        each protocol that uses RFC 3723; that is, the following RFCs are updated
        -- in each case, the update is solely to the IPsec requirements:</t>

        <t><list style="symbols">
            <t><xref target="RFC3720"/> "Internet Small Computer Systems
            Interface (iSCSI)"</t>

            <t><xref target="RFC3821"/> "Fibre Channel Over TCP/IP (FCIP)"</t>

            <t><xref target="RFC3822"/> "Finding Fibre Channel over TCP/IP
            (FCIP) Entities Using Service Location Protocol version 2
            (SLPv2)"</t>

            <t><xref target="RFC4018"/> "Finding Internet Small Computer
            Systems Interface (iSCSI) Targets and Name Servers by Using
            Service Location Protocol version 2 (SLPv2)"</t>

            <t><xref target="RFC4172"/> "iFCP - A Protocol for Internet Fibre
            Channel Storage Networking"</t>

            <t><xref target="RFC4173"/> "Bootstrapping Clients using the
            Internet Small Computer System Interface (iSCSI) Protocol"</t>

            <t><xref target="RFC4174"/> "The IPv4 Dynamic Host Configuration
            Protocol (DHCP) Option for the Internet Storage Name Service"</t>

            <t><xref target="RFC5040"/> "A Remote Direct Memory Access
            Protocol Specification"</t>

            <t><xref target="RFC5041"/> "Direct Data Placement over Reliable
            Transports"</t>

            <t><xref target="RFC5042"/> "Direct Data Placement Protocol (DDP)
            / Remote Direct Memory Access Protocol (RDMAP) Security"</t>

            <t><xref target="RFC5043"/> "Stream Control Transmission Protocol
            (SCTP) Direct Data Placement (DDP) Adaptation"</t>

            <t><xref target="RFC5044"/> "Marker PDU Aligned Framing for TCP
            Specification"</t>

            <t><xref target="RFC5045"/> "Applicability of Remote Direct Memory
            Access Protocol (RDMA) and Direct Data Placement (DDP)"</t>

            <t><xref target="RFC5046"/> "Internet Small Computer System
            Interface (iSCSI) Extensions for Remote Direct Memory Access
            (RDMA)"</t>

            <t><xref target="RFC5047"/> "DA: Datamover Architecture for the
            Internet Small Computer System Interface (iSCSI)"</t>

            <t><xref target="RFC5048"/> "Internet Small Computer System
            Interface (iSCSI) Corrections and Clarifications"</t>
          </list><xref target="RFC3721"/> and <xref target="RFC5387"/> are not
        updated by this document, as their usage of RFC 3723 does not
        encompass its IPsec requirements.</t>

        <t>In addition, this document's updated IPsec requirements apply to
        the new specifications for iSCSI <xref target="RFC7143"/> and
        iSCSI Extensions for RDMA (iSER) <xref target="RFC7145"/>.</t>

        <t>This document uses the term "block storage protocols" to refer to
        the protocols (listed above) to which RFC 3723's requirements (as
        updated by the requirements in this document) apply.</t>
      </section>
    </section>

    <section anchor="ESP-reqts" title="ESP Requirements">
      <t>RFC 3723 requires that implementations MUST support IPsec ESPv2 <xref
      target="RFC2406"/> in tunnel mode as part of IPsec v2 to provide
      security for both control packets and data packets; and that when ESPv2
      is utilized, per-packet data origin authentication, integrity, and replay
      protection MUST be provided.</t>

      <t>This document modifies RFC 3723 to require that implementations
      SHOULD also support IPsec ESPv3 <xref target="RFC4303"/> in tunnel mode
      as part of IPsec v3 to provide security for both control packets and
      data packets; per-packet data origin authentication, integrity, and
      replay protection MUST be provided when ESPv3 is utilized.</t>

      <t>At the high speeds at which block storage protocols are expected to
      operate, a single IPsec security association (SA) could rapidly
      exhaust the ESP 32-bit sequence number space,
      requiring frequent rekeying of the SA, as rollover of the
      ESP sequence number within a single SA is prohibited for both ESPv2
      <xref target="RFC2406"/> and ESPv3 <xref target="RFC4303"/>. In order
      to provide the means to avoid this potentially undesirable frequent
      rekeying, implementations that are capable of operating at speeds of 1
      gigabit/second or higher MUST implement extended (64-bit) sequence
      numbers for ESPv2 (and ESPv3, if supported) and SHOULD use extended
      sequence numbers for all block storage protocol traffic. Extended
      sequence number negotiation as part of security association
      establishment is specified in <xref target="RFC4304"/> for IKEv1 and
      <xref target="RFC5996"/> for IKEv2.</t>

      <section anchor="Auth-xform"
               title="Data Origin Authentication and Data Integrity Transforms">
        <t>RFC 3723 requires that:</t>

        <t><list style="symbols">
            <t>HMAC-SHA1 MUST be implemented in the form of HMAC-SHA-1-96
            <xref target="RFC2404"/>.</t>

            <t>AES CBC MAC with XCBC extensions SHOULD be implemented <xref
            target="RFC3566"/>.</t>
          </list>This document clarifies RFC 3723's key-size requirements for
        implementations of AES CBC MAC with XCBC extensions; 128-bit keys MUST
        be supported, and other key sizes MAY also be supported.</t>

        <t>This document also adds a requirement for IPsec v3:<list
            style="symbols">
            <t>Implementations that support IKEv2 <xref target="RFC5996"/>
            SHOULD also implement AES GMAC <xref target="RFC4543"/>. AES GMAC
            implementations MUST support 128-bit keys and MAY support other
            key sizes.</t>
          </list></t>

        <t>The rationale for the added requirement is that GMAC is more
        amenable to hardware implementations that may be preferable for the
        high data rates at which block storage protocols can be expected to
        operate.</t>
      </section>

      <section anchor="Conf-xform"
               title="Confidentiality Transform Requirements">
        <t>RFC 3723 requires that:<list style="symbols">
            <t>3DES in CBC mode (3DES CBC) <xref target="RFC2451"/> <xref
            target="triple-des-spec"/> MUST be supported.</t>

            <t>AES in Counter mode (AES CTR) <xref target="RFC3686"/> SHOULD
            be supported.</t>

            <t>NULL encryption <xref target="RFC2410"/> MUST be supported.</t>
          </list></t>

        <t>The above requirements from RFC 3723 regarding 3DES CBC and AES CTR
        are replaced in this document by requirements that both 
        3DES CBC and AES CTR MAY be implemented. The NULL encryption
        requirement is not changed by this document. The 3DES CBC
        requirement matched the basic encryption interoperability requirement
        for IPsec v2. At the time of RFC 3723's publication, AES in
        Counter mode was the encryption transform that was most amenable
        to hardware implementation, as hardware implementation may be
        preferable for the high data rates at which block storage
        protocols can be expected to operate. This document changes both
        of these requirements, based on cryptographic developments since
        the publication of RFC 3723.</t>

        <t>The requirement for 3DES CBC has become problematic due to 3DES's
        64-bit block size; i.e., the core cipher encrypts or decrypts 64 bits
        at a time. Security weaknesses in encryption start to appear as the
        amount of data encrypted under a single key approaches the birthday
        bound of 32&nbsp;GiB (gibibytes) for a cipher with a 64-bit
        block size; see <xref target="birthday-bound"/>
        and <xref target="triple-des-birthday"/>. It is prudent to
        rekey well before that bound is reached, and 32&nbsp;GiB or
        some significant fraction thereof is less than the amount of data that
        a block storage protocol may transfer in a single session. This may
        require frequent rekeying, e.g., to obtain an order-of-magnitude (10x)
        safety margin by rekeying after 3&nbsp;GiB on a multi-gigabit/sec
        link. In contrast, AES has a 128-bit block size, which results
        in a much larger birthday bound (2^68&nbsp;bytes);
        see <xref target="birthday-bound"/>. &nbsp;AES
        CBC <xref target="RFC3602"/> is the primary mandatory-to-implement
        encryption transform for interoperability and hence is the
        appropriate mandatory-to-implement transform replacement for 3DES
        CBC.</t>

        <t>AES in Counter mode (AES CTR) is no longer the encryption transform
        that is most amenable to hardware implementation. That
        characterization now applies to AES GCM <xref
        target="RFC4106"/>, which provides both encryption and integrity
        protection in a single cryptographic mechanism (in contrast, neither
        HMAC-SHA1 nor AES CBC MAC with XCBC extensions is well suited for
        hardware implementation, as both transforms do not pipeline well). AES
        GCM is also capable of providing confidentiality protection for the
        IKEv2 key exchange protocol, but not the IKEv1 protocol <xref
        target="RFC5282"/>, and therefore the new AES GCM "SHOULD" 
        requirement is based on the presence of support for IKEv2.</t>

        <t>For the reasons described in the preceding paragraphs, the
        confidentiality transform requirements in RFC 3723 are replaced by the
        following:<list style="symbols">
            <t>3DES in CBC mode MAY be implemented (replaces RFC 3723's "MUST
            implement" requirement).</t>

            <t>AES in Counter mode (AES CTR) MAY be implemented (replaces
            RFC&nbsp;3723's "SHOULD implement" requirement).</t>

            <t>AES in CBC mode MUST be implemented. AES CBC implementations
            MUST support 128-bit keys and MAY support other key sizes.</t>

            <t>Implementations that support IKEv2 SHOULD also implement AES
            GCM. AES GCM implementations MUST support 128-bit keys and MAY
            support other key sizes.</t>

            <t>NULL encryption <xref target="RFC2410"/> MUST be supported.</t>
          </list>The requirement for support of NULL encryption enables
        the use of SAs that provide data origin authentication and data
        integrity, but not confidentiality.</t>

        <t>Other transforms MAY be implemented in addition to those listed
        above.</t>
      </section>
    </section>

    <section anchor="IKE-reqts" title="IKEv1 and IKEv2 Requirements">
      <t>Note: To avoid ambiguity, the original IKE protocol <xref
      target="RFC2409"/> is referred to as "IKEv1" in this document.</t>

      <t>This document adds requirements for IKEv2 usage with block storage
      protocols and makes the following two changes to the IKEv1 requirements
      in RFC 3723 (the new Diffie-Hellman (DH) group requirement also
      applies to IKEv2):</t>

      <t><list style="symbols">
          <t>When DH groups are used, a DH group of at least 2048 bits
          SHOULD be offered as a part of all proposals to create IPsec
          security associations. The recommendation for the use of
          1024&nbhy;bit DH groups with 3DES CBC and HMAC-SHA1 has been
          removed; the use of 1024&nbhy;bit DH groups is NOT RECOMMENDED,
          and</t>

          <t>The requirement to use UDP port 500 is removed in order to allow
          NAT traversal <xref target="RFC3947"/>.</t>
        </list></t>

      <t>There are no other changes to RFC 3723's IKEv1 requirements, but many
      of them are restated in this document in order to provide context for
      the new IKEv2 requirements.</t>

      <t>RFC 3723 requires that IKEv1 <xref target="RFC2409"/> be supported
      for peer authentication, negotiation of security associations, and key
      management, using the IPsec domain of interpretation (DOI)
      <xref target="RFC2407"/>, and further requires that
      manual keying not be used since it does not provide the
      rekeying support necessary for operation at high data rates. This
      document adds a requirement that IKEv2 <xref target="RFC5996"/> SHOULD
      be supported for peer authentication, negotiation of security
      associations, and key management. The prohibition of manual keying
      as stated in RFC&nbsp;3723 is extended to IKEv2; manual keying
      MUST NOT be used with any version of IPsec for protocols to which
      the requirements in this document apply.</t>

      <t>RFC 3723's requirements for IKEv1 mode implementation and usage are
      unchanged; this document does not extend those requirements to IKEv2
      because IKEv2 does not have modes.</t>

      <t>When IPsec is used, the receipt of an IKEv1 Phase 2 delete message or
      an IKEv2 INFORMATIONAL exchange that deletes the SA SHOULD NOT be
      interpreted as a reason for tearing down the block storage protocol
      connection (e.g., TCP-based). If additional traffic is sent, a new SA
      will be created to protect that traffic.</t>

      <t>The method used to determine whether a block storage protocol
      connection should be established using IPsec is regarded as an issue of
      IPsec policy administration and thus is not defined in this document.
      The method used by an implementation that supports both IPsec v2 and v3
      to determine which versions of IPsec are supported by a block
      storage protocol peer is also regarded as an issue of IPsec policy
      administration and thus is also not defined in this document. If both
      IPsec v2 and v3 are supported by both endpoints of a block storage
      protocol connection, the use of IPsec v3 is RECOMMENDED.</t>

      <section title="Authentication Requirements">
        <t>The authentication requirements for IKEv1 are unchanged by this
        document but are restated here for context, along with the
        authentication requirements for IKEv2:</t>

        <t><list style="letters">
            <t>Peer authentication using a pre-shared cryptographic key MUST
            be supported. Certificate-based peer authentication using digital
            signatures MAY be supported. For IKEv1 <xref target="RFC2409"/>,
            peer authentication using the public key encryption methods
            specified in Sections&nbsp;5.2 and 5.3 of <xref target="RFC2409"/>
            SHOULD NOT be used.</t>

            <t>When digital signatures are used for authentication, all IKEv1
            and IKEv2 negotiators SHOULD use Certificate Request Payload(s) to
            specify the certificate authority and SHOULD check the certificate
            validity via the pertinent Certificate Revocation List (CRL) or
            the use of the Online Certificate Status Protocol (OCSP) <xref
            target="RFC6960"/> before accepting a PKI certificate for use in
            authentication. OCSP support within the IKEv2 protocol is
            specified in <xref target="RFC4806"/>.</t>

            <t>IKEv1 implementations MUST support Main Mode and SHOULD support
            Aggressive Mode. Main Mode with the pre-shared key authentication
            method SHOULD NOT be used when either the initiator or the target
            uses dynamically assigned IP addresses. While in many cases
            pre-shared keys offer good security, situations in which
            dynamically assigned addresses are used force the use of a group
            pre-shared key, which creates vulnerability to a man-in-the-middle
            attack. These requirements do not apply to IKEv2 because it has no
            modes.</t>

            <t>In the IKEv1 Phase 2 Quick Mode, in exchanges for creating the
            Phase&nbsp;2 SA, the Identification Payload MUST be present. This
            requirement does not apply to IKEv2 because it has no modes.</t>

            <t>The following identification type requirements apply to IKEv1.
            ID_IPV4_ADDR, ID_IPV6_ADDR (if the protocol stack supports IPv6),
            and ID_FQDN Identification Types MUST be supported; ID_USER_FQDN
            SHOULD be supported. The IP Subnet, IP Address Range,
            ID_DER_ASN1_DN, and ID_DER_ASN1_GN Identification Types SHOULD NOT
            be used. The ID_KEY_ID Identification Type MUST NOT be used.</t>

            <t>When IKEv2 is supported, the following identification
            requirements apply. ID_IPV4_ADDR, ID_IPV6_ADDR (if the protocol
            stack supports IPv6), and ID_FQDN Identification Types MUST be
            supported; ID_RFC822_ADDR SHOULD be supported. The ID_DER_ASN1_DN
            and ID_DER_ASN1_GN Identification Types SHOULD NOT be used. The
            ID_KEY_ID Identification Type MUST NOT be used.</t>
          </list></t>

        <t>The reasons for the identification requirements in items e and f
        above are as follows:<list style="symbols">
            <t>IP Subnet and IP Address Range are too broad to usefully
            identify an iSCSI endpoint.</t>

            <t>The _DN and _GN types are X.500 identities; it is usually
            better to use an identity from subjectAltName in a PKI
            certificate.</t>

            <t>ID_KEY_ID is an opaque identifier that is not interoperable
            among different IPsec implementations as specified. Heterogeneity
            in some block storage protocol implementations can be expected
            (e.g., iSCSI initiator vs. iSCSI target implementations), and
            hence heterogeneity among IPsec implementations is important.</t>
          </list></t>
      </section>

      <section title="DH Group and PRF Requirements">
        <t>This document does not change the support requirements for
        Diffie-Hellman (DH) groups and Pseudo-Random Functions (PRFs). See
        <xref target="RFC4109"/> for IKEv1 requirements and <xref
        target="RFC4307"/> for IKEv2 requirements. Implementers are advised to
        check for subsequent RFCs that update either of these RFCs, as such
        updates may change these requirements.</t>

        <t>When DH groups are used, a DH group of at least 2048 bits SHOULD be
        offered as a part of all proposals to create IPsec security
        associations for both IKEv1 and IKEv2.</t>

        <t>RFC 3723 requires that support for perfect forward secrecy in
        the IKEv1 Quick Mode key exchange MUST be implemented.
        This document extends that requirement to IKEv2; support for
        perfect forward secrecy in the CREATE_CHILD_SA key exchange MUST be
        implemented for the use of IPsec with block storage protocols.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This entire document is about security.</t>

      <t>The security considerations sections of all of the referenced RFCs
      apply, and particular note should be taken of the security
      considerations for the encryption transforms whose requirement levels
      are changed by this RFC:<list style="symbols">
          <t>AES GMAC <xref target="RFC4543"/> (new requirement -- SHOULD be
          supported when IKEv2 is supported),</t>

          <t>3DES CBC <xref target="RFC2451"/> (changed from "MUST be
          supported" to "MAY be supported"),</t>

          <t>AES CTR <xref target="RFC3686"/> (changed from "SHOULD be
          supported" to "MAY be supported"),</t>

          <t>AES CBC <xref target="RFC3602"/> (new requirement -- MUST be
          supported), and</t>

          <t>AES GCM <xref target="RFC4106"/> (new requirement -- SHOULD be
          supported when IKEv2 is supported).</t>
        </list></t>

      <t>Of particular interest are the security considerations concerning the
      use of AES GCM <xref target="RFC4106"/> and AES GMAC <xref
      target="RFC4543"/>; both modes are vulnerable to catastrophic forgery
      attacks if a nonce is ever repeated with a given key.</t>

      <t>The requirement level for 3DES CBC has been reduced, based on
      considerations for high-speed implementations; 3DES CBC remains an
      optional encryption transform that may be suitable for implementations
      limited to operating at lower speeds where the required rekeying
      frequency for 3DES is acceptable.</t>

      <t>The requirement level for AES CTR has been reduced, based solely on
      hardware implementation considerations that favor AES GCM, as opposed to
      changes in AES CTR's security properties. AES CTR remains an optional
      security transform that is suitable for use in general, as it does not
      share 3DES CBC's requirement for frequent rekeying when operating at
      high data rates.</t>

      <t>Key sizes with comparable strength SHOULD be used for the
      cryptographic algorithms and transforms for any individual IPsec
      security association. See Section 5.6 of <xref target="SP800-57"/> for
      further discussion.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="triple-des-spec">
        <front>
          <title>American National Standard for Financial Services X9.52-1998
          - Triple Data Encryption Algorithm Modes of Operation</title>
          <author fullname="American Bankers Association">
            <organization>American Bankers Association (ABA)</organization>
          </author>
          <date day="29" month="July" year="1998"/>
        </front>
      </reference>

      <reference anchor="triple-des-birthday"
                 target="http://eprint.iacr.org/2012/623">
        <front>
          <title>Impossible plaintext cryptanalysis and probable-plaintext
          collision attacks of 64-bit block cipher modes (Cryptology ePrint
          Archive: Report 2012/623)</title>
          <author fullname="David McGrew" initials="D." surname="McGrew">
            <organization/>
          </author>
          <date day="20" month="November" year="2012"/>
        </front>
      </reference>

      <reference anchor="SP800-57"
                 target="http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf">
        <front>
          <title>NIST Special Publication 800-57: Recommendation for Key
          Management - Part 1: General (Revision 3)</title>
          <author fullname="Elaine Barker" initials="E." surname="Barker">
            <organization>Bark</organization>
          </author>
          <author fullname="William Barker" initials="W." surname="Barker">
            <organization/>
          </author>
          <author fullname="William Burr" initials="W." surname="Burr">
            <organization/>
          </author>
          <author fullname="William Polk" initials="W." surname="Polk">
            <organization/>
          </author>
          <author fullname="Miles Smid" initials="M." surname="Smid">
            <organization/>
          </author>
          <date month="July" year="2012"/>
        </front>
      </reference>

<!-- draft-ietf-storm-iscsi-cons (RFC 7143) -->
<reference anchor="RFC7143">
<front>
<title>Internet Small Computer System Interface (iSCSI) Protocol (Consolidated)</title>
<author initials='M' surname='Chadalapaka' fullname='Mallikarjun Chadalapaka'>
    <organization />
</author>
<author initials='J' surname='Satran' fullname='Julian Satran'>
    <organization />
</author>
<author initials='K' surname='Meth' fullname='Kalman Meth'>
    <organization />
</author>
<author initials='D' surname='Black' fullname='David Black'>
    <organization />
</author>
<date month='March' year='2014' />
</front>
<seriesInfo name='RFC' value='7143' />
</reference>

<!-- draft-ietf-storm-iser (RFC 7145) -->
<reference anchor="RFC7145">
<front>
<title>Internet Small Computer System Interface (iSCSI) Extensions
for the Remote Direct Memory Access (RDMA) Specification</title>
<author initials='M' surname='Ko' fullname='Mike Ko'>
    <organization />
</author>
<author initials='A' surname='Nezhinsky' fullname='Alexander Nezhinsky'>
    <organization />
</author>
<date month='March' year='2014' />
</front>
<seriesInfo name='RFC' value='7145' />
</reference>

      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.2401'?>

      <?rfc include='reference.RFC.2404'?>

      <?rfc include='reference.RFC.2406'?>

      <?rfc include='reference.RFC.2407'?>

      <?rfc include='reference.RFC.2409'?>

      <?rfc include='reference.RFC.2410'?>

      <?rfc include='reference.RFC.2451'?>

      <?rfc include='reference.RFC.3566'?>

      <?rfc include='reference.RFC.3602'?>

      <?rfc include='reference.RFC.3686'?>

      <?rfc include='reference.RFC.3720'?>

      <?rfc include='reference.RFC.3723'?>

      <?rfc include='reference.RFC.3821'?>

      <?rfc include='reference.RFC.3822'?>

      <?rfc include='reference.RFC.3947'?>

      <?rfc include='reference.RFC.4018'?>

      <?rfc include='reference.RFC.4106'?>

      <?rfc include='reference.RFC.4109'?>

      <?rfc include='reference.RFC.4172'?>

      <?rfc include='reference.RFC.4173'?>

      <?rfc include='reference.RFC.4174'?>

      <?rfc include='reference.RFC.4301'?>

      <?rfc include='reference.RFC.4303'?>

      <?rfc include='reference.RFC.4304'?>

      <?rfc include='reference.RFC.4307'?>

      <?rfc include='reference.RFC.4543'?>

      <?rfc include='reference.RFC.5040'?>

      <?rfc include='reference.RFC.5041'?>

      <?rfc include='reference.RFC.5042'?>

      <?rfc include='reference.RFC.5043'?>

      <?rfc include='reference.RFC.5044'?>

      <?rfc include='reference.RFC.5046'?>

      <?rfc include='reference.RFC.5048'?>

      <?rfc include='reference.RFC.5282'?>

      <?rfc include='reference.RFC.5996'?>

      <?rfc include='reference.RFC.6960'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.3721'?>

      <?rfc include='reference.RFC.4806'?>

      <?rfc include='reference.RFC.5045'?>

      <?rfc include='reference.RFC.5047'?>

      <?rfc include='reference.RFC.5387'?>
    </references>

    <section anchor="birthday-bound" title="Block Cipher Birthday Bounds">
      <t>This appendix provides the birthday bounds for the 3DES and AES
      ciphers based on <xref target="triple-des-birthday"/>, which states:
      "Theory advises against using a w-bit block cipher to encrypt more than
      2^(w/2) blocks with a single key; this is known as the birthday
      bound".</t>

      <t>For a cipher with a 64-bit block size (e.g., 3DES), w = 64, so the
      birthday bound is 2^32 blocks. As each block contains 8 (2^3) bytes, the
      birthday bound is 2^35 bytes = 2^5 gibibytes, i.e., 32 GiB, where 1
      gibibyte (GiB) = 2^30 bytes. Note that a gigabyte (decimal quantity) is
      not the same as a gibibyte (binary quantity); 1 gigabyte (GB) = 10^6
      bytes.</t>

      <t>For a cipher with a 128-bit block size (e.g., AES), w = 128, so the
      birthday bound is 2^64 blocks. As each block contains 16 (2^4) bytes,
      the birthday bound is 2^68 bytes = 2^8 exbibytes, i.e., 256&nbsp;EiB,
      where 1 exbibyte (EiB) = 2^60 bytes. Note that an exabyte (decimal
      quantity) is not the same as an exbibyte (binary quantity);
      1 exabyte (EB) = 10^9 bytes.</t>
    </section>

    <section title="Contributors">
      <t>David McGrew's observations about the birthday bound implications of
      3DES's 64-bit block size on the ipsec@ietf.org mailing list led to
      changing from 3DES CBC to AES CBC as the mandatory-to-implement
      encryption algorithm, based on the birthday bound discussion
      in <xref target="birthday-bound"/>.</t>

      <t>The original authors of RFC 3723 were Bernard Aboba, Joshua Tseng,
      Jesse Walker, Venkat Rangan, and Franco Travostino. Comments from Francis
      Dupont, Yaron Sheffer, Tom Talpey, Sean Turner, and Tom Yu have improved
      this document and are gratefully acknowledged.</t>
    </section>
  </back>
</rfc>
