<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<?rfc comments="yes"?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-storm-ipsec-ips-update-00"
     ipr="trust200902"
     updates="3720, 3723, 3821, 3822, 4018, 4172, 4173, 4174, 5040, 5041, 5042,  5043, 5044, 5045, 5046, 5047, 5048">
  <front>
    <title abbrev="">IP Storage: IPsec Requirements Update for IPsec
    v3</title>

    <author fullname="David Black" initials="D." surname="Black">
      <organization>EMC</organization>

      <address>
        <postal>
          <street>176 South Street</street>

          <!-- Reorder these if your country does things differently -->

          <city>Hopkinton</city>

          <region>MA</region>

          <code>01748</code>

          <country>US</country>
        </postal>

        <phone>+1 508 293-7953</phone>

        <email>david.black@emc.com</email>

        <!-- uri and facsimile elements may also be added -->
      </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>US</country>
        </postal>

        <phone>+1 603 249-7703</phone>

        <email>paul_koning@Dell.com</email>
      </address>
    </author>

    <date day="" month="" year="2013"/>

    <area>Transport</area>

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

    <keyword>IPsec</keyword>

    <abstract>
      <t>RFC 3723 includes requirements for IPsec usage with IP Storage
      protocols (e.g., iSCSI) based on IPsec v2 (RFC 2401 and related RFCs).
      This document updates those requirements to IPsec v3 (RFC 4301 and
      related RFCs) and updates implementation requirements to reflect
      developments in cryptography since RFC 3723 was published.</t>

      <t>[RFC Editor: The "Updates:" list above has been truncated by xml2rfc.
      The complete list is - Updates: 3720, 3723, 3821, 3822, 4018, 4172,
      4173, 4174, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048 (if
      approved) ]</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>RFC 3723 <xref target="RFC3723"/> includes requirements for use of
      IPsec with IP Storage protocols (e.g., iSCSI) based on IPsec v2 (RFC
      2401 <xref target="RFC2401"/> and related RFCs). This document updates
      those requirements to include IPsec v3 (RFC 4301<xref target="RFC4301"/>
      and related RFCs) to reflect developments since RFC 3723 was published.
      IP storage protocols can be expected to operate at high data rates
      (multiple Gigabits/second); the requirements in this document are
      strongly influenced by that expectation, and hence may not be
      appropriate for other IPsec usage that does not involve high data
      rates.</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 use of IPsec with
      IP 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>

      <section title="Requirements Language">
        <t>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 <xref
        target="RFC2119">RFC 2119</xref>.</t>
      </section>

      <section title="Updated RFCs">
        <t>The requirements for IPsec usage with IP storage in RFC 3723 are
        used by a number of protocols. For that reason, beyond updating RFC
        3723, this document also updates the IPsec requirements for each
        protocol specification that uses RFC 3723, i.e., the following RFCs in
        addition to RFC 3723:</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, these updated requirements apply to the new
        specifications for iSCSI (<xref target="I-D.ietf-storm-iscsi-cons"/>)
        and iSER ( <xref target="I-D.ietf-storm-iser"/>).</t>
      </section>
    </section>

    <section 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>In addition, at the high speeds at which IP storage protocols are
      expected to operate, a single IPsec SA could rapidly cycle through the
      ESP 32-bit sequence number space. In view of this, implementations that
      are capable of operating at speeds of 1 gigabit/second or higher and
      that implements both IKEv2 <xref target="RFC5996"/> and ESPv3 <xref
      target="RFC4303"/> MUST also implement extended (64-bit) sequence
      numbers for ESPv3 and SHOULD use ESPv3 extended sequence numbers for all
      security associations that protect IP storage protocol connections.</t>

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

        <t><list style="symbols">
            <t>HMAC-SHA1 MUST be implemented <xref target="RFC2404"/>, and</t>

            <t>AES CBC MAC with XCBC extensions SHOULD be implemented <xref
            target="RFC3566"/>.</t>
          </list>This document clarifies key sizes for the AES CBC MAC with
        XCBC extensions; 128-bit AES keys MUST be supported, and other key
        sizes MAY be supported. 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="RFC3543"/> with
            128-bit AES keys; other AES key sizes MAY be supported.</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 IP 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 <xref target="RFC2451"/>, <xref
            target="triple-des-spec"/> MUST be supported, and</t>

            <t>AES in Counter mode <xref target="RFC3686"/>, SHOULD be
            supported.</t>
          </list></t>

        <t>The 3DES-CBC requirement matched the basic encryption
        interoperability requirement for IPsec v2. At the time of RFC 3723's
        publication, AES 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 IP storage
        protocols can be expected to operate.</t>

        <t>Subsequent cryptographic developments have undermined the rationale
        for both of these requirements. 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 32GB (gigabytes) for a
        cipher with a 64-bit block size <xref target="triple-des-birthday"/>.
        It is prudent to rekey well before that bound is reached, and 32GB or
        some fraction thereof is not a lot of data for IP Storage protocol to
        transfer in a single session. The result could be rather frequent
        rekeying, e.g., to obtain an order of magnitude (10x) safety margin by
        rekeying after 3GB on a multi-gigabit/sec link. In contrast, AES has a
        128 bit block size, and so its birthday bound is astronomical (2^69
        bytes). AES CBC is the most common mandatory-to-implement mode for
        interoperability, and hence is the appropriate replacement for 3DES
        CBC as the mandatory-to-implement cryptographic transform.</t>

        <t>AES Counter mode is no longer the encryption transform that is most
        amenable to hardware implementation. That characterization now applies
        to AES Galois Counter Mode (GCM) <xref target="RFC4106"/>, which
        provides both encryption and integrity protection in a single
        cryptographic mechanism (in contrast, neither of the RFC 3723
        integrity transforms are well suited for hardware implementation, as
        they 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 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,</t>

            <t>AES in Counter mode MAY be implemented,</t>

            <t>AES in CBC mode MUST be implemented with 128-bit keys; other
            key sizes MAY be supported, and</t>

            <t>Implementations that support IKEv2 SHOULD also implement AES
            GCM with 128-bit keys; other key sizes may be supported.</t>
          </list>In addition, NULL encryption <xref target="RFC2410"/> MUST be
        supported to enable use of SAs that provide data origin authentication
        and data integrity, but not confidentiality.</t>
      </section>
    </section>

    <section 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 IP Storage
      protocols and makes the following two changes to the IKEv1 requirements
      in RFC 3723:</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. Use of 1024 bit DH groups with 3DES CBC and HMAC-SHA1
          is no longer recommended.</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 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.</t>

      <t>This document adds a requirement that IKEv2 <xref target="RFC5996"/>
      SHOULD be supported for peer authentication, negotiation of security
      associations, and key management. The manual keying requirement in RFC
      3723 is extended to IKEv2; manual keying MUST NOT be used with any
      version of IPsec for use with IP storage protocols.</t>

      <t>RFC 3723's requirements for IKEv1 mode implementation and usage are
      unchanged; this document does not extend them to IKEv2 because IKEv2
      does not have modes.</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>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 IP storage 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 an IP 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 the an IP storage
      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 an IP storage connection, 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
            outlined in sections 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 pertinent
            Certificate Revocation List (CRL) before accepting a PKI
            certificate for use in authentication.</t>

            <t>IKEv1 implementations MUST support Main Mode and SHOULD support
            Aggressive Mode. Main Mode with 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, exchanges for creating the
            Phase 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>If 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:<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 IP storage implementations can be expected (e.g., iSCSI
            initiators vs. iSCSI targets), and hence heterogeneity among IPsec
            implementations for IP storage can also be expected.</t>
          </list></t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document includes no request to IANA.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This entire document is about security.</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" initials=""
                  surname="American Bankers Association">
            <organization>American Bankers Association</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>

      <?rfc include='reference.I-D.ietf-storm-iscsi-cons'?>

      <?rfc include='reference.I-D.ietf-storm-iser'?>

      <?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.3543'?>

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

      <?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.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.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.5048'?>

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

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

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

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

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

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

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

    <section title="Contributors" toc="exclude">
      <t>The original authors of RFC 3723 were: Bernard Aboba, Joshua Tseng,
      Jesse Walker, Venkat Rangan and Franco Travostino.</t>
    </section>
  </back>
</rfc>
