Network Working Group                                           B. Aboba
Request for Comments: 3723                                     Microsoft
Category: Standards Track                                       J. Tseng
                                                     McDATA Corporation
                                                              J. Walker
                                                                  Intel
                                                              V. Rangan
                                    Brocade Communications Systems Inc.
                                                          F. Travostino
                                                        Nortel Networks
                                                             April 2004


               Securing Block Storage Protocols over IP

Status of this Memo

  This document specifies an Internet standards track protocol for the
  Internet community, and requests discussion and suggestions for
  improvements.  Please refer to the current edition of the "Internet
  Official Protocol Standards" (STD 1) for the standardization state
  and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

  Copyright (C) The Internet Society (2004).  All Rights Reserved.

Abstract

  This document discusses how to secure block storage and storage
  discovery protocols running over IP (Internet Protocol) using IPsec
  and IKE (Internet Key Exchange).  Threat models and security
  protocols are developed for iSCSI (Internet Protocol Small Computer
  System Interface), iFCP (Internet Fibre Channel Storage Networking)
  and FCIP (Fibre Channel over TCP/IP), as well as the iSNS (Internet
  Storage Name Server) and SLPv2 (Service Location Protocol v2)
  discovery protocols.  Performance issues and resource constraints are
  analyzed.

Table of Contents

  1.  Introduction .................................................  3
      1.1.  iSCSI Overview .........................................  3
      1.2.  iFCP Overview ..........................................  4
      1.3.  FCIP Overview ..........................................  4
      1.4.  IPsec Overview .........................................  4
      1.5.  Terminology ............................................  6
      1.6.  Requirements Language ..................................  7



Aboba, et al.               Standards Track                     [Page 1]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  2.  Block Storage Protocol Security ..............................  7
      2.1.  Security Requirements  .................................  7
      2.2.  Resource Constraints ................................... 10
      2.3.  Security Protocol ...................................... 12
      2.4.  iSCSI Authentication ................................... 16
      2.5.  SLPv2 Security ......................................... 18
      2.6.  iSNS Security .......................................... 24
  3.  iSCSI security Inter-Operability Guidelines .................. 28
      3.1.  iSCSI Security Issues .................................. 28
      3.2.  iSCSI and IPsec Interaction ............................ 29
      3.3.  Initiating a New iSCSI Session ......................... 30
      3.4.  Graceful iSCSI Teardown ................................ 31
      3.5.  Non-graceful iSCSI Teardown ............................ 31
      3.6.  Application Layer CRC .................................. 32
  4.  iFCP and FCIP Security Issues ................................ 34
      4.1.  iFCP and FCIP Authentication Requirements .............. 34
      4.2.  iFCP Interaction with IPsec and IKE .................... 34
      4.3.  FCIP Interaction with IPsec and IKE .................... 35
  5.  Security Considerations ...................................... 36
      5.1.  Transport Mode Versus Tunnel Mode ...................... 36
      5.2.  NAT Traversal .......................................... 39
      5.3.  IKE Issues ............................................. 40
      5.4.  Rekeying Issues ........................................ 40
      5.5.  Transform Issues ....................................... 43
      5.6.  Fragmentation Issues ................................... 45
      5.7.  Security Checks ........................................ 46
      5.8.  Authentication Issues .................................. 47
      5.9.  Use of AES in Counter Mode ............................. 51
  6.  IANA Considerations .......................................... 51
      6.1.  Definition of Terms .................................... 52
      6.2.  Recommended Registration Policies ...................... 52
  7.  Normative References ......................................... 52
  8.  Informative References ....................................... 54
  9.  Acknowledgments .............................................. 58
  Appendix A - Well Known Groups for Use with SRP  ................. 59
  Appendix B - Software Performance of IPsec Transforms  ........... 61
      B.1.  Authentication Transforms .............................. 61
      B.2.  Encryption and Authentication Transforms ............... 64
  Authors' Addresses ............................................... 69
  Full Copyright Statement ......................................... 70











Aboba, et al.               Standards Track                     [Page 2]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


1.  Introduction

  This specification discusses use of the IPsec protocol suite for
  protecting block storage protocols over IP networks (including iSCSI,
  iFCP and FCIP), as well as storage discovery protocols (iSNS and
  SLPv2).

1.1.  iSCSI Overview

  iSCSI, described in [RFC3720], is a connection-oriented
  command/response protocol that runs over TCP, and is used to access
  disk, tape and other devices.  iSCSI is a client-server protocol in
  which clients (initiators) open connections to servers (targets) and
  perform an iSCSI login.

  This document uses the SCSI terms initiator and target for clarity
  and to avoid the common assumption that clients have considerably
  less computational and memory resources than servers; the reverse is
  often the case for SCSI, as targets are commonly dedicated devices of
  some form.

  The iSCSI protocol has a text based negotiation mechanism as part of
  its initial (login) procedure.  The mechanism is extensible in what
  can be negotiated (new text keys and values can be defined) and also
  in the number of negotiation rounds (e.g., to accommodate
  functionality such as challenge-response authentication).

  After a successful login, the iSCSI initiator may issue SCSI commands
  for execution by the iSCSI target, which returns a status response
  for each command, over the same connection.  A single connection is
  used for both command/status messages as well as transfer of data
  and/or optional command parameters.  An iSCSI session may have
  multiple connections, but a separate login is performed on each.  The
  iSCSI session terminates when its last connection is closed.

  iSCSI initiators and targets are application layer entities that are
  independent of TCP ports and IP addresses.  Initiators and targets
  have names whose syntax is defined in [RFC3721].  iSCSI sessions
  between a given initiator and target are run over one or more TCP
  connections between those entities.  That is, the login process
  establishes an association between an iSCSI Session and the TCP
  connection(s) over which iSCSI PDUs will be carried.

  While the iSCSI login may include mutual authentication of the iSCSI
  endpoints and negotiation of session parameters, iSCSI does not
  define its own per-packet authentication, integrity, confidentiality
  or replay protection mechanisms.  Rather, it relies upon the IPsec
  protocol suite to provide per-packet data confidentiality and



Aboba, et al.               Standards Track                     [Page 3]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  integrity and authentication services, with IKE as the key management
  protocol.  iSCSI uses TCP to provide congestion control, error
  detection and error recovery.

1.2.  iFCP Overview

  iFCP, defined in [iFCP], is a gateway-to-gateway protocol, which
  provides transport services to Fibre Channel devices over a TCP/IP
  network.  iFCP allows interconnection and networking of existing
  Fibre Channel devices at wire speeds over an IP network.  iFCP
  implementations emulate fabric services in order to improve fault
  tolerance and scalability by fully leveraging IP technology.  Each
  TCP connection is used to support storage traffic between a unique
  pair of Fibre Channel N_PORTs.

  iFCP does not have a native, in-band security mechanism.  Rather, it
  relies upon the IPsec protocol suite to provide data confidentiality
  and authentication services, and IKE as the key management protocol.
  iFCP uses TCP to provide congestion control, error detection and
  error recovery.

1.3.  FCIP Overview

  FCIP, defined in [FCIP], is a pure FC encapsulation protocol that
  transports FC frames.  Current specification work intends this for
  interconnection of Fibre Channel switches over TCP/IP networks, but
  the protocol is not inherently limited to connecting FC switches.
  FCIP differs from iFCP in that no interception or emulation of fabric
  services is involved.  One or more TCP connections are bound to an
  FCIP Link, which is used to realize Inter-Switch Links (ISLs) between
  pairs of Fibre Channel entities.  FCIP Frame Encapsulation is
  described in [RFC3643].

  FCIP does not have a native, in-band security mechanism.  Rather, it
  relies upon the IPsec protocol suite to provide data confidentiality
  and authentication services, and IKE as the key management protocol.
  FCIP uses TCP to provide congestion control, error detection and
  error recovery.

1.4.  IPsec Overview

  IPsec is a protocol suite which is used to secure communication at
  the network layer between two peers.  The IPsec protocol suite is
  specified within the IP Security Architecture [RFC2401], IKE
  [RFC2409][RFC2412], IPsec Authentication Header (AH) [RFC2402] and
  IPsec Encapsulating Security Payload (ESP) [RFC2406] documents.  IKE
  is the key management protocol while AH and ESP are used to protect
  IP traffic.



Aboba, et al.               Standards Track                     [Page 4]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  An IPsec SA is a one-way security association, uniquely identified by
  the 3-tuple: Security Parameter Index (SPI), protocol (ESP) and
  destination IP.  The parameters for an IPsec security association are
  typically established by a key management protocol.  These include
  the encapsulation mode, encapsulation type, session keys and SPI
  values.

  IKE is a two phase negotiation protocol based on the modular exchange
  of messages defined by ISAKMP [RFC2408],and the IP Security Domain of
  Interpretation (DOI) [RFC2407].  IKE has two phases, and accomplishes
  the following functions:

  [1]  Protected cipher suite and options negotiation - using keyed
       MACs and encryption and anti-replay mechanisms

  [2]  Master key generation - such as via MODP Diffie-Hellman
       calculations

  [3]  Authentication of end-points

  [4]  IPsec SA management (selector negotiation, options negotiation,
       create, delete, and rekeying)

  Items 1 through 3 are accomplished in IKE Phase 1, while item 4 is
  handled in IKE Phase 2.

  An IKE Phase 2 negotiation is performed to establish both an inbound
  and an outbound IPsec SA.  The traffic to be protected by an IPsec SA
  is determined by a selector which has been proposed by the IKE
  initiator and accepted by the IKE Responder.  In IPsec transport
  mode, the IPsec SA selector can be a "filter" or traffic classifier,
  defined as the 5-tuple: <Source IP address, Destination IP address,
  transport protocol (UDP/SCTP/TCP), Source port, Destination port>.
  The successful establishment of a IKE Phase-2 SA results in the
  creation of two uni-directional IPsec SAs fully qualified by the
  tuple <Protocol (ESP/AH), destination address, SPI>.

  The session keys for each IPsec SA are derived from a master key,
  typically via a MODP Diffie-Hellman computation.  Rekeying of an
  existing IPsec SA pair is accomplished by creating two new IPsec SAs,
  making them active, and then optionally deleting the older IPsec SA
  pair.  Typically the new outbound SA is used immediately, and the old
  inbound SA is left active to receive packets for some locally defined
  time, perhaps 30 seconds or 1 minute.







Aboba, et al.               Standards Track                     [Page 5]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


1.5.  Terminology

  Fibre Channel
     Fibre Channel (FC) is a gigabit speed networking technology
     primarily used to implement Storage Area Networks (SANs), although
     it also may be used to transport other frames types as well,
     including IP.  FC is standardized under American National Standard
     for Information Systems of the InterNational Committee for
     Informational Technology Standards (ANSI-INCITS) in its T11
     technical committee.

  FCIP
      Fibre Channel over IP (FCIP) is a protocol for interconnecting
     Fibre Channel islands over IP Networks so as to form a unified SAN
     in a single Fibre Channel fabric.  The principal FCIP interface
     point to the IP Network is the FCIP Entity.  The FCIP Link
     represents one or more TCP connections that exist between a pair
     of FCIP Entities.

  HBA
     Host Bus Adapter (HBA) is a generic term for a SCSI interface to
     other device(s); it's roughly analogous to the term Network
     Interface Card (NIC) for a TCP/IP network interface, except that
     HBAs generally have on-board SCSI implementations, whereas most
     NICs do not implement TCP, UDP, or IP.

  iFCP
     iFCP is a gateway-to-gateway protocol, which provides Fibre
     Channel fabric services to Fibre Channel devices over a TCP/IP
     network.

  IP block storage protocol
     Where used within this document, the term "IP block storage
     protocol" applies to all block storage protocols running over IP,
     including iSCSI, iFCP and FCIP.

  iSCSI
     iSCSI is a client-server protocol in which clients (initiators)
     open connections to servers (targets).












Aboba, et al.               Standards Track                     [Page 6]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  iSNS
     The Internet Storage Name Server (iSNS) protocol provides for
     discovery and management of iSCSI and Fibre Channel (FCP) storage
     devices.  iSNS applications store iSCSI and FC device attributes
     and monitor their availability and reachability, providing a
     consolidated information repository for an integrated IP block
     storage network.  iFCP requires iSNS for discovery and management,
     while iSCSI may use iSNS for discovery, and FCIP does not use
     iSNS.

  initiator
     The iSCSI initiator connects to the target on well-known TCP port
     3260.  The iSCSI initiator then issues SCSI commands for execution
     by the iSCSI target.

  target
     The iSCSI target listens on a well-known TCP port for incoming
     connections, and  returns a status response for each command
     issued by the iSCSI initiator, over the same connection.

1.6.  Requirements Language

  In this document, the key words "MAY", "MUST, "MUST NOT", "OPTIONAL",
  "RECOMMENDED", "SHALL", "SHALL NOT", "SHOULD", and "SHOULD NOT", are
  to be interpreted as described in [RFC2119].

  Note that requirements specified in this document apply only to use
  of IPsec and IKE with IP block storage protocols.  Thus, these
  requirements do not apply to IPsec implementations in general.
  Implementation requirements language should therefore be assumed to
  relate to the availability of features for use with IP block storage
  security only.

  Although the security requirements in this document are already
  incorporated into the iSCSI [RFC3720], iFCP [iFCP] and FCIP [FCIP]
  standards track documents, they are reproduced here for convenience.
  In the event of a discrepancy, the individual protocol standards
  track documents take precedence.

2.  Block Storage Protocol Security

2.1.  Security Requirements

  IP Block storage protocols such as iSCSI, iFCP and FCIP are used to
  transmit SCSI commands over IP networks.  Therefore, both the control
  and data packets of these IP block storage protocols are vulnerable
  to attack.  Examples of attacks include:




Aboba, et al.               Standards Track                     [Page 7]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [1]  An adversary may attempt to acquire confidential data and
       identities by snooping data packets.

  [2]  An adversary may attempt to modify packets containing data and
       control messages.

  [3]  An adversary may attempt to inject packets into an IP block
       storage connection.

  [4]  An adversary may attempt to hijack TCP connection(s)
       corresponding to an IP block storage session.

  [5]  An adversary may launch denial of service attacks against IP
       block storage devices such as by sending a TCP reset.

  [6]  An adversary may attempt to disrupt security negotiation
       process, in order to weaken the authentication, or gain access
       to user passwords.  This includes disruption of application-
       layer authentication negotiations such as iSCSI Login.

  [7]  An adversary may attempt to impersonate a legitimate IP block
       storage entity.

  [8]  An adversary may launch a variety of attacks (packet
       modification or injection, denial of service) against the
       discovery (SLPv2 [RFC2608]) or discovery and management (iSNS
       [iSNS]) process.  iSCSI can use SLPv2 or iSNS.  FCIP only uses
       SLPv2, and iFCP only uses iSNS.

  Since iFCP and FCIP devices are the last line of defense for a whole
  Fibre Channel island, the above attacks, if successful, could
  compromise the security of all the Fibre Channel hosts behind the
  devices.

  To address the above threats, IP block storage security protocols
  must support confidentiality, data origin authentication, integrity,
  and replay protection on a per-packet basis.  Confidentiality
  services are important since IP block storage traffic may traverse
  insecure public networks.  The IP block storage security protocols
  must support perfect forward secrecy in the rekeying process.

  Bi-directional authentication of the communication endpoints MUST be
  provided.  There is no requirement that the identities used in
  authentication be kept confidential (e.g., from a passive
  eavesdropper).






Aboba, et al.               Standards Track                     [Page 8]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  For a security protocol to be useful, CPU overhead and hardware
  availability must not preclude implementation at 1 Gbps today.
  Implementation feasibility at 10 Gbps is highly desirable, but may
  not be demonstrable at this time.  These performance levels apply to
  aggregate throughput, and include all TCP connections used between IP
  block storage endpoints.  IP block storage communications typically
  involve multiple TCP connections.  Performance issues are discussed
  further in Appendix B.

  Enterprise data center networks are considered mission-critical
  facilities that must be isolated and protected from possible security
  threats.  Such networks are often protected by security gateways,
  which at a minimum provide a shield against denial of service
  attacks.  The IP block storage security architecture should be able
  to leverage the protective services of the existing security
  infrastructure, including firewall protection, NAT and NAPT services,
  and VPN services available on existing security gateways.

  When iFCP or FCIP devices are deployed within enterprise networks, IP
  addresses will be typically be statically assigned as is the case
  with most routers and switches.  Consequently, support for dynamic IP
  address assignment, as described in [RFC3456], will typically not be
  required, although it cannot be ruled out.  Such facilities will also
  be relevant to iSCSI hosts whose addresses are dynamically assigned.
  As a result, the IP block storage security protocols must not
  introduce additional security vulnerabilities where dynamic address
  assignment is supported.

  While IP block storage security is mandatory to implement, it is not
  mandatory to use.  The security services used depend on the
  configuration and security policies put in place.  For example,
  configuration will influence the authentication algorithm negotiated
  within iSCSI Login, as well as the security services
  (confidentiality, data origin authentication, integrity, replay
  protection) and transforms negotiated when IPsec is used to protect
  IP block storage protocols such as iSCSI, iFCP and FCIP.

  FCIP implementations may allow enabling and disabling security
  mechanisms at the granularity of an FCIP Link.  For iFCP, the
  granularity corresponds to an iFCP Portal.  For iSCSI, the
  granularity of control is typically that of an iSCSI session,
  although it is possible to exert control down to the granularity of
  the destination IP address and TCP port.

  Note that with IPsec, security services are negotiated at the
  granularity of an IPsec SA, so that IP block storage connections
  requiring a set of security services different from those negotiated
  with existing IPsec SAs will need to negotiate a new IPsec SA.



Aboba, et al.               Standards Track                     [Page 9]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Separate IPsec SAs are also advisable where quality of service
  considerations dictate different handling of IP block storage
  connections.  Attempting to apply different quality of service to
  connections handled by the same IPsec SA can result in reordering,
  and falling outside the replay window.  For a discussion of the
  issues, see [RFC2983].

  IP block storage protocols can be expected to carry sensitive data
  and provide access to systems and data that require protection
  against security threats.  SCSI and Fibre Channel currently contain
  little in the way of security mechanisms, and rely on physical
  security, administrative security, and correct configuration of the
  communication medium and systems/devices attached to it for their
  security properties.

  For most IP networks, it is inappropriate to assume physical
  security, administrative security, and correct configuration of the
  network and all attached nodes (a physically isolated network in a
  test lab may be an exception).  Therefore, authentication SHOULD be
  used by IP block storage protocols (e.g., iSCSI SHOULD use one of its
  in-band authentication mechanisms or the authentication provided by
  IKE) in order to provide a minimal assurance that connections have
  initially been opened with the intended counterpart.

  iSNS, described in [iSNS], is required in all iFCP deployments.
  iSCSI may use iSNS for discovery, and FCIP does not use iSNS.  iSNS
  applications store iSCSI and FC device attributes and monitor their
  availability and reachability, providing a consolidated information
  repository for an integrated IP block storage network.  The iSNS
  specification defines mechanisms to secure communication between an
  iSNS server and its clients.

2.2.  Resource Constraints

  Resource constraints and performance requirements for iSCSI are
  discussed in [RFC3347] Section 3.2.  iFCP and FCIP devices will
  typically be embedded systems deployed on racks in air-conditioned
  data center facilities.  Such embedded systems may include hardware
  chipsets to provide data encryption, authentication, and integrity
  processing.  Therefore, memory and CPU resources are generally not a
  constraining factor.

  iSCSI will be implemented on a variety of systems ranging from large
  servers running general purpose operating systems to embedded host
  bus adapters (HBAs).  In general, a host bus adapter is the most
  constrained iSCSI implementation environment, although an HBA may
  draw upon the resources of the system to which it is attached in some
  cases (e.g., authentication computations required for connection



Aboba, et al.               Standards Track                    [Page 10]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  setup).  More resources should be available to iSCSI implementations
  for embedded and general purpose operating systems.  The following
  guidelines indicate the approximate level of resources that
  authentication, keying, and rekeying functionality can reasonably
  expect to draw upon:

  -  Low power processors with small word size are generally not used,
     as power is usually not a constraining factor, with the possible
     exception of HBAs, which can draw upon the computational resources
     of the system into which they are inserted.  Computational
     horsepower should be available to perform a reasonable amount of
     exponentiation as part of authentication and key derivation for
     connection setup.  The same is true of rekeying, although the
     ability to avoid exponentiation for rekeying may be desirable (but
     is not an absolute requirement).

  -  RAM and/or flash resources tend to be constrained in embedded
     implementations.  8-10 MB of code and data for authentication,
     keying, and rekeying is clearly excessive, 800-1000 KB is clearly
     larger than desirable, but tolerable if there is no other
     alternative and 80-100 KB should be acceptable.  These sizes are
     intended as rough order of magnitude guidance, and should not be
     taken as hard targets or limits (e.g., smaller code sizes are
     always better).  Software implementations for general purpose
     operating systems may have more leeway.

  The primary resource concern for implementation of authentication and
  keying mechanisms is code size, as iSCSI assumes that the
  computational horsepower to do exponentiations will be available.

  There is no dominant iSCSI usage scenario - the scenarios range from
  a single connection constrained only by media bandwidth to hundreds
  of initiator connections to a single target or communication
  endpoint.  SCSI sessions and hence the connections they use tend to
  be relatively long lived; for disk storage, a host typically opens a
  SCSI connection on boot and closes it on shutdown.  Tape session
  length tends to be measured in hours or fractions thereof (i.e.,
  rapid fire sharing of the same tape device among different initiators
  is unusual), although tape robot control sessions can be short when
  the robot is shared among tape drives.  On the other hand, tape will
  not see a large number of initiator connections to a single target or
  communication endpoint, as each tape drive is dedicated to a single
  use at a single time, and a dozen tape drives is a large tape device.








Aboba, et al.               Standards Track                    [Page 11]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


2.3.  Security Protocol

2.3.1.  Transforms

  All IP block storage security compliant implementations MUST support
  IPsec ESP [RFC2406] to provide security for both control packets and
  data packets, as well as the replay protection mechanisms of IPsec.
  When ESP is utilized, per-packet data origin authentication,
  integrity and replay protection MUST be used.

  To provide confidentiality with ESP, ESP with 3DES in CBC mode
  [RFC2451][3DESANSI] MUST be supported, and AES in Counter mode, as
  described in [RFC3686], SHOULD be supported.  To provide data origin
  authentication and integrity with ESP, HMAC-SHA1 [RFC2404] MUST be
  supported, and AES in CBC MAC mode with XCBC extensions [RFC3566]
  SHOULD be supported.  DES in CBC mode SHOULD NOT be used due to its
  inherent weakness.  ESP with NULL encryption MUST be supported for
  authentication.

2.3.2.  IPsec Modes

  Conformant IP block storage protocol implementations MUST support ESP
  [RFC2406] in tunnel mode and MAY implement IPsec with ESP in
  transport mode.

2.3.3.  IKE

  Conformant IP block storage security implementations MUST support IKE
  [RFC2409] for peer authentication, negotiation of security
  associations, and key management, using the IPsec DOI [RFC2407].
  Manual keying MUST NOT be used since it does not provide the
  necessary rekeying support.  Conformant IP block storage security
  implementations MUST support peer authentication using a pre-shared
  key, and MAY support certificate-based peer authentication using
  digital signatures.  Peer authentication using the public key
  encryption methods outlined in IKE's sections 5.2 and 5.3 [RFC2409]
  SHOULD NOT be used.

  Conformant IP block storage security implementations MUST support IKE
  Main Mode and SHOULD support Aggressive Mode.  IKE Main Mode with
  pre-shared key authentication SHOULD NOT be used when either of the
  peers use a dynamically assigned IP address.  While Main Mode with
  pre-shared key authentication offers good security in many cases,
  situations where dynamically assigned addresses are used force use of
  a group pre-shared key, which is vulnerable to man-in-the-middle
  attack.





Aboba, et al.               Standards Track                    [Page 12]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  When digital signatures are used for authentication, either IKE Main
  Mode or IKE Aggressive Mode MAY be used.  In all cases, access to
  locally stored secret information (pre-shared key,  or private  key
  for digital signing) must be suitably restricted, since compromise of
  the secret information nullifies the security properties of the
  IKE/IPsec protocols.

  When digital signatures are used to achieve authentication, an IKE
  negotiator SHOULD use IKE Certificate Request Payload(s) to specify
  the certificate authority (or authorities) that are trusted in
  accordance with its local policy.  IKE negotiators SHOULD check the
  pertinent Certificate Revocation List (CRL) before accepting a PKI
  certificate for use in IKE's authentication procedures.

  The IPsec DOI [RFC2407] provides for several types of identification
  data.  Within IKE Phase 1, for use within the IDii and IDir payloads,
  conformant IP block storage security implementations MUST support the
  ID_IPV4_ADDR, ID_IPV6_ADDR (if the protocol stack supports IPv6) and
  ID_FQDN Identity Payloads.  iSCSI security implementations SHOULD
  support the ID_USER_FQDN Identity Payload; other IP block storage
  protocols (iFCP, FCIP) SHOULD NOT use the ID_USER_FQDN Identity
  Payload.  Identities other than ID_IPV4_ADDR and ID_IPV6_ADDR (such
  as ID_FQDN or ID_USER_FQDN) SHOULD be employed in situations where
  Aggressive mode is utilized along with pre-shared keys and IP
  addresses are dynamically assigned.  The IP Subnet, IP Address Range,
  ID_DER_ASN1_DN, ID_DER_ASN1_GN formats SHOULD NOT be used for IP
  block storage protocol security; The ID_KEY_ID Identity Payload MUST
  NOT be used.  As described in [RFC2407], within Phase 1 the ID port
  and protocol fields MUST be set to zero or to UDP port 500.  Also, as
  noted in [RFC2407]:

     When an IKE exchange is authenticated using certificates (of any
     format), any ID's used for input to local policy decisions SHOULD
     be contained in the certificate used in the authentication of the
     exchange.

  The Phase 2 Quick Mode exchanges used by IP block storage protocol
  implementations MUST explicitly carry the Identity Payload fields
  (IDci and IDcr).  Each Phase 2 IDci and IDcr Payload SHOULD carry a
  single IP address (ID_IPV4_ADDR, ID_IPV6_ADDR) and SHOULD NOT use the
  IP Subnet or IP Address Range formats.  Other ID payload formats MUST
  NOT be used.

  Since IPsec acceleration hardware may only be able to handle a
  limited number of active IKE Phase 2 SAs, Phase 2 delete messages may
  be sent for idle SAs, as a means of keeping the number of active
  Phase 2 SAs to a minimum.  The receipt of an IKE Phase 2 delete
  message MUST NOT be interpreted as a reason for tearing down an IP



Aboba, et al.               Standards Track                    [Page 13]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  block storage connection.  Rather, it is preferable to leave the
  connection up, and if additional traffic is sent on it, to bring up
  another IKE Phase 2 SA to protect it.  This avoids the potential for
  continually bringing connections up and down.

2.3.4.  Security Policy Configuration

  One of the goals of this specification is to enable a high level of
  interoperability without requiring extensive configuration.  This
  section provides guidelines on setting of IKE parameters so as to
  enhance the probability of a successful negotiation.  It also
  describes how information on security policy configuration can be
  provided so as to further enhance the chances of success.

  To enhance the prospects for interoperability, some of the actions to
  consider include:

  [1]  Transform restriction.
       Since support for 3DES-CBC and HMAC-SHA1 is required of all
       implementations, offering these transforms enhances the
       probability of a successful negotiation.  If AES-CTR [RFC3686]
       with XCBC-MAC [RFC3566] is supported, this transform combination
       will typically be preferred, with 3DES-CBC/HMAC-SHA1 as a
       secondary offer.

  [2]  Group Restriction.
       If 3DES-CBC/HMAC-SHA1 is offered, and DH groups are offered,
       then it is recommended that a DH group of at least 1024 bits be
       offered along with it.  If AES-CTR/XCBC-MAC is the preferred
       offer, and DH groups are offered, then it is recommended that a
       DH group of at least 2048 bits be offered along with it, as
       noted in [KeyLen].  If perfect forward secrecy is required in
       Quick Mode, then it is recommended that the QM PFS DH group be
       the same as the IKE Phase 1 DH group.  This reduces the total
       number of combinations, enhancing the chances for
       interoperability.

  [3]  Key lifetimes.
       If a key lifetime is offered that is longer than desired, then
       rather than causing the IKE negotiation to fail, it is
       recommended that the Responder consider the offered lifetime as
       a maximum, and accept it.  The key can then use a lesser value
       for the lifetime, and utilize a Lifetime Notify in order to
       inform the other peer of lifetime expiration.







Aboba, et al.               Standards Track                    [Page 14]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Even when the above advice is taken, it still may be useful to be
  able to provide additional configuration information in order to
  enhance the chances of success, and it is useful to be able to manage
  security configuration regardless of the scale of the deployment.

  For example, it may be desirable to configure the security policy of
  an IP block storage device.  This can be done manually or
  automatically via a security policy distribution mechanism.
  Alternatively, it can be supplied via iSNS or SLPv2.  If an IP block
  storage endpoint can obtain the required security policy by other
  means (manually, or automatically via a security policy distribution
  mechanism) then it need not request this information via iSNS or
  SLPv2.  However, if the required security policy configuration is not
  available via other mechanisms, iSNS or SLPv2 can be used to obtain
  it.

  It may also be helpful to obtain information about the preferences of
  the peer prior to initiating IKE.  While it is generally possible to
  negotiate security parameters within IKE, there are situations in
  which incompatible parameters can cause the IKE negotiation to fail.
  The following information can be provided via SLPv2 or iSNS:

  [4]  IPsec or cleartext support.
       The minimum piece of peer configuration required is whether an
       IP block storage endpoint requires IPsec or cleartext.  This
       cannot be determined from the IKE negotiation alone without
       risking a long timeout, which is highly undesirable for a disk
       access protocol.

  [5]  Perfect Forward Secrecy (PFS) support.
       It is helpful to know whether a peer allows PFS, since an IKE
       Phase 2 Quick Mode can fail if an initiator proposes PFS to a
       Responder that does not allow it.

  [6]  Preference for tunnel mode.
       While it is legal to propose both transport and tunnel mode
       within the same offer, not all IKE implementations will support
       this.  As a result, it is useful to know whether a peer prefers
       tunnel mode or transport mode, so that it is possible to
       negotiate the preferred mode on the first try.

  [7]  Main Mode and Aggressive Mode support.
       Since the IKE negotiation can fail if a mode is proposed to a
       peer that doesn't allow it, it is helpful to know which modes a
       peer allows, so that an allowed mode can be negotiated on the
       first try.





Aboba, et al.               Standards Track                    [Page 15]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Since iSNS or SLPv2 can be used to distribute IPsec security policy
  and configuration information for use with IP block storage
  protocols, these discovery protocols would constitute a 'weak link'
  were they not secured at least as well as the protocols whose
  security they configure.  Since the major vulnerability is packet
  modification and replay, when iSNS or SLPv2 are used to distribute
  security policy or configuration information, at a minimum, per-
  packet data origin authentication, integrity and replay protection
  MUST be used to protect the discovery protocol.

2.4.  iSCSI Authentication

2.4.1.  CHAP

  Compliant iSCSI implementations MUST implement the CHAP
  authentication method [RFC1994] (according to [RFC3720], section
  11.1.4), which includes support for bi-directional authentication,
  and the target authentication option.

  When CHAP is performed over non-encrypted channel, it is vulnerable
  to an off-line dictionary attack.  Implementations MUST support
  random CHAP secrets of up to 128 bits, including the means to
  generate such secrets and to accept them from an external generation
  source.  Implementations MUST NOT provide secret generation (or
  expansion) means other than random generation.

  If CHAP is used with secret smaller than 96 bits, then IPsec
  encryption (according to the implementation requirements in [RFC3720]
  section 8.3.2) MUST be used to protect the connection.  Moreover, in
  this case IKE authentication with group pre-shared keys SHOULD NOT be
  used.  When CHAP is used with a secret smaller then 96 bits, a
  compliant implementation MUST NOT continue with the iSCSI login
  unless it can verify that IPsec encryption is being used to protect
  the connection.

  Originators MUST NOT reuse the CHAP challenge sent by the Responder
  for the other direction of a bidirectional authentication.
  Responders MUST check for this condition and close the iSCSI TCP
  connection if it occurs.

  The same CHAP secret SHOULD NOT be configured for authentication of
  multiple initiators or multiple targets, as this enables any of them
  to impersonate any other one of them, and compromising one of them
  enables the attacker to impersonate any of them.  It is recommended
  that iSCSI implementations check for use of identical CHAP secrets by
  different peers when this check is feasible, and take appropriate
  measures to warn users and/or administrators when this is detected.
  A single CHAP secret MAY be used for authentication of an individual



Aboba, et al.               Standards Track                    [Page 16]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  initiator to multiple targets.  Likewise, a single CHAP secret MAY be
  used for authentication of an individual target to multiple
  initiators.

  A Responder MUST NOT send its CHAP response if the initiator has not
  successfully authenticated.  For example, the following exchange:

     I->R     CHAP_A=<A1,A2,...>
     R->I     CHAP_A=<A1> CHAP_C=<C> CHAP_I=<I>
     I->R     CHAP_N=<N> CHAP_C=<C> CHAP_I=<I>

  (Where N, (A1,A2), I, C, and R are correspondingly the Name,
  Algorithms, Identifier, Challenge, and Response as defined in
  [RFC1994])

  MUST result in the Responder (target) closing the iSCSI TCP
  connection because the initiator has failed to authenticate (there is
  no CHAP_R in the third message).

  Any CHAP secret used for initiator authentication MUST NOT be
  configured for authentication of any target, and any CHAP secret used
  for target authentication MUST NOT be configured for authentication
  of any initiator.  If the CHAP response received by one end of an
  iSCSI connection is the same as the CHAP response that the receiving
  endpoint would have generated for the same CHAP challenge, the
  response MUST be treated as an authentication failure and cause the
  connection to close (this ensures that the same CHAP secret is not
  used for authentication in both directions).  Also, if an iSCSI
  implementation can function as both initiator and target, different
  CHAP secrets and identities MUST be configured for these two roles.
  The following is an example of the attacks prevented by the above
  requirements:

  Rogue wants to impersonate Storage to Alice, and knows that a
     single secret is used for both directions of Storage-Alice
     authentication.

  Rogue convinces Alice to open two connections to Rogue, and
     Rogue identifies itself as Storage on both connections.

  Rogue issues a CHAP challenge on connection 1, waits for Alice
     to respond, and then reflects Alice's challenge as the initial
     challenge to Alice on connection 2.

     If Alice doesn't check for the reflection across connections,
     Alice's response on connection 2 enables Rogue to impersonate
     Storage on connection 1, even though Rogue does not know the
     Alice-Storage CHAP secret.



Aboba, et al.               Standards Track                    [Page 17]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Note that RADIUS [RFC2865] does not support bi-directional CHAP
  authentication.  Therefore, while a target acting as a RADIUS client
  will be able to verify the initiator Response, it will not be able to
  respond to an initiator challenge unless it has access to an
  appropriate shared secret by some other means.

2.4.2.  SRP

  iSCSI implementations MAY implement the SRP authentication method
  [RFC2945] (see [RFC3720], Section 11.1.3).  The strength of SRP
  security is dependent on the characteristics of the group being used
  (i.e., the prime modulus N and generator g).  As described in
  [RFC2945], N is required to be a Sophie-German prime (of the form N =
  2q + 1, where q is also prime) the generator g is a primitive root of
  GF(n) [SRPNDSS].

  SRP well-known groups are included in Appendix A and additional
  groups may be registered with IANA.  iSCSI implementations MUST use
  one of these well-known groups.  All the groups specified in Appendix
  A up to 1536 bits (i.e., SRP-768, SRP-1024, SRP-1280, SRP-1536) MUST
  be supported by initiators and targets.  To guarantee
  interoperability, targets MUST always offer "SRP-1536" as one of the
  proposed groups.

2.5.  SLPv2 Security

  Both iSCSI and FCIP protocols use SLPv2 as a way to discover peer
  entities and management servers.  SLPv2 may also be used to provide
  information on peer security configuration.  When SLPv2 is deployed,
  the SA advertisements as well as UA requests and/or responses are
  subject to the following security threats:

  [1]  An attacker could insert or alter SA advertisements or a
       response to a UA request in order to masquerade as the real peer
       or launch a denial of service attack.

  [2]  An attacker could gain knowledge about an SA or a UA through
       snooping, and launch an attack against the peer.  Given the
       potential value of iSCSI targets and FCIP entities, leaking of
       such information not only increases the possibility of an attack
       over the network; there is also the risk of physical theft.

  [3]  An attacker could spoof a DAAdvert.  This could cause UAs and
       SAs to use a rogue DAs.







Aboba, et al.               Standards Track                    [Page 18]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  To address these threats, the following capabilities are required:

  [a]  Service information, as included in SrvRply, AttrRply, SrvReg
       and SrvDereg messages, needs to be kept confidential.

  [b]  The UA has to be able to distinguish between legitimate and
       illegitimate service information from SrvRply and AttrRply
       messages.  In the SLPv2 security model SAs are trusted to sign
       data.

  [c]  The DA has to be able to distinguish between legitimate and
       illegitimate SrvReg and SrvDereg messages.

  [d]  The UA has to be able to distinguish between legitimate and
       illegitimate  DA Advertisements.  This allows the UA to avoid
       rogue DAs that will return incorrect data or no data at all.  In
       the SLPv2 security model, UAs trust DAs to store, answer queries
       on and forward data on services, but not necessarily to
       originate it.

  [e]  SAs may have to trust DAs, especially if 'mesh-enhanced' SLPv2
       is used.  In this case, SAs register with only one DA and trust
       that this DA will forward the registration to others.

  By itself, SLPv2 security, defined in [RFC2608], does not satisfy
  these security requirements.  SLPv2 only provides end-to-end
  authentication, but does not support confidentiality.  In SLPv2
  authentication there is no way to authenticate "zero result
  responses".  This enables an attacker to mount a denial of service
  attack by sending UAs a "zero results" SrvRply or AttrRply as if from
  a DA with whose source address corresponds to a legitimate DAAdvert.

  In all cases, there is a potential for denial of service attack
  against protocol service providers, but such an attack is possible
  even in the absence of SLPv2 based discovery mechanisms.

2.5.1.  SLPv2 Security Protocol

  SLPv2 message types include: SrvRqst, SrvRply, SrvReg, SrvDereg,
  SrvAck, AttrRqst, AttrRply, DAAdvert, SrvTypeRqst, SrvTypeRply,
  SAAdvert.  SLPv2 requires that User Agents (UAs) and Service Agents
  (SAs) support SrvRqst, SrvRply, and DAAdvert.  SAs must additionally
  support SrvReg, SrvAck, and SAAdvert.

  Where no Directory Agent (DA) exists, the SrvRqst is multicast, but
  the SrvRply is sent via unicast UDP.  DAAdverts are also multicast.
  However, all other SLPv2 messages are sent via UDP unicast.




Aboba, et al.               Standards Track                    [Page 19]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  In order to provide the required security functionality, iSCSI and
  FCIP implementations supporting SLPv2 security SHOULD protect SLPv2
  messages sent via unicast using IPsec ESP with a non-null transform.
  SLPv2 authentication blocks (carrying digital signatures), described
  in [RFC2608] MAY also be used to authenticate unicast and multicast
  messages.

  The usage of SLPv2 by iSCSI is described in [iSCSISLP].  iSCSI
  initiators and targets may enable IKE mechanisms to establish
  identity.  In addition, a subsequent user-level iSCSI session login
  can protect the initiator-target nexus.  This will protect them from
  any compromise of security in the SLPv2 discovery process.

  The usage of SLPv2 by FCIP is described in [FCIPSLP].  FCIP Entities
  assume that once the IKE identity of a peer is established, the FCIP
  Entity Name carried in FCIP Short Frame is also implicitly accepted
  as the authenticated peer.  Any such association between the IKE
  identity and the FCIP Entity Name is administratively established.

  For use in securing SLPv2, when digital signatures are used to
  achieve authentication in IKE, an IKE negotiator SHOULD use IKE
  Certificate Request Payload(s) to specify the certificate authority
  (or authorities) that are trusted in accordance with its local
  policy.  IKE negotiators SHOULD check the pertinent Certificate
  Revocation List (CRL) before accepting a PKI certificate for use in
  IKE's authentication procedures.  If key management of SLPv2 DAs
  needs to be coordinated with the SAs and the UAs as well as the
  protocol service implementations, one may use certificate based key
  management, with a shared root Certificate Authority (CA).

  One of the reasons for utilizing IPsec for SLPv2 security is that is
  more likely that certificates will be deployed for IPsec than for
  SLPv2.  This both simplifies SLPv2 security and makes it more likely
  that it will be implemented interoperably and more importantly, that
  it will be used.  As a result, it is desirable that little additional
  effort be required to enable IPsec protection of SLPv2.

  However, just because a certificate is trusted for use with IPsec
  does not necessarily imply that the host is authorized to perform
  SLPv2 operations.  When using IPsec to secure SLPv2, it may be
  desirable to distinguish between certificates appropriate for use by
  UAs, SAs, and DAs.  For example, while a UA might be allowed to use
  any certificate conforming to IKE certificate policy, the certificate
  used by an SA might indicate that it is a legitimate source of
  service advertisements.  Similarly, a DA certificate might indicate
  that it is a valid DA.  This can be accomplished by using special CAs
  to issue certificates valid for use by SAs and DAs; alternatively, SA
  and DA authorizations can be employed.



Aboba, et al.               Standards Track                    [Page 20]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Assume that the policy for issuing and distributing SLPv2 authorized
  certificates to SAs and DAs limits them only to legitimate SAs and
  DAs.  In this case, IPsec is used to provide SLPv2 security as
  follows:

  [a]  SLPv2 messages sent via unicast are IPsec protected, using ESP
       with a non-null transform.

  [b]  SrvRply and AttrRply messages from either a DA or SA are unicast
       to UAs.  Assuming that the SA used a certificate authorized for
       SLPv2 service advertisement in establishing the IKE Phase 1 SA,
       or that the DA used a certificate authorized for DA usage, the
       UA can accept the information sent, even if it has no SLPv2
       authentication block.

       Note that where SrvRqst messages are multicast, they are not
       protected.  An attacker may attempt to exploit this by spoofing
       a multicast SrvRqst from the UA, generating a SrvRply from an SA
       of the attacker's choosing.  Although the SrvRply is secured, it
       does not correspond to a legitimate SrvRqst sent by the UA.  To
       avoid this attack, where SrvRqst messages are multicast, the UA
       MUST check that SrvRply messages represent a legitimate reply to
       the SrvRqst that was sent.

  [c]  SrvReg and SrvDereg messages from a SA are unicast to DAs.
       Assuming that the SA used a certificate authorized for SLPv2
       service advertisement in establishing the IKE Phase 1 SA, the DA
       can accept the de/registration even if it has no SLPv2
       authentication block.  Typically, the SA will check the DA
       authorization prior to sending the service advertisement.

  [d]  Multicast DAAdverts can be considered advisory.  The UA will
       attempt to contact DAs via unicast.  Assuming that the DA used a
       certificate authorized for SLPv2 DAAdverts in establishing the
       IKE Phase 1 SA, the UA can accept the DAAdvert even if it has no
       SLPv2 authentication block.

  [e]  SAs can accept DAAdverts as described in [d].

2.5.2.  Confidentiality of Service Information

  Since SLPv2 messages can contain information that can potentially
  reveal the vendor of the device or its other associated
  characteristics, revealing service information constitutes a security
  risk.  As an example, the FCIP Entity Name may reveal a WWN from
  which an attacker can learn potentially useful information about the
  Entity's characteristics.




Aboba, et al.               Standards Track                    [Page 21]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  The SLPv2 security model assumes that service information is public,
  and therefore does not provide for confidentiality.  However, storage
  devices represent mission critical infrastructure of substantial
  value, and so iSCSI and FCIP security implementations supporting
  SLPv2 security SHOULD encrypt as well as authenticate and integrity-
  protect unicast SLPv2 messages.

  Assuming that all unicast SLPv2 messages are protected by IPsec, and
  that confidentiality is provided, then the risk of disclosure can be
  limited to SLPv2 messages sent via multicast, namely the SrvRqst and
  DAAdvert.

  The information leaked in a multicast SrvRqst depends on the level of
  detail in the query.  If leakage is a concern, then a DA can be
  provided.  If this is not feasible, then a general query can be sent
  via multicast, and then further detail can be obtained from the
  replying entities via additional unicast queries, protected by IPsec.

  Information leakage via a multicast DAAdvert is less of a concern
  than the authenticity of the message, since knowing that a DA is
  present on the network only enables an attacker to know that SLPv2 is
  in use, and possibly that a directory service is also present.  This
  information is not considered very valuable.

2.5.3.  SLPv2 Security Implications

  Through the definition of security attributes, it is possible to use
  SLPv2 to distribute information about security settings for IP block
  storage entities.  SLPv2 distribution of security policy is not
  necessary if the security settings can be determined by other means,
  such as manual configuration or IPsec security policy distribution.
  If an entity has already obtained its security configuration via
  other mechanisms, then it MUST NOT request security policy via SLPv2.

  Where SLPv2 is used to provide security policy information for use
  with IP block storage protocols, SLPv2 MUST be protected by IPsec as
  described in this document.  Where SLPv2 is not used to distribute
  security policy information, implementations MAY implement SLPv2
  security as described in this document.

  Where SLPv2 is used, but security is not implemented, IP block
  storage protocol implementations MUST support a negative cache for
  authentication failures.  This allows implementations to avoid
  continually contacting discovered endpoints that fail authentication
  within IPsec or at the application layer (in the case of iSCSI
  Login).  The negative cache need not be  maintained within the IPsec
  implementation, but rather within the IP block storage protocol
  implementation.



Aboba, et al.               Standards Track                    [Page 22]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Since this document proposes that hop-by-hop security be used as the
  primary mechanism to protect SLPv2, UAs have to trust DAs to
  accurately relay data from SAs.  This is a change to the SLPv2
  security model described in [RFC2608].  However, SLPv2 authentication
  as defined in [RFC2608] does not provide a way to authenticate "zero
  result responses", leaving SLPv2 vulnerable to a denial of service
  attack.  Such an attack can be carried out on a UA by sending it a
  "zero results" SrvRply or AttrRply, sent from a source address
  corresponding to a DA issuing a legitimate DAAdvert.

  In addition, SLPv2 security as defined in [RFC2608] does not support
  confidentiality.  When IPsec with ESP and a non-null transform is
  used to protect SLPv2, not only can unicast requests and replies be
  authenticated, but confidentiality can also be provided.  This
  includes unicast requests to DAs and SAs as well as replies.  It is
  also possible to actively discover SAs using multicast SA discovery,
  and then to send unicast requests to the discovered SAs.

  As a result, for use with IP block storage protocols, it is believed
  that use of IPsec for security is more appropriate than the SLPv2
  security model defined in [RFC2608].

  Using IPsec to secure SLPv2 has performance implications.  Security
  associations established between:

  -  UAs and SAs may be reused (the client on the UA host will use the
     service on the SA host).

  -  SAs and DAs may be reused (the SAs will reregister services)

  -  UAs and DAs will probably not be reused (many idle security
     associations are likely to result, and build up on the DA).

  When IPsec is used to protect SLPv2, it is not necessarily
  appropriate for all hosts with whom an IPsec security association can
  be established to be trusted to originate SLPv2 service
  advertisements.  This is particularly the case in environments where
  it is easy to obtain certificates valid for use with IPsec (for
  example, where anyone with access to the network can obtain a machine
  certificate valid for use with IPsec).  If not all hosts are
  authorized to originate service advertisements, then it is necessary
  to distinguish between authorized and unauthorized hosts.

  This can be accomplished by the following mechanisms:

  [1]  Configuring SAs with the identities or certificate
       characteristics of valid DAs, and configuring DAs with the
       identities of SAs allowed to advertise IP block storage



Aboba, et al.               Standards Track                    [Page 23]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


       services.  The DAs are then trusted to enforce policies on
       service registration.  This approach involves manual
       configuration, but avoids certificate customization for SLPv2.

  [2]  Restricting the issuance of certificates valid for use in SLPv2
       service advertisement.  While all certificates allowed for use
       with IPsec will chain to a trusted root, certificates for hosts
       authorized to originate service advertisements could be signed
       by an SLPv2-authorized CA, or could contain explicit SLPv2
       authorizations within the certificate.  After the IPsec security
       association is set up between the SLPv2 entities, the SLPv2
       implementations can then retrieve the certificates used in the
       negotiation in order to determine whether the entities are
       authorized for the operations that are being performed.  This
       approach requires less configuration, but requires some
       certificate customization for use with SLPv2.

2.6.  iSNS Security

  The iSCSI protocol may use iSNS for discovery and management
  services, while the iFCP protocol is required to use iSNS for such
  services.  In addition, iSNS can be used to store and distribute
  security policy and authorization information to iSCSI and iFCP
  devices.  When the iSNS protocol is deployed, the interaction between
  iSNS server and iSNS clients are subject to the following additional
  security threats:

  [1]  An attacker can alter iSNS protocol messages, directing iSCSI
       and iFCP devices to establish connections with rogue devices, or
       weakening IPsec protection for iSCSI or iFCP traffic.

  [2]  An attacker can masquerade as the real iSNS server by sending
       false iSNS heartbeat messages.  This could deceive iSCSI and
       iFCP devices into using rogue iSNS servers.

  [3]  An attacker can gain knowledge about iSCSI and iFCP devices by
       snooping iSNS protocol messages.  Such information could aid an
       attacker in mounting a direct attack on iSCSI and iFCP devices,
       such as a denial-of-service attack or outright physical theft.

  To address these threats, the following capabilities are needed:

  [a]  Unicast iSNS protocol messages may need to be authenticated.  In
       addition, to protect against threat [3] above, confidentiality
       support is desirable, and REQUIRED when certain functions of
       iSNS are used.





Aboba, et al.               Standards Track                    [Page 24]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [b]  Multicast iSNS protocol messages such as the iSNS heartbeat
       message need to be authenticated.  These messages need not be
       confidential since they do not leak critical information.

  There is no requirement that the identities of iSNS entities be kept
  confidential.  Specifically, the identity and location of the iSNS
  server need not be kept confidential.

  In order to protect against an attacker masquerading as an iSNS
  server, client devices MUST support authentication of broadcast or
  multicast messages such as the iSNS heartbeat.  The iSNS
  authentication block (which is identical in format to the SLP
  authentication block) MAY be used for this purpose.  Note that the
  authentication block is used only for iSNS broadcast or multicast
  messages, and SHOULD NOT be used in unicast iSNS messages.

  Since iSNS is used to distribute authorizations determining which
  client devices can communicate, IPsec authentication and data
  integrity MUST be supported.  In addition, if iSNS is used to
  distribute security policy for iFCP and iSCSI devices, then
  authentication, data integrity, and confidentiality MUST be supported
  and used.

  Where iSNS is used without security, IP block storage protocol
  implementations MUST support a negative cache for authentication
  failures.  This allows implementations to avoid continually
  contacting discovered endpoints that fail authentication within IPsec
  or at the application layer (in the case of iSCSI Login).  The
  negative cache need not be  maintained within the IPsec
  implementation, but rather within the IP block storage protocol
  implementation.

2.6.1.  Use of iSNS to Discover Security Configuration of Peer Devices

  In practice, within a single installation, iSCSI and/or iFCP devices
  may have different security settings.  For example, some devices may
  be configured to initiate secure communication, while other devices
  may be configured to respond to a request for secure communication,
  but not to require security.  Still other devices, while security
  capable, may neither initiate nor respond securely.

  In practice, these variations in configuration can result in devices
  being unable to communicate with each other.  For example, a device
  that is configured to always initiate secure communication will
  experience difficulties in communicating with a device that neither
  initiates nor responds securely.





Aboba, et al.               Standards Track                    [Page 25]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  The iSNS protocol is used to transfer naming, discovery, and
  management information between iSCSI devices, iFCP gateways,
  management stations, and the iSNS server.  This includes the ability
  to enable discovery of security settings used for communication via
  the iSCSI and/or iFCP protocols.

  The iSNS server stores security settings for each iSCSI and iFCP
  device interface.  These security settings, which can be retrieved by
  authorized hosts, include use or non-use of IPsec, IKE, Main Mode,
  Aggressive Mode, PFS, Pre-shared Key, and certificates.

  For example, IKE may not be enabled for a particular device
  interface.  If a peer device can learn of this in advance by
  consulting the iSNS server, it will not need to waste time and
  resources attempting to initiate an IKE Phase 1 SA with that device
  interface.

  If iSNS is used to distribute security policy, then the minimum
  information that should be learned from the iSNS server is the use or
  non-use of IKE and IPsec by each iFCP or iSCSI peer device interface.
  This information is encoded in the Security Bitmap field of each
  Portal of the peer device, and is applicable on a per-interface basis
  for the peer device.  iSNS queries to acquire security configuration
  data about peer devices MUST be protected by IPsec/ESP
  authentication.

2.6.2.  Use of iSNS to Distribute iSCSI and iFCP Security Policies

  Once communication between iSNS clients and the iSNS server are
  secured through use of IPsec, iSNS clients have the capability to
  discover the security settings required for communication via the
  iSCSI and/or iFCP protocols.  Use of iSNS for distribution of
  security policies offers the potential to reduce the burden of manual
  device configuration, and decrease the probability of communications
  failures due to incompatible security policies.  If iSNS is used to
  distribute security policies, then IPsec authentication, data
  integrity, and confidentiality MUST be used to protect all iSNS
  protocol messages.

  The complete IKE/IPsec configuration of each iFCP and/or iSCSI device
  can be stored in the iSNS server, including policies that are used
  for IKE Phase 1 and Phase 2 negotiations between client devices.  The
  IKE payload format includes a series of one or more proposals that
  the iSCSI or iFCP device will use when negotiating the appropriate
  IPsec policy to use to protect iSCSI or iFCP traffic.






Aboba, et al.               Standards Track                    [Page 26]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Note that iSNS distribution of security policy is not necessary if
  the security settings can be determined by other means, such as
  manual configuration or IPsec security policy distribution.  If an
  entity has already obtained its security configuration via other
  mechanisms, then it MUST NOT request security policy via iSNS.

  For further details on how to store and retrieve IKE policy proposals
  in the iSNS server, see [iSNS].

2.6.3.  iSNS Interaction with IKE and IPsec

  When IPsec security is enabled, each iSNS client that is registered
  in the iSNS database maintains at least one Phase 1 and one Phase 2
  security association with the iSNS server.  All iSNS protocol
  messages between iSNS clients and the iSNS server are to be protected
  by a phase-2 security association.

2.6.4.  iSNS Server Implementation Requirements

  All iSNS implementations MUST support the replay protection
  mechanisms of IPsec.  ESP in tunnel mode MUST be implemented, and
  IPsec with ESP in transport mode MAY be implemented.

  To provide data origin authentication and integrity with ESP, HMAC-
  SHA1 MUST be supported, and AES in CBC MAC mode with XCBC extensions
  [RFC3566] SHOULD be supported.  When confidentiality is implemented,
  3DES in CBC mode MUST be supported, and AES in Counter mode, as
  described in [RFC3686], SHOULD be supported.  DES in CBC mode SHOULD
  NOT be used due to its inherent weakness.  If confidentiality is not
  required but data origin authentication and integrity is enabled, ESP
  with NULL Encryption MUST be used.

  Conformant iSNS implementations MUST support IKE for authentication,
  negotiation of security associations, and key management, using the
  IPsec DOI, described in [RFC2407].  IP block storage protocols can be
  expected to send data in high volumes, thereby requiring rekey.
  Since manual keying does not provide rekeying support, its use is
  prohibited with IP block storage protocols.  Although iSNS does not
  send a high volume of data, and therefore rekey is not a major
  concern, manual keying SHOULD NOT be used.  This is for consistency,
  since dynamic keying support is already required in IP storage
  security implementations.

  Conformant iSNS security implementations MUST support authentication
  using a pre- shared key, and MAY support certificate-based peer
  authentication using digital signatures.  Peer authentication using
  the public key encryption methods outlined in [RFC2409] sections 5.2
  and 5.3 SHOULD NOT be used.



Aboba, et al.               Standards Track                    [Page 27]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Conformant iSNS implementations MUST support IKE Main Mode and SHOULD
  support Aggressive Mode.  IKE Main Mode with pre-shared key
  authentication SHOULD NOT be used when either of the peers use
  dynamically assigned IP addresses.  While Main Mode with pre-shared
  key authentication offers good security in many cases, situations
  where dynamically assigned addresses are used force use of a group
  pre-shared key, which is vulnerable to man-in-the-middle attack.

  When digital signatures are used for authentication, either IKE Main
  Mode or IKE Aggressive Mode MAY be used.  In all cases, access to
  locally stored secret information (pre-shared key or private key for
  digital signing) MUST be suitably restricted, since compromise of the
  secret information nullifies the security properties of the IKE/IPsec
  protocols.

  When digital signatures are used to achieve authentication, an IKE
  negotiator SHOULD use IKE Certificate Request Payload(s) to specify
  the certificate authority (or authorities) that are trusted in
  accordance with its local policy.  IKE negotiators SHOULD check the
  pertinent Certificate Revocation List (CRL) before accepting a PKI
  certificate for use in IKE's authentication procedures.

3.  iSCSI Security Interoperability Guidelines

  The following guidelines are established to meet iSCSI security
  requirements using IPsec in practical situations.

3.1.  iSCSI Security Issues

  iSCSI provides for iSCSI Login, outlined in [RFC3720], which includes
  support for application-layer authentication.  This authentication is
  logically between the iSCSI initiator and the iSCSI target (as
  opposed to between the TCP/IP communication endpoints).  The intent
  of the iSCSI design is that the initiator and target represent the
  systems (e.g., host and disk array or tape system) participating in
  the communication, as opposed to network communication interfaces or
  endpoints.

  The iSCSI protocol and iSCSI Login authentication do not meet the
  security requirements for iSCSI.  iSCSI Login authentication provides
  mutual authentication between the iSCSI initiator and target at
  connection origination, but does not protect control and data traffic
  on a per packet basis, leaving the iSCSI connection vulnerable to
  attack.  iSCSI Login authentication can mutually authenticate the
  initiator to the target, but does not by itself provide per-packet
  authentication, integrity, confidentiality or replay protection.  In





Aboba, et al.               Standards Track                    [Page 28]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  addition, iSCSI Login authentication does not provide for a protected
  ciphersuite negotiation.  Therefore, iSCSI Login provides a weak
  security solution.

3.2.  iSCSI and IPsec Interaction

  An iSCSI session [RFC3720], comprised of one or more TCP connections,
  is identified by the 2-tuple of the initiator-defined identifier and
  the target-defined identifier, <ISID, TSIH>.  Each connection within
  a given session is assigned a unique Connection Identification, CID.
  The TCP connection is identified by the 5-tuple <Source IP address,
  Destination IP address, Protocol (TCP), Source Port, Destination
  Port>.  An IPsec Phase 2 SA is identified by the 3-tuple <Protocol
  (ESP),destination address, SPI>.

  The iSCSI session and connection information is carried within the
  iSCSI Login Commands, transported over TCP.  Since an iSCSI initiator
  may have multiple interfaces, iSCSI connections within an iSCSI
  session may be initiated from different IP addresses.  Similarly,
  multiple iSCSI targets may exist behind a single IP address, so that
  there may be multiple iSCSI sessions between a given <source IP
  address, destination IP address> pair.

  When multiple iSCSI sessions are active between a given <initiator,
  target> pair, the set of TCP connections used by a given iSCSI
  session must be disjoint from those used by all other iSCSI sessions
  between the same <initiator, target> pair.  Therefore a TCP
  connection can be associated with one and only one iSCSI session.

  The relationship between iSCSI sessions, TCP connections and IKE
  Phase 1 and Phase 2 SAs is as follows:

  [1]  An iSCSI initiator or target may have more than one interface,
       and therefore may have multiple IP addresses.  Also, multiple
       iSCSI initiators and targets may exist behind a single IP
       address.  As a result, an iSCSI Session may correspond to
       multiple IKE Phase 1 Security Associations, though typically a
       single IKE Phase 1 security association will exist for an
       <initiator IP address, target IP address> tuple.

  [2]  Each TCP connection within an iSCSI Session is protected by an
       IKE Phase 2 SA.  The selectors may be specific to that TCP
       connection or may cover multiple connections.  While each IKE
       Phase 2 SA may protect multiple TCP connections, each TCP
       connection is transported under only one IKE Phase 2 SA.






Aboba, et al.               Standards Track                    [Page 29]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Given this, all the information needed for the iSCSI/IPsec binding is
  contained within the iSCSI Login messages from the iSCSI initiator
  and target.  This includes the binding between an IKE Phase 1 SA and
  the corresponding iSCSI sessions, as well as the binding between a
  TCP connection, an IKE Phase 2 SA and the iSCSI connection ID.

3.3.  Initiating a New iSCSI Session

  In order to create a new iSCSI Session, if an IKE Phase 1 SA does not
  already exist, then it is established by an initiator implementing
  iSCSI security.  Subsequent iSCSI connections established within the
  iSCSI session will typically be protected by IKE Phase 2 SAs derived
  from that IKE Phase 1 SA, although additional IKE Phase 1 SAs can
  also be brought up.

  The initiator and target implementations successfully complete the
  IKE Phase 1 and Phase 2 negotiations before the iSCSI initiator
  contacts the target on well-known TCP port 3260, and sends the iSCSI
  Login command over the TCP connection.  IPsec implementations
  configured with the correct policies (e.g., use ESP with non-null
  transform for all traffic destined for the iSCSI well-known TCP port
  3260) will handle this automatically.

  The initiator fills in the ISID field, and leaves the TSIH field set
  to zero, to indicate that it is the first message of a new session
  establishment exchange.  The initiator also fills in a CID value,
  that identifies the TCP connection over which the Login command is
  being exchanged.  When the iSCSI target replies with its Login
  Command, both iSCSI devices will know the TSIH, and therefore the
  iSCSI session identifier <ISID, TSIH>.

  A single iSCSI session identifier may have multiple associated IKE
  Phase 1 SAs, and each IKE Phase 1 SA may correspond to multiple iSCSI
  session identifiers.  Each iSCSI connection (identified by the
  connection identifier) corresponds to a single TCP connection
  (identified by the 5-tuple).  Each IKE Phase 2 SA is identified by
  the <Protocol (ESP), destination address, SPI> combination.  A Phase
  2 SA may protect multiple TCP connections, and corresponds to a
  single IKE Phase 1 SA.

  Within IKE, each key refresh requires that a new security association
  be established.  In practice there is a time interval during which an
  old, about-to-expire SA and newly established SA will both be valid.
  The IPsec implementation will choose which security association to
  use based on local policy, and iSCSI concerns play no role in this
  selection process.





Aboba, et al.               Standards Track                    [Page 30]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


3.4.  Graceful iSCSI Teardown

  Mechanisms within iSCSI provide for both graceful and non-graceful
  teardown of iSCSI Sessions or individual TCP connections within a
  given session.  The iSCSI Logout command is used to effect graceful
  teardown.  This command allows the iSCSI initiator to request that:

  [a]  the session be closed

  [b]  a specific connection within the session be closed

  [c]  a specific connection be marked for recovery

  When the iSCSI implementation wishes to close a session, it uses the
  appropriate iSCSI commands to accomplish this.  After exchanging the
  appropriate iSCSI control messages for session closure, the iSCSI
  security implementation will typically initiate a half-close of each
  TCP connection within the iSCSI session.

  When the iSCSI security implementation wishes to close an individual
  TCP connection while leaving the parent iSCSI session active, it
  should half-close the TCP connection.  After the expiration of the
  TIME_WAIT timeout, the TCP connection is closed.

3.5.  Non-graceful iSCSI Teardown

  If a given TCP connection unexpectedly fails, the associated iSCSI
  connection is torn down.  There is no requirement that an IKE Phase 2
  delete immediately follow iSCSI connection tear down or Phase 1
  deletion.  Since an IKE Phase 2 SA may correspond to multiple TCP
  connections, such a deletion might be inappropriate.  Similarly, if
  the IKE implementation receives a Phase 2 Delete message for a
  security association corresponding to a TCP connection, this does not
  necessarily imply that the TCP or iSCSI connection is to be torn
  down.

  If a Logout Command/Logout Response sequence marks a connection for
  removal from the iSCSI session, then after the iSCSI peer has
  executed an iSCSI teardown process for the connection, the TCP
  connection will be closed.  The iSCSI connection state can then be
  safely removed.

  Since an IKE Phase 2 SA may be used by multiple TCP connections, an
  iSCSI implementation should not depend on receiving the IPsec Phase 2
  delete as confirmation that the iSCSI peer has executed an iSCSI
  teardown process for the connection.





Aboba, et al.               Standards Track                    [Page 31]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Since IPsec acceleration hardware may only be able to handle a
  limited number of active IKE Phase 2 SAs, Phase 2 delete messages may
  be sent for idle SAs, as a means of keeping the number of active
  Phase 2 SAs to a minimum.  The receipt of an IKE Phase 2 delete
  message MUST NOT be interpreted as a reason for tearing down the
  corresponding iSCSI connection if no Logout Command/Logout Receive
  has been executed on the connection.  Rather, it is preferable to
  leave the iSCSI connection up, and if additional traffic is sent on
  it, to bring up another IKE Phase 2 SA to protect it.  This avoids
  the potential for continually bringing iSCSI connections up and down.

3.6.  Application-Layer CRC

  iSCSI's error detection and recovery assumes that the TCP and IP
  checksums provide inadequate integrity protection for high speed
  communications.  As described in [CRCTCP], when operating at high
  speeds, the 16-bit TCP checksum [RFC793] will not necessarily detect
  all errors, resulting in possible data corruption.  iSCSI [RFC3720]
  therefore incorporates a 32-bit CRC to protect its headers and data.

  When a CRC check fails (i.e., CRC computed at receiver does not match
  the received CRC), the iSCSI PDU covered by that CRC is discarded.
  Since presumably the error was not detected by the TCP checksum, TCP
  retransmission will not occur and thus cannot assist in recovering
  from the error.  iSCSI contains both data and command retry
  mechanisms to deal with the resulting situations, including SNACK,
  the ability to reissue R2T commands, and the retry (X) bit for
  commands.

  IPsec offers protection against an attacker attempting to modify
  packets in transit, as well as unintentional packet modifications
  caused by network malfunctions or other errors.  In general, IPsec
  authentication transforms afford stronger integrity protection than
  both the 16-bit TCP checksum and the 32-bit application-layer CRC
  specified for use with iSCSI.  Since IPsec integrity protection
  occurs below TCP, if an error is discovered, then the packet will be
  discarded and TCP retransmission will occur, so that no recovery
  action need be taken at the iSCSI layer.

3.6.1.  Simplification of Recovery Logic

  Where IPsec integrity protection is known to be in place end-to-end
  between iSCSI endpoints (or the portion that requires additional
  integrity protection), portions of iSCSI can be simplified.  For
  example, mechanisms to recover from CRC check failures are not
  necessary.





Aboba, et al.               Standards Track                    [Page 32]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  If the iSCSI CRC is negotiated, the recovery logic can be simplified
  to regard any CRC check failure as fatal (e.g., generate a SCSI CHECK
  CONDITION on data error, close the corresponding TCP connection on
  header error) because it will be very rare for errors undetected by
  IPsec integrity protection to be detected by the iSCSI CRC.

3.6.2.  Omission of iSCSI CRC

  In some situations where IPsec is employed, the iSCSI CRC will not
  provide additional protection and can be omitted.

  For example, where IPsec processing as well as TCP checksum and iSCSI
  CRC verification are offloaded within the NIC, each of these checks
  will be verified prior to transferring data across the bus, so that
  subsequent errors will not be detected by these mechanisms.  As a
  result, where IPsec processing is offloaded to the NIC, the iSCSI CRC
  is not necessary and the implementations may wish not to negotiate
  it.

  However, in other circumstances, the TCP checksum and iSCSI CRC will
  provide additional error coverage because they are computed and
  checked at a different point in the protocol stack or in devices
  different from those that implement the IPsec integrity checks.  The
  resulting coverage of additional possible errors may make it
  desirable to negotiate use of the iSCSI CRC even when IPsec integrity
  protection is in use.  Examples of these situations include where:

  [1]  IPsec, TCP and iSCSI are implemented purely in software.  Here,
       additional failure modes may be detected by the TCP checksum
       and/or iSCSI CRC.  For example, after the IPsec message
       integrity check is successfully verified, the segment is copied
       as part of TCP processing, and a memory error during this
       process might cause the TCP checksum or iSCSI CRC verification
       to fail.

  [2]  The implementation is an iSCSI-iSCSI proxy or gateway.  Here the
       iSCSI CRC can be propagated from one iSCSI connection to
       another.  In this case, the iSCSI CRC is useful to protect iSCSI
       data against memory, bus, or software errors within the proxy or
       gateway, and requesting it is desirable.

  [3]  IPsec is provided by a device external to the actual iSCSI
       device.  Here the iSCSI header and data CRCs can be kept across
       the part of the connection that is not protected by IPsec.  For
       instance, the iSCSI connection could traverse an extra bus,
       interface card, network, interface card, and bus between the





Aboba, et al.               Standards Track                    [Page 33]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


       iSCSI device and the device providing IPsec.  In this case, the
       iSCSI CRC is desirable, and the iSCSI implementation behind the
       IPsec device may request it.

       Note that if both ends of the connection are on the same
       segment, then traffic will be effectively protected by the layer
       2 CRC, so that negotiation of the iSCSI CRC is not necessary to
       protect against NIC and network errors, although it may be
       desirable for other reasons (e.g., [1] and [2] above).

4.  iFCP and FCIP Security Issues

4.1.  iFCP and FCIP Authentication Requirements

  iFCP and FCIP are peer-to-peer protocols.  iFCP and FCIP sessions may
  be initiated by either or both peer gateways.  Consequently, bi-
  directional authentication of peer gateways MUST be provided.

  iFCP and FCIP are transport protocols that encapsulate SCSI and Fibre
  Channel frames over IP.  Therefore, Fibre Channel, operating system,
  and user identities are transparent to the iFCP and FCIP protocols.

  iFCP gateways use Discovery Domain information obtained from the iSNS
  server to determine whether the initiating Fibre Channel N_PORT
  should be allowed access to the target N_PORT.  N_PORT identities
  used in the Port Login (PLOGI) process will be considered
  authenticated provided that they are received over a connection whose
  security complies with the local security policy.

  There is no requirement that the identities used in authentication be
  kept confidential.

4.2.  iFCP Interaction with IPsec and IKE

  A conformant iFCP Portal is capable of establishing one or more IKE
  Phase-1 Security Associations (SAs) to a peer iFCP Portal.  A Phase-1
  SA may be established when an iFCP Portal is initialized, or may be
  deferred until the first TCP connection with security requirements is
  established.

  An IKE Phase-2 SA protects one or more TCP connections within the
  same iFCP Portal.  More specifically, the successful establishment of
  an IKE Phase-2 SA results in the creation of two uni-directional
  IPsec SAs fully qualified by the tuple <SPI, destination IP address,
  ESP>.  These SAs protect the setup process of the underlying TCP
  connections and all their subsequent TCP traffic.  Each of the TCP
  connections protected by an SA is either in the unbound state, or is
  bound to a specific iFCP session.



Aboba, et al.               Standards Track                    [Page 34]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  In summary, at any point in time:

  [1] There exist 0..M IKE Phase-1 SAs between peer iFCP portals
  [2] Each IKE Phase-1 SAs has 0..N IKE Phase-2 SAs
  [3] Each IKE Phase-2 SA protects 0..Z TCP connections

  The creation of an IKE Phase-2 SA may be triggered by security policy
  rules retrieved from an iSNS server.  Alternately, the creation of an
  SA may be triggered by policy rules configured through a management
  interface, reflecting iSNS-resident policy rules.  Likewise, the use
  of a Key Exchange payload in Quick Mode for perfect forward secrecy
  may be driven by security policy rules retrieved from the iSNS
  server, or set through a management interface.

  If an iFCP implementation makes use of unbound TCP connections, and
  such connections belong to an iFCP Portal with security requirements,
  then the unbound connections MUST be protected by an SA at all times
  just like bound connections.

  Upon receiving an IKE Phase-2 delete message, there is no requirement
  to terminate the protected TCP connections or delete the associated
  IKE Phase-1 SA.  Since an IKE Phase-2 SA may be associated with
  multiple TCP connections, terminating such connections might in fact
  be inappropriate and untimely.

  To minimize the number of active Phase-2 SAs, IKE Phase-2 delete
  messages may be sent for Phase-2 SAs whose TCP connections have not
  handled data traffic for a while.  To minimize the use of SA
  resources while the associated TCP connections are idle, creation of
  a new SA should be deferred until new data are to be sent over the
  connections.

4.3.  FCIP Interaction with IPsec and IKE

  FCIP Entities establish tunnels with other FCIP Entities in order to
  transfer IP encapsulated FC frames.  Each tunnel is a separate FCIP
  Link, and can encapsulate multiple TCP connections.  The binding of
  TCP connections to an FCIP Link is performed using the Fibre Channel
  World Wide Names (WWNs) of the two FCIP Entities.

  FCIP Entities may have more than one interface and IP address, and it
  is possible for an FCIP Link to contain multiple TCP connections
  whose FCIP endpoint IP Addresses are different.  In this case, an IKE
  Phase 1 SA is typically established for each FCIP endpoint IP Address
  pair.  For the purposes of establishing an IKE Phase 1 SA, static IP
  addresses are typically used for identification.





Aboba, et al.               Standards Track                    [Page 35]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Each TCP connection within an FCIP Link corresponds to an IKE Phase 2
  (Quick Mode) SA.  This is established prior to sending the initial
  TCP SYN packet and applies to the life of the connection.  Phase 2
  negotiation is also required for rekeying, in order to protect
  against replay attacks.

  FCIP implementations MAY provide administrative management of
  Confidentiality usage.  These management interfaces SHOULD be
  provided in a secure manner, so as to prevent an attacker from
  subverting the security process by attacking the management
  interface.

  FCIP Entities do not require any user-level authentication, since all
  FCIP Entities participate in a machine-level tunnel function.  FCIP
  uses SLP for discovery, but not to distribute security policies.

5.  Security Considerations

5.1.  Transport Mode Versus Tunnel Mode

  With respect to block storage protocols, the major differences
  between the IPsec tunnel mode and transport mode are as follows:

  [1]  MTU considerations.
       Tunnel mode introduces an additional IP header into the datagram
       that reflects itself in a corresponding decrease in the path MTU
       seen by packets traversing the tunnel.  This may result in a
       decrease in the maximum segment size of TCP connections running
       over the tunnel.

  [2]  Address assignment and configuration.
       Within IPsec tunnel mode, it is necessary for inner and outer
       source addresses to be configured, and for inner and outer
       destination addresses to be discovered.  Within transport mode
       it is only necessary to discover a single destination address
       and configure a single source address.  IPsec tunnel mode
       address usage considerations are discussed in more detail below.

  [3]  NAT traversal.
       As noted in [RFC3715], IPsec tunnel mode ESP can traverse NAT in
       limited circumstances, whereas transport mode ESP cannot
       traverse NAT.  To enable NAT traversal in the general case, the
       IPsec NAT traversal functionality described in [RFC3715],
       [UDPIPsec] and [NATIKE] can be implemented.  More details are
       provided in the next section.






Aboba, et al.               Standards Track                    [Page 36]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [4]  Firewall traversal.
       Where a block storage protocol is to traverse administrative
       domains, the firewall administrator may desire to verify the
       integrity and authenticity of each transiting packet, rather
       than opening a hole in the firewall for the block storage
       protocol.  IPsec tunnel mode lends itself to such verification,
       since the firewall can terminate the tunnel mode connection
       while still allowing the endpoints to communicate end-to-end.
       If desired, the endpoints can in addition utilize IPsec
       transport mode for end-to-end security, so that they can also
       verify authenticity and integrity of each packet for themselves.

       In contrast, carrying out this verification with IPsec transport
       mode is more complex, since the firewall will need to terminate
       the IPsec transport mode connection and will need to act as an
       iSCSI, iFCP or FCIP gateway or TCP proxy, originating a new
       IPsec transport mode connection from the firewall to the
       internal endpoint.  Such an implementation cannot provide end-
       to-end authenticity or integrity protection, and an
       application-layer CRC (iSCSI) or forwarding of the Fibre Channel
       frame CRC (iFCP and FCIP) is necessary to protect against errors
       introduced by the firewall.

  [5]  IPsec-application integration.
       Where IPsec and the application layer protocol are implemented
       on the same device or host, it is possible to enable tight
       integration between them.  For example, the application layer
       can request and verify that connections are protected by IPsec,
       and can obtain attributes of the IPsec security association.
       While in transport mode implementations the IPsec and
       application protocol implementations typically reside on the
       same host, with IPsec tunnel mode they may reside on different
       hosts. Where IPsec is implemented on an external gateway,
       integration between the application and IPsec is typically not
       possible.  This limits the ability of the application to control
       and verify IPsec behavior.

5.1.1.  IPsec Tunnel Mode Addressing Considerations

  IPsec tunnels include both inner and outer source as well as
  destination addresses.

  When used with IP block storage protocols, the inner destination
  address represents the address of the IP block storage protocol peer
  (e.g., the ultimate destination for the packet).  The inner
  destination address can be discovered using SLPv2 or iSNS, or can be
  resolved from an FQDN via DNS, so that obtaining this address is
  typically not an issue.



Aboba, et al.               Standards Track                    [Page 37]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  The outer destination address represents the address of the IPsec
  security gateway used to reach the peer.  Several mechanisms have
  been proposed for discovering the IPsec security gateway used to
  reach a particular peer.  [RFC2230] discusses the use of KX Resource
  Records (RRs) for IPsec gateway discovery.  However, while KX RRs are
  supported by many DNS server implementations, they have not yet been
  widely deployed.  Alternatively, DNS SRV [RFC2782] can be used for
  this purpose.  Where DNS is used for gateway location, DNS security
  mechanisms such as DNSSEC ([RFC2535], [RFC2931]), TSIG [RFC2845], and
  Simple Secure Dynamic Update [RFC3007] are advisable.

  When used with IP block storage protocols, the outer source address
  is configured either statically or dynamically, using mechanisms such
  as DHCPv4 [RFC2131], DHCPV6 [RFC3315], or stateless address
  autoconfiguration [RFC2373].

  The inner source address SHOULD be included in the Quick Mode ID
  payload when the peer establishes a tunnel mode SA with the IPsec
  security gateway.  This enables the IPsec security gateway to
  properly route packets back to the remote peer.  The inner source
  address can be configured via a variety of mechanisms, depending on
  the scenario.  Where the IP block storage peers are located within
  the same administrative domain, it is typically possible for the
  inner and outer source addresses to be the same.  This will work
  because the outer source address is presumably assigned from within a
  prefix assigned to the administrative domain, and is therefore
  routable within the domain. Assuming that the IPsec security gateway
  is aware of the inner source address used by the connecting peer and
  plumbs a host route for it, then packets arriving at the IPsec
  security gateway destined for the address can be correctly
  encapsulated and sent down the correct tunnel.

  Where IP block storage peers are located within different
  administrative domains, it may be necessary for the inner source
  address to be assigned by the IPsec security gateway, effectively
  "joining" the remote host to the LAN attached to the IPsec security
  gateway.  For example, if the remote peer were to use its assigned
  (outer) source address as the inner source address, then a number of
  problems might result:

  [1]  Intrusion detection systems sniffing the LAN behind the IPsec
       security gateway would notice source addresses originating
       outside the administrative domain.

  [2]  Reply packets might not reach their destination, since the IPsec
       security gateway typically does not advertise the default route,
       but rather only the prefix that it allocates addresses from.
       Since the remote peer's address does not originate from with a



Aboba, et al.               Standards Track                    [Page 38]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


       prefix native to the administrative domain, it is likely that
       routers within the domain would not have a route for it, and
       would send the packet off to the router advertising the default
       route (perhaps a border router) instead of to the IPsec security
       gateway.

  For these reasons, for inter-domain use, assignment of inner source
  addresses may be needed.  At present this is not a very common
  scenario; however, if address assignment is provided, then DHCP-based
  address assignment within IPsec tunnel mode [RFC3456] MUST be
  supported.  Note that this mechanism is not yet widely deployed
  within IPsec security gateways; existing IPsec tunnel mode servers
  typically implement this functionality via proprietary extensions to
  IKE.

5.2.  NAT Traversal

  As noted in [RFC3715], tunnel mode ESP can traverse NAT in a limited
  set of circumstances.  For example, if there is only one protocol
  endpoint behind a NAT, "ANY to ANY" selectors are negotiated, and the
  receiver does not perform source address validation, then tunnel mode
  ESP may successfully traverse NATs.  Since ignoring source address
  validation introduces new security vulnerabilities, and negotiation
  of specific selectors is desirable so as to limit the traffic that
  can be sent down the tunnel, these conditions may not necessarily
  apply, and tunnel mode NAT traversal will not always be possible.

  TCP carried within Transport mode ESP cannot traverse NAT, even
  though ESP itself does not include IP header fields within its
  message integrity check.  This is because the 16-bit TCP checksum is
  calculated based on a "pseudo-header" that includes IP header fields,
  and the checksum is protected by the IPsec ESP message integrity
  check.  As a result, the TCP checksum will be invalidated by a NAT
  located between the two endpoints.

  Since TCP checksum calculation and verification is mandatory in both
  IPv4 and IPv6, it is not possible to omit checksum verification while
  remaining standards compliant.  In order to enable traversal of NATs
  existing while remaining in compliance, iSCSI, iFCP or FCIP security
  implementations can implement IPsec/IKE NAT traversal, as described
  in [RFC3715], [UDPIPsec], and [NATIKE].










Aboba, et al.               Standards Track                    [Page 39]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  The IKE [NATIKE] and IPsec [UDPIPsec] NAT traversal specifications
  enable UDP encapsulation of IPsec to be negotiated if a NAT is
  detected in the path.  By determining the IP address of the NAT, the
  TCP checksum can be calculated based on a pseudo-header including the
  NAT-adjusted address and ports.  If this is done prior to calculating
  the IPsec message integrity check, TCP checksum verification will not
  fail.

5.3.  IKE Issues

  There are situations where it is necessary for IKE to be implemented
  in firmware.  In such situations, it is important to keep the size of
  the IKE implementation within strict limits.  An upper bound on the
  size of an IKE implementation might be considered to be 800 KB, with
  80 KB enabling implementation in a wide range of situations.

  As noted in Table 5.3-1 on the next page, IKE implementations
  currently exist which meet the requirements.  Therefore, while
  removal of seldom used IKE functionality (such as the nonce
  authentication methods) would reduce complexity, implementations
  typically will not require this in order to fit within the code size
  budget.

5.4.  Rekeying Issues

  It is expected that IP block storage implementations will need to
  operate at high speed.  For example, implementations operating at 1
  Gbps are currently in design, with 10 Gbps implementations to follow
  shortly thereafter.  At these speeds, a single IPsec SA could rapidly
  cycle through the 32-bit IPsec sequence number space.

  For example, a single SA operating at 1 Gbps line rate and sending 64
  octet packets would exhaust the 32-bit sequence number space in 2200
  seconds, or 37 minutes.  With 1518 octet packets, exhaustion would
  occur in 14.5 hours.  At 10 Gbps, exhaustion would occur in 220
  seconds or 3.67 minutes.  With 1518 octet packets, this would occur
  within 1.45 hours.

  In the future, it may be desirable for implementations operating at
  speeds of 1 Gbps or greater to implement IPsec sequence number
  extension, described in [Seq].  Note that depending on the transform
  in use, it is possible that rekeying will be required prior to
  exhaustion of the sequence number space.

  In CBC-mode ciphers the ciphertext of one block depends on the
  plaintext of that block as well as the ciphertext of the previous
  block.  This implies that if the ciphertext of two blocks are
  identical, and the plaintext of the next block is also identical,



Aboba, et al.               Standards Track                    [Page 40]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  then the ciphertext of the next block will be identical.  Thus, if
  identical ciphertext blocks can be found with matching subsequent
  blocks, an attacker can determine the existence of matching
  plaintext.

  Such "Birthday attacks" were examined by Bellare et. al. in
  [DESANALY].  On average, a ciphertext block of size n bits will be
  expected to repeat every 2^[n/2] blocks.  Although a single "birthday
  attack" does not provide much information to an attacker, multiple
  such attacks might provide useful information.  To  make this
  unlikely, it is recommended that a rekey occur before 2^[n/2] blocks
  have been sent on a given SA.  Bellare et. al. have formalized this
  in [DESANALY], showing that the insecurity of CBC mode increases as
  O(s^2/2^n), where n is the block size in bits, and s is the total
  number of blocks encrypted.  These conclusions do not apply to
  counter mode.



































Aboba, et al.               Standards Track                    [Page 41]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               | Code size   |             |
  |Implementation |  (octets)   | Release     |
  |               |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             | Linux       |
  | Pluto         |  258KB      | FreeSWAN    |
  |(FreeSWAN)     |             | x86         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | Racoon        |  400KB      | NetBSD 1.5  |
  | (KAME)        |             | x86         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | Isakmpd       |  283KB      | NetBSD 1.5  |
  | (Erickson)    |             | x86         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | WindRiver     |  142KB      | PowerPC     |
  |               |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | Cisco         |  222KB      | PowerPC     |
  | VPN1700       |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | Cisco         |  350K       | PowerPC     |
  | VPN3000       |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |
  | Cisco         |  228KB      | MIPS        |
  | VPN7200       |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


  Table 5.3-1 - Code Size for IKE implementations

  The formula below sets a limit on the bytes that can be sent on a CBC
  SA before a rekey is required:

              B = (n/8) * 2^[n/2]
  Where:
              B = maximum bytes sent on the SA
              n = block size in bits







Aboba, et al.               Standards Track                    [Page 42]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  This means that cipher block size as well as key length needs to be
  considered in the rekey decision.  3DES uses a block size n = 64 bits
  (2^3 bytes); this implies that the SA must be rekeyed before B =
  (64/8) * (2^32) = 2^35 bytes are sent.  At 1 Gbps, this implies that
  a rekey will be required every 274.9 seconds (4.6 minutes); at 10
  Gbps, a rekey is required every 27.5 seconds.

  In terms of the sequence number space, for a 3DES encrypted message
  of 512 = 2^9 bytes (2^6 blocks) this implies that the key has become
  insecure after about 2^26 messages.

5.5.  Transform Issues

  Since IP block storage implementations may operate at speeds of 1
  Gbps or greater, the ability to offer IPsec security services at high
  speeds is of intense concern.  Since support for multiple algorithms
  multiplies the complexity and expense of hardware design, one of the
  goals of the transform selection effort is to find a minimal set of
  confidentiality and authentication algorithms implementable in
  hardware at speeds of up to 10 Gbps, as well as being efficient for
  implementation in software at speeds of 100 Mbps or slower.

  In this specification, we primarily concern ourselves with IPsec
  transforms that have already been specified, and for which parts are
  available that can run at 1 Gbps line rate.  Where existing
  algorithms do not gracefully scale to 10 Gbps, we further consider
  algorithms for which transform specifications are not yet complete,
  but for which parts are expected to be available for inclusion in
  products shipping within the next 12 months.  As the state of the art
  advances, the range of feasible algorithms will broaden and
  additional mandatory-to-implement algorithms may be considered.

  Section 5 of [RFC2406] states:

     "A compliant ESP implementation MUST support the following
     mandatory-to-implement algorithms:

        - DES in CBC mode
        - HMAC with MD5
        - HMAC with SHA-1
        - NULL Authentication algorithm
        - NULL Encryption algorithm"

  The DES algorithm is specified in [FIPS46-3]; implementation
  guidelines are found in [FIPS74], and security issues are discussed
  in [DESDIFF],[DESINT], [DESCRACK].  The DES IPsec transform is
  defined in [RFC2405] and the 3DES in CBC mode IPsec transform is
  specified in [RFC2451].



Aboba, et al.               Standards Track                    [Page 43]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  The MD5 algorithm is specified in [RFC1321]; HMAC is defined in
  [RFC2104] and security issues with MD5 are discussed in [MD5Attack].
  The HMAC-MD5 IPsec transform is specified in [RFC2403].  The HMAC-
  SHA1 IPsec transform is specified in [RFC2404].

  In addition to these existing algorithms, NIST is currently
  evaluating the following modes [NSPUE2] of AES, defined in [FIPS197]:

     AES in Electronic Codebook (ECB) confidentiality mode
     AES in Cipher Block Chaining (CBC) confidentiality mode
     AES in Cipher Feedback (CFB) confidentiality mode
     AES in Output Feedback (OFB) confidentiality mode
     AES in Counter (CTR) confidentiality mode
     AES CBC-MAC authentication mode

  When utilizing AES modes, it may be necessary to use larger public
  keys; the tradeoffs are described in [KeyLen].  Additional MODP
  Diffie-Hellman groups for use with IKE are described in [RFC3526].

  The Modes [NSPUE2] effort is also considering a number of additional
  algorithms, including the following:

     PMAC

  To provide authentication, integrity and replay protection, IP block
  storage security implementations MUST support HMAC-SHA1 [RFC2404] for
  authentication, and AES in CBC MAC mode with XCBC extensions SHOULD
  be supported [RFC3566].

  HMAC-SHA1 [RFC2404] is to be preferred to HMAC-MD5, due to concerns
  that have been raised about the security of MD5 [MD5Attack].  HMAC-
  SHA1 parts are currently available that run at 1 Gbps, the algorithm
  is implementable in hardware at speeds up to 10 Gbps, and an IPsec
  transform specification [RFC2404] exists.  As a result, it is most
  practical to utilize HMAC-SHA1 as the authentication algorithm for
  products shipping in the near future.  AES in CBC-MAC authentication
  mode with XCBC extensions was selected since it avoids adding
  substantial additional code if AES is already being implemented for
  encryption; an IPsec transform document is available [RFC3566].

  Authentication transforms also exist that are considerably more
  efficient to implement than HMAC-SHA1, or AES in CBC-MAC
  authentication mode.  UMAC [UMAC],[UMACKR] is more efficient to
  implement in software and PMAC [PMAC] is more efficient to implement
  in hardware.  PMAC is currently being evaluated as part of the NIST
  modes effort [NSPUE2] but an IPsec transform does not yet exist;
  neither does a UMAC transform.




Aboba, et al.               Standards Track                    [Page 44]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  For confidentiality, the ESP mandatory-to-implement algorithm (DES)
  is unacceptable.  As noted in [DESCRACK], DES is crackable with
  modest computation resources, and so is inappropriate for use in
  situations requiring high levels of security.

  To provide confidentiality for iSCSI, iFCP, and FCIP, 3DES in CBC
  mode [RFC2451] MUST be supported and AES in Counter Mode [RFC3686]
  SHOULD be supported.  For use in high speed implementations, 3DES has
  significant disadvantages.  However, a 3DES IPsec transform has been
  specified and parts are available that can run at 1 Gbps, so
  implementing 3DES in products is practical for the short term.

  As described in Appendix B, 3DES software implementations make
  excessive computational demands at speeds of 100 Mbps or greater,
  effectively ruling out software-only implementations.  In addition,
  3DES implementations  require rekeying prior to exhaustion of the
  current 32-bit IPsec sequence number space, and thus would not be
  able to make use of sequence space extensions if they were available.
  This means that 3DES will require very frequent rekeying at speeds of
  10 Gbps or faster.  Thus, 3DES is inconvenient for use at very high
  speeds, as well as being impractical for implementation in software
  at slower speeds (100+ Mbps).

5.6.  Fragmentation Issues

  When certificate authentication is used, IKE fragmentation can be
  encountered.  This can occur when certificate chains are used, or
  even when exchanging a single certificate if the key size or size of
  other certificate fields (such as the distinguished name and other
  OIDs) is large enough.  Many Network Address Translators (NATs) and
  firewalls do not handle fragments properly, dropping them on inbound
  and/or outbound.

  Routers in the path will also frequently discard fragments after the
  initial one, since they typically will not contain full IP headers
  that can be compared against an Access List.

  As a result, where IKE fragmentation occurs, the endpoints will often
  be unable to establish an IPsec security association.  The solution
  to this problem is to install NAT, firewall or router code load that
  can properly support fragments. If this cannot be done, then the
  following alternatives can be considered:

  [1]  Obtaining certificates by other means.

  [2]  Reducing the size of the certificate chain.





Aboba, et al.               Standards Track                    [Page 45]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [3]  Reducing  the size of fields within the certificates.  This
       includes reduction in the key size, the distinguished name or
       other fields.  This should be considered only as a last resort.

  Fragmentation can become a concern when prepending IPsec headers to a
  frame.  One mechanism that can be used to reduce this problem is to
  utilize path MTU discovery.  For example, when TCP is used as the
  transport for iSCSI, iFCP or FCIP then path MTU discovery, described
  in [RFC1191], [RFC1435], [RFC1981], can be used to enable the TCP
  endpoints to discover the correct MTU, including effects due to IPsec
  encapsulation.

  However, Path MTU discovery fails when appropriate ICMP messages are
  not received by the host.  This occurs in IPsec implementations that
  drop unauthenticated ICMP packets.  This can result in blackholing in
  naive TCP implementations, as described in [RFC2923].  Appropriate
  TCP behavior is described in section 2.1 of [RFC2923]:

     "TCP should notice that the connection is timing out.  After
     several timeouts, TCP should attempt to send smaller packets,
     perhaps turning off the DF flag for each packet.  If this
     succeeds, it should continue to turn off PMTUD for the connection
     for some reasonable period of time, after which it should probe
     again to try to determine if the path has changed."

  If an ICMP PMTU is received by an IPsec implementation that processes
  unauthenticated ICMP packets, this value should be stored in the SA
  as proposed in [RFC2401], and IPsec should also provide notification
  of this event to TCP so that the new MTU value can be correctly
  reflected.

5.7.  Security Checks

  When a connection is opened which requires security, IP block storage
  security implementations may wish to check that the connection is
  protected by IPsec.  If security is desired and IPsec protection is
  removed on a connection, it is reinstated before non-protected IP
  block storage packets are sent.  Since IPsec verifies that each
  packet arrives on the correct SA, as long as it can be ensured that
  IPsec protection is in place, then IP block storage implementations
  can be assured that each received packet was sent by a trusted peer.

  When used with IP block storage protocols, each TCP connection MUST
  be protected by an IKE Phase 2 SA.  Traffic from one or more than one
  TCP connection may flow within each IPsec Phase 2 SA.  IP block
  storage security implementations need not verify that the IP
  addresses and TCP port values in the packet match the socket




Aboba, et al.               Standards Track                    [Page 46]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  information that was used to setup the connection.  This check will
  be performed by IPsec, preventing malicious peers from sending
  commands on inappropriate Quick Mode SAs.

5.8.  Authentication Issues

5.8.1.  Machine Versus User Certificates

  The certificate credentials provided by the iSCSI initiator during
  the IKE negotiation may be those of the machine or of the iSCSI
  entity.  When machine authentication is used, the machine certificate
  is typically stored on the iSCSI initiator and target during an
  enrollment process.  When user certificates are used, the user
  certificate can be stored either on the machine or on a smartcard.
  For iFCP and FCIP, the certificate credentials provided will almost
  always be those of the device and will be stored on the device.

  Since the value of a machine certificate is inversely proportional to
  the ease with which an attacker can obtain one under false pretenses,
  it is advisable that the machine certificate enrollment process be
  strictly controlled.  For example, only administrators may have the
  ability to enroll a machine with a machine certificate.

  While smartcard certificate storage lessens the probability of
  compromise of the private key, smartcards are not necessarily
  desirable in all situations.  For example, some organizations
  deploying machine certificates use them so as to restrict use of
  non-approved hardware.  Since user authentication can be provided
  within iSCSI login (keeping in mind the weaknesses described
  earlier), support for machine authentication in IPsec makes it is
  possible to authenticate both the machine as well as the user.  Since
  iFCP and FCIP have no equivalent of iSCSI Login, for these protocols
  only the machine is authenticated.

  In circumstances in which this dual assurance is considered valuable,
  enabling movement of the machine certificate from one machine to
  another, as would be possible if the machine certificate were stored
  on a smart card, may be undesirable.

  Similarly, when user certificate are deployed, it is advisable for
  the user enrollment process to be strictly controlled.  If for
  example, a user password can be readily used to obtain a certificate
  (either a temporary or a longer term one), then that certificate has
  no more security value than the password.  To limit the ability of an
  attacker to obtain a user certificate from a stolen password, the
  enrollment period can be limited, after which password access will be





Aboba, et al.               Standards Track                    [Page 47]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  turned off.  Such a policy will prevent an attacker obtaining the
  password of an unused account from obtaining a user certificate once
  the enrollment period has expired.

5.8.2.  Pre-Shared Keys

  Use of pre-shared keys in IKE Main Mode is vulnerable to man-in-the-
  middle attacks when used with dynamically addressed hosts (such as
  with iSCSI initiators).  In Main Mode it is necessary for SKEYID_e to
  be used prior to the receipt of the identification payload.
  Therefore the selection of the pre-shared key may only be based on
  information contained in the IP header.  However, where dynamic IP
  address assignment is typical, it is often not possible to identify
  the required pre-shared key based on the IP address.

  Thus when pre-shared key authentication is used in Main Mode along
  with entities whose address is dynamically assigned, the same pre-
  shared key is shared by a group and is no longer able to function as
  an effective shared secret.  In this situation, neither the initiator
  nor Responder identifies itself during IKE Phase 1; it is only known
  that both parties are a member of the group with knowledge of the
  pre-shared key.  This permits anyone with access to the group pre-
  shared key to act as a man-in-the-middle.  This vulnerability is
  typically not of concern where IP addresses are typically statically
  assigned (such as with iFCP and FCIP), since in this situation
  individual pre-shared keys are possible within IKE Main Mode.

  However, where IP addresses are dynamically assigned and Main Mode is
  used along with pre-shared keys, the Responder is not authenticated
  unless application-layer mutual authentication is performed (e.g.,
  iSCSI login authentication).  This enables an attacker in possession
  of the group pre-shared key to masquerade as the Responder.  In
  addition to enabling the attacker to present false data, the attacker
  would also be able to mount a dictionary attack on legacy
  authentication methods such as CHAP [RFC1994], potentially
  compromising many passwords at a time.  This vulnerability is widely
  present in existing IPsec implementations.

  Group pre-shared keys are not required in Aggressive Mode since the
  identity payload is sent earlier in the exchange, and therefore the
  pre-shared key can be selected based on the identity.  However, when
  Aggressive Mode is used the user identity is exposed and this is
  often considered undesirable.

  Note that care needs to be taken with IKE Phase 1 Identity Payload
  selection in order to enable mapping of identities to pre-shared keys
  even with Aggressive Mode.  Where the ID_IPV4_ADDR or ID_IPV6_ADDR
  Identity Payloads are used and addresses are dynamically assigned,



Aboba, et al.               Standards Track                    [Page 48]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  mapping of identities to keys is not possible, so that group pre-
  shared keys are still a practical necessity.  As a result, identities
  other than ID_IPV4_ADDR and ID_IPV6_ADDR (such as ID_FQDN or
  ID_USER_FQDN) SHOULD be employed in situations where Aggressive mode
  is utilized along with pre-shared keys and IP addresses are
  dynamically assigned.

5.8.3.  IKE and Application-Layer Authentication

  In addition to IKE authentication, iSCSI implementations utilize
  their own authentication methods.  Currently, work is underway on
  Fibre Channel security, so that a similar authentication process may
  eventually also apply to iFCP and FCIP as well.

  While iSCSI provides initial authentication, it does not provide
  per-packet authentication, integrity or replay protection.  This
  implies that the identity verified in the iSCSI Login is not
  subsequently verified on reception of each packet.

  With IPsec, when the identity asserted in IKE is authenticated, the
  resulting derived keys are used to provide per-packet authentication,
  integrity and replay protection.  As a result, the identity verified
  in the IKE conversation is subsequently verified on reception of each
  packet.

  Let us assume that the identity claimed in iSCSI Login is a user
  identity, while the identity claimed within IKE is a machine
  identity.  Since only the machine identity is verified on a per-
  packet basis, there is no way for the recipient to verify that only
  the user authenticated via iSCSI Login is using the IPsec SA.

  In fact, IPsec implementations that only support machine
  authentication typically have no way to distinguish between user
  traffic within the kernel.  As a result, where machine authentication
  is used, once an IPsec SA is opened, another user on a multi-user
  machine may be able to send traffic down the IPsec SA.  This is true
  for both transport mode and tunnel mode SAs.

  To limit the potential vulnerability, IP block storage
  implementations MUST do the following:

  [1]  Ensure that socket access is appropriately controlled.  On a
       multi-user operating system, this implies that sockets opened
       for use by IP block storage protocols MUST be exclusive.

  [2]  In the case of iSCSI, implementations MUST also ensure that
       application layer login credentials (such as iSCSI login
       credentials) are protected from unauthorized access.



Aboba, et al.               Standards Track                    [Page 49]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  If these directives are followed, then a rogue process will not be
  able to access an IP block storage volume.

  While the identity asserted within IKE is verified on a per-packet
  basis, to avoid interference between users on a given machine,
  operating system support is required.  In order to segregate traffic
  between users when user authentication is supported, the IPsec
  endpoints must ensure that only traffic from that particular user is
  sent or received within the IPsec SA.  Enforcement of this
  restriction is the responsibility of the operating system.

  In kernel mode iSCSI drivers there typically is no user context to
  perform user authentication.  In this case the authentication is
  closer to machine authentication.  In most operating systems device
  permissions would control the ability to read/write to the device
  prior to mounting.  Once the device is mounted, ACLs set by the
  filesystem control access to the device.  An administrator can access
  the blocks on the device directly (for instance, by sending pass
  through requests to the port driver directly such as in Windows NT).
  In the same way, an administrator can open a raw socket and send
  IPsec protected packets to an iSCSI target.  The situation is
  analogous, and in this respect no new vulnerability is created that
  didn't previously exist.  The Operating system's ACLs need to be
  effective to protect a device (whether it is a SCSI device or an
  iSCSI device).

5.8.4.  IP Block Storage Authorization

  IP block storage protocols can use a variety of mechanisms for
  authorization.  Where ID_FQDN is used as the Identity Payload, IP
  block storage endpoints can be configured with a list of authorized
  FQDNs.  The configuration can occur manually, or automatically via
  iSNS or the iSCSI MIB, defined in [AuthMIB].

  Assuming that IPsec authentication is successful, this list of FQDNs
  can be examined to determine authorization levels.  Where certificate
  authentication is used, it is possible to configure IP block storage
  protocol endpoints with trusted roots.  The trusted roots used with
  IP block storage protocols might be different from the trusted roots
  used for other purposes.  If this is the case, then the burden of
  negotiating use of the proper certificates lies with the IPsec
  initiator.

  Note that because IKE does not deal well with certificate chains, and
  is typically configured with a limited set of trusted roots, it is
  most appropriate for intra-domain usage.





Aboba, et al.               Standards Track                    [Page 50]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Since iSCSI supports Login authentication, it is also possible to use
  the identities presented within the iSCSI Login for authorization
  purposes.

  In iFCP, basic access control properties stem from the requirement
  that two communicating iFCP gateways be known to one or more iSNS
  servers before they can engage in iFCP exchanges.  The optional use
  of discovery domains in iSNS yields access control schemas of greater
  complexity.

5.9.  Use of AES in Counter Mode

  When utilizing AES modes, it may be necessary to use larger public
  keys; the tradeoffs are described in [KeyLen].  Additional MODP
  Diffie-Hellman groups for use with IKE are described in [RFC3526].

  When AES in counter mode is used, it is important to avoid reuse of
  the counter with the same key, even across all time.  Counter mode
  creates ciphertext by XORing generated key stream with plaintext.  It
  is fairly easy to recover the plaintext from two messages counter
  mode encrypted under the same counter value, simply by XORing
  together the two packets.  The implication of this is that it is an
  error to use IPsec manual keying with counter mode, except when the
  implementation takes heroic measures to maintain state across
  sessions.  In any case, manual keying MUST NOT be used since it does
  not provide the necessary rekeying support.

  Another counter mode issue is it makes forgery of correct packets
  trivial.  Counter mode should therefore never be used without also
  using data authentication.

6.  IANA Considerations

  This section provides guidance to the Internet Assigned Numbers
  Authority (IANA) regarding registration of values of the SRP_GROUP
  key parameter within iSCSI, in accordance with BCP 26, [RFC2434].

  IANA considerations for the iSCSI protocol are described in
  [RFC3720], Section 13; for the iFCP protocol in [iFCP], Section 12;
  and for the FCIP protocol in [FCIP], Appendix B.











Aboba, et al.               Standards Track                    [Page 51]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


6.1.  Definition of Terms

  The following terms are used here with the meanings defined in BCP
  26:  "name space", "assigned value", "registration".

  The following policies are used here with the meanings defined in BCP
  26: "Private Use", "First Come First Served", "Expert Review",
  "Specification Required", "IETF Consensus", "Standards Action".

6.2.  Recommended Registration Policies

  For registration requests where a Designated Expert should be
  consulted, the responsible IESG Area Director should appoint the
  Designated Expert.

  For registration requests requiring Expert Review, the IPS mailing
  list should be consulted, or if the IPS WG is disbanded, to a mailing
  list designated by the IESG Area Director.

  This document defines the following SRP_GROUP keys:

     SRP-768, SRP-1024, SRP-1280, SRP-1536, SRP-2048, MODP-3072, MODP-
     4096, MODP-6144, MODP-8192

  New SRP_GROUP keys MUST conform to the iSCSI extension item-label
  format described in [RFC3720] Section 13.5.4.

  Registration of new SRP_GROUP keys is by Designated Expert with
  Specification Required.  The request is posted to the IPS WG mailing
  list or its successor for comment and security review, and MUST
  include a non-probabalistic proof of primality for the proposed SRP
  group.  After a period of one month as passed, the Designated Expert
  will either approve or deny the registration request.

7.  Normative References

  [RFC793]       Postel, J., "Transmission Control Protocol", STD 7,
                 RFC 793, September 1981.

  [RFC1191]      Mogul, J. and S. Deering, "Path MTU Discovery", RFC
                 1191, November 1990.

  [RFC1435]      Knowles, S., "IESG Advice from Experience with Path
                 MTU Discovery", RFC 1435, March 1993.

  [RFC1981]      McCann, J., Deering, S. and J. Mogul, "Path MTU
                 Discovery for IP version 6", RFC 1981, August 1996.




Aboba, et al.               Standards Track                    [Page 52]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [RFC2104]      Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
                 Keyed- Hashing for Message Authentication", RFC 2104,
                 February 1997.

  [RFC2119]      Bradner, S., "Key words for use in RFCs to Indicate
                 Requirement Levels", BCP 14, RFC 2119, March 1997.

  [RFC2131]      Droms, R., "Dynamic Host Configuration Protocol", RFC
                 2131, March 1997.

  [RFC2401]      Kent, S. and R. Atkinson, "Security Architecture for
                 the Internet Protocol", RFC 2401, November 1998.

  [RFC2404]      Madson, C. and R. Glenn, "The Use of HMAC-SHA-1-96
                 within ESP and AH", RFC 2404, November 1998.

  [RFC2406]      Kent, S. and R. Atkinson, "IP Encapsulating Security
                 Payload (ESP)", RFC 2406, November 1998.

  [RFC2407]      Piper, D., "The Internet IP Security Domain of
                 Interpretation of ISAKMP", RFC 2407, November 1998.

  [RFC2408]      Maughan, D., Schertler, M., Schneider, M. and J.
                 Turner, "Internet Security Association and Key
                 Management Protocol (ISAKMP)," RFC 2408, November
                 1998.

  [RFC2409]      Harkins, D. and D. Carrel, "The Internet Key Exchange
                 (IKE)", RFC 2409, November 1998.

  [RFC2412]      Orman, H., "The OAKLEY Key Determination Protocol",
                 RFC 2412, November 1998.

  [RFC2434]      Narten, T. and H. Alvestrand, "Guidelines for Writing
                 an IANA Considerations Section in RFCs", BCP 26, RFC
                 2434, October 1998.

  [RFC2451]      Pereira, R. and R. Adams, "The ESP CBC-Mode Cipher
                 Algorithms", RFC 2451, November 1998.

  [RFC2608]      Guttman, E., Perkins, C., Veizades, J. and M. Day,
                 "Service Location Protocol, Version 2", RFC 2608, June
                 1999.

  [RFC2923]      Lahey, K., "TCP Problems with Path MTU Discovery", RFC
                 2923, September 2000.





Aboba, et al.               Standards Track                    [Page 53]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [RFC2945]      Wu, T., "The SRP Authentication and Key Exchange
                 System", RFC 2945, September 2000.

  [RFC3315]      Droms, R., Ed., Bound, J., Volz,, B., Lemon, T.,
                 Perkins, C. and M. Carney, "Dynamic Host Configuration
                 Protocol for IPv6 (DHCPv6)", RFC 3315, July 2003.

  [RFC3456]      Patel, B., Aboba, B., Kelly, S. and V. Gupta, "Dynamic
                 Host Configuration Protocol (DHCPv4) Configuration of
                 IPsec Tunnel Mode", RFC 3456, January 2003.

  [RFC3526]      Kivinen, T. and M. Kojo, "More Modular Exponential
                 (MODP) Diffie-Hellman groups for Internet Key Exchange
                 (IKE)", RFC 3526, May 2003.

  [RFC3566]      Frankel, S. and H. Herbert, "The AES-XCBC-MAC-96
                 Algorithm and Its Use with IPsec", RFC 3566, September
                 2003.

  [RFC3643]      Weber, R., Rajagopal, M., Trovostino, F., O'Donnel.,
                 M, Monia, C.and M. Mehrar, "Fibre Channel (FC) Frame
                 Encapsuation", RFC 3643, December 2003.

  [RFC3686]      Housley, R., "Using Advanced Encryption Standard (AES)
                 Counter Mode With IPsec Encapsulating Security Payload
                 (ESP)", RFC 3686, January 2004.

  [RFC3720]      Satran, J., Meth, K., Sapuntzakis, C. Chadalapaka, M.
                 and E. Zeidner, "Internet Small Computer Systems
                 Interface (iSCSI)", RFC 3720, April 2004.

  [3DESANSI]     American National Standard for Financial Services
                 X9.52-1998, "Triple Data Encryption Algorithm Modes of
                 Operation", American Bankers Association, Washington,
                 D.C., July 29, 1998

  [SRPNDSS]      Wu, T., "The Secure Remote Password Protocol", in
                 Proceedings of the 1998 Internet Society Symposium on
                 Network and Distributed Systems Security, San Diego,
                 CA, pp.  97-111

8.  Informative References

  [RFC1321]      Rivest, R., "The MD5 Message-Digest Algorithm", RFC
                 1321, April 1992.

  [RFC1994]      Simpson, W., "PPP Challenge Handshake Authentication
                 Protocol (CHAP)", RFC 1994, August 1996.



Aboba, et al.               Standards Track                    [Page 54]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [RFC2230]      Atkinson, R., "Key Exchange Delegation Record for the
                 DNS", RFC 2230, November 1997.

  [RFC2373]      Hinden, R. and S. Deering, "IP Version 6 Addressing
                 Architecture", RFC 2373, July 1998.

  [RFC2402]      Kent, S., Atkinson, R., "IP Authentication Header",
                 RFC 2402, November 1998.

  [RFC2403]      Madson, C. and R. Glenn, "The Use of HMAC-MD5-96
                 within ESP and AH", RFC 2403, November 1998.

  [RFC2405]      Madson, C. and N. Doraswamy, "The ESP DES-CBC Cipher
                 Algorithm With Explicit IV", RFC 2405, November 1998.

  [RFC2535]      Eastlake, D., "Domain Name System Security
                 Extensions", RFC 2535, March 1999.

  [RFC2782]      Gulbrandsen, A., Vixie, P. and L. Esibov, "A DNS RR
                 for specifying the location of services (DNS SRV)",
                 RFC 2782, February 2000.

  [RFC2845]      Vixie, P., Gudmundsson, O., Eastlake, D. and B.
                 Wellington, "Secret Key Transaction Authentication for
                 DNS (TSIG)", RFC 2845, May 2000.

  [RFC2865]      Rigney, C., Willens, S., Rubens, A. and W. Simpson,
                 "Remote Authentication Dial In User Service (RADIUS)",
                 RFC 2865, June 2000.

  [RFC2931]      Eastlake, D., "DNS Request and Transaction Signatures
                 (SIG(0)s )", RFC 2931, September 2000.

  [RFC2983]      Black, D. "Differentiated Services and Tunnels", RFC
                 2983, October 2000.

  [RFC3007]      Wellington, B., "Simple Secure Domain Name System
                 (DNS) Dynamic Update", RFC 3007, November 2000.

  [RFC3347]      Krueger, M. and R. Haagens, "Small Computer Systems
                 Interface protocol over the Internet (iSCSI)
                 Requirements and Design Considerations", RFC 3347,
                 July 2002.

  [RFC3721]      Bakke, M., Hafner, J., Hufferd, J., Voruganti, K. and
                 M. Krueger, "Internet Small Computer Systems Interface
                 (iSCSI) Naming and Discovery", RFC 3721, April 2004.




Aboba, et al.               Standards Track                    [Page 55]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [AESPERF]      Schneier, B., J. Kelsey, D. Whiting, D. Wagner, C.
                 Hall, and N. Ferguson, "Performance Comparison of the
                 AES Submissions", http://www.counterpane.com/aes-
                 performance.html

  [AuthMIB]      Bakke, M., et al., "Definitions of Managed Objects for
                 iSCSI", Work in Progress, September 2002.

  [CRCTCP]       Stone J., Partridge, C., "When the CRC and TCP
                 checksum disagree", ACM Sigcomm, Sept. 2000.

  [DESANALY]     Bellare, Desai, Jokippi, Rogaway, "A Concrete
                 Treatment of Symmetric Encryption: Analysis of the DES
                 Modes of Operation", 1997, http://www-
                 cse.ucsd.edu/users/mihir/papers/sym-enc.html

  [DESCRACK]     Cracking DES, O'Reilly & Associates, Sebastapol, CA
                 2000.

  [DESDIFF]      Biham, E., Shamir, A., "Differential Cryptanalysis of
                 DES-like cryptosystems", Journal of Cryptology Vol 4,
                 Jan 1991.

  [DESINT]       Bellovin, S., "An Issue With DES-CBC When Used Without
                 Strong Integrity", Proceedings of the 32nd IETF,
                 Danvers, MA, April 1995

  [FCIP]         Rajagopal, M., et al., "Fibre Channel over TCP/IP
                 (FCIP)", Work in Progress, August 2002.

  [FCIPSLP]      Petersen, D., "Finding FCIP Entities Using SLPv2",
                 Work in Progress, September 2002.

  [FIPS46-3]     U.S. DoC/NIST, "Data encryption standard (DES)", FIPS
                 46-3, October 25, 1999.

  [FIPS74]       U.S. DoC/NIST, "Guidelines for implementing and using
                 the nbs data encryption standard", FIPS 74, Apr 1981.

  [FIPS197]      U.S. DoC/NIST, "Advanced Encryption Standard (AES)",
                 FIPS 197, November 2001,
                 http://csrc.nist.gov/CryptoToolkit/aes

  [iFCP]         Monia, C., et al., "iFCP - A Protocol for Internet
                 Fibre Channel Storage Networking", Work in Progress,
                 August 2002.





Aboba, et al.               Standards Track                    [Page 56]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [RFC3715]      Aboba, B. and W. Dixon, "IPsec-Network Address
                 Translation (NAT) Compatibility Requirements", RFC
                 3715, March 2004.

  [iSCSISLP]     Bakke, M., "Finding iSCSI targets and Name Servers
                 Using SLP", Work in Progress, March 2002.

  [iSNS]         Gibbons, K., et al., "iSNS Internet Storage Name
                 Service", Work in Progress, August 2002.

  [KeyLen]       Orman, H., Hoffman, P., "Determining Strengths For
                 Public Keys Used For Exchanging Symmetric Keys", Work
                 in Progress, December 2001.

  [MD5Attack]    Dobbertin, H., "The Status of MD5 After a Recent
                 Attack", CryptoBytes Vol.2 No.2, Summer 1996

  [NATIKE]       Kivinen, T., et al., "Negotiation of NAT-Traversal in
                 the IKE", Work in Progress, June 2002.

  [NSPUE2]       "Recommendation for Block Cipher Modes of Operation",
                 National Institute of Standards and Technology (NIST)
                 Special Publication 800-38A, CODEN: NSPUE2, U.S.
                 Government Printing Office, Washington, DC, July 2001.

  [PENTPERF]     A. Bosselaers, "Performance of Pentium
                 implementations",
                 http://www.esat.kuleuven.ac.be/~bosselae/

  [PMAC]         Rogaway, P., Black, J., "PMAC: Proposal to NIST for a
                 parallelizable message authentication code",
                 http://csrc.nist.gov/encryption/modes/proposedmodes/
                 pmac/pmac-spec.pdf

  [Seq]          Kent, S., "IP Encapsulating Security Payload (ESP)",
                 Work in Progress, July 2002.

  [SRPDIST]      Wu, T., "SRP Distribution", http://www-cs-
                 students.stanford.edu/~tjw/srp/download.html

  [UDPIPsec]     Huttunen, A., et. al., "UDP Encapsulation of IPsec
                 Packets", Work in Progress, June 2002.

  [UMAC]         Black, J., Halevi, S., Krawczyk, H., Krovetz, T.,
                 Rogaway, P., "UMAC: Fast and provably secure message
                 authentication", Advances in Cryptology - CRYPTO '99,
                 LNCS vol. 1666, pp.  216-233.  Full version available
                 from http://www.cs.ucdavis.edu/~rogaway/umac



Aboba, et al.               Standards Track                    [Page 57]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  [UMACKR]       Krovetz, T., Black, J., Halevi, S., Hevia, A.,
                 Krawczyk, H., Rogaway, P., "UMAC: Message
                 Authentication Code using Universal Hashing", Work in
                 Progress, October 2000.  Also available
                 at:http://www.cs.ucdavis.edu/~rogaway/umac/draft-
                 krovetz-umac-01.txt

  [UMACPERF]     Rogaway, P., "UMAC Performance",
                 http://www.cs.ucdavis.edu/~rogaway/umac/perf00.html

9.  Acknowledgments

  Thanks to Steve Bellovin of AT&T Research, William Dixon of V6
  Security, David Black of EMC, Joseph Tardo and Uri Elzur of Broadcom,
  Julo Satran, Ted Ts'o, Ofer Biran, and Charles Kunzinger of IBM,
  Allison Mankin of ISI, Mark Bakke and Steve Senum of Cisco, Erik
  Guttman of Sun Microsystems and Howard Herbert of Intel for useful
  discussions of this problem space.

































Aboba, et al.               Standards Track                    [Page 58]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


Appendix A - Well Known Groups for Use with SRP

  Modulus (N) and generator (g) values for various modulus lengths are
  given below.  The values below are taken from software developed by
  Tom Wu and Eugene Jhong for the Stanford SRP distribution [SRPDIST],
  and subsequently rigorously verified to be prime.  Implementations
  supporting SRP authentication MUST support groups up to 1536 bits,
  with 1536 bits being the default.

  iSCSI Key="SRP-768" [768 bits]
  Modulus (base 16) =
  B344C7C4F8C495031BB4E04FF8F84EE95008163940B9558276744D91F7CC9F40
  2653BE7147F00F576B93754BCDDF71B636F2099E6FFF90E79575F3D0DE694AFF
  737D9BE9713CEF8D837ADA6380B1093E94B6A529A8C6C2BE33E0867C60C3262B
  Generator = 2

  iSCSI Key="SRP-1024" [1024 bits]
  Modulus (base 16) =
  EEAF0AB9ADB38DD69C33F80AFA8FC5E86072618775FF3C0B9EA2314C9C256576
  D674DF7496EA81D3383B4813D692C6E0E0D5D8E250B98BE48E495C1D6089DAD1
  5DC7D7B46154D6B6CE8EF4AD69B15D4982559B297BCF1885C529F566660E57EC
  68EDBC3C05726CC02FD4CBF4976EAA9AFD5138FE8376435B9FC61D2FC0EB06E3
  Generator = 2

  iSCSI Key="SRP-1280" [1280 bits]
  Modulus (base 16) =
  D77946826E811914B39401D56A0A7843A8E7575D738C672A090AB1187D690DC4
  3872FC06A7B6A43F3B95BEAEC7DF04B9D242EBDC481111283216CE816E004B78
  6C5FCE856780D41837D95AD787A50BBE90BD3A9C98AC0F5FC0DE744B1CDE1891
  690894BC1F65E00DE15B4B2AA6D87100C9ECC2527E45EB849DEB14BB2049B163
  EA04187FD27C1BD9C7958CD40CE7067A9C024F9B7C5A0B4F5003686161F0605B
  Generator = 2

  iSCSI Key="SRP-1536" [1536 bits]
  Modulus (base 16) =
  9DEF3CAFB939277AB1F12A8617A47BBBDBA51DF499AC4C80BEEEA9614B19CC4D
  5F4F5F556E27CBDE51C6A94BE4607A291558903BA0D0F84380B655BB9A22E8DC
  DF028A7CEC67F0D08134B1C8B97989149B609E0BE3BAB63D47548381DBC5B1FC
  764E3F4B53DD9DA1158BFD3E2B9C8CF56EDF019539349627DB2FD53D24B7C486
  65772E437D6C7F8CE442734AF7CCB7AE837C264AE3A9BEB87F8A2FE9B8B5292E
  5A021FFF5E91479E8CE7A28C2442C6F315180F93499A234DCF76E3FED135F9BB
  Generator = 2









Aboba, et al.               Standards Track                    [Page 59]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  iSCSI Key="SRP-2048" [2048 bits]
  Modulus (base 16) =
  AC6BDB41324A9A9BF166DE5E1389582FAF72B6651987EE07FC3192943DB56050
  A37329CBB4A099ED8193E0757767A13DD52312AB4B03310DCD7F48A9DA04FD50
  E8083969EDB767B0CF6095179A163AB3661A05FBD5FAAAE82918A9962F0B93B8
  55F97993EC975EEAA80D740ADBF4FF747359D041D5C33EA71D281E446B14773B
  CA97B43A23FB801676BD207A436C6481F1D2B9078717461A5B9D32E688F87748
  544523B524B0D57D5EA77A2775D2ECFA032CFBDBF52FB3786160279004E57AE6
  AF874E7303CE53299CCC041C7BC308D82A5698F3A8D0C38271AE35F8E9DBFBB6
  94B5C803D89F7AE435DE236D525F54759B65E372FCD68EF20FA7111F9E4AFF73
  Generator = 2

  In addition to these groups, the following groups MAY be supported,
  each of which has also been rigorously proven to be prime:

  [1]  iSCSI Key="MODP-3072": the 3072-bit [RFC3526] group, generator:
       5

  [2]  iSCSI Key="MODP-4096": the 4096-bit [RFC3526] group, generator:
       5

  [3]  iSCSI Key="MODP-6144": the 6144-bit [RFC3526] group, generator:
       5

  [4]  iSCSI Key="MODP-8192": the 8192-bit [RFC3526] group, generator:
       19

























Aboba, et al.               Standards Track                    [Page 60]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


Appendix B - Software Performance of IPsec Transforms

  This Appendix provides data on the performance of IPsec encryption
  and authentication transforms in software.  Since the performance of
  IPsec transforms is heavily implementation dependent, the data
  presented here may not be representative of performance in a given
  situation, and are presented solely for purposes of comparison.
  Other performance data is available in [AESPERF], [PENTPERF] and
  [UMACPERF].

B.1.  Authentication Transforms

  Table B-1 presents the cycles/byte required by the AES-PMAC, AES-
  CBC-MAC, AES-UMAC, HMAC-MD5, and HMAC-SHA1 algorithms at various
  packet sizes, implemented in software.

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         |         |           |         |         |         |
  |  Data   |  AES-   | AES-CBC-  |  AES-   |  HMAC-  |  HMAC-  |
  |  Size   |  PMAC   | MAC       |  UMAC   |  MD5    |  SHA1   |
  |         |         |           |         |         |         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   64    |  31.22  |   26.02   |  19.51  |  93.66  | 109.27  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  128    |  33.82  |   28.62   |  11.06  |  57.43  |  65.04  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  192    |  34.69  |   26.02   |   8.67  |  45.09  |  48.56  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  256    |  33.82  |   27.32   |   7.15  |  41.63  |  41.63  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  320    |  33.3   |   27.06   |   6.24  |  36.42  |  37.46  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  384    |  33.82  |   26.88   |   5.42  |  34.69  |  34.69  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  448    |  33.45  |   26.76   |   5.39  |  32.71  |  31.96  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  512    |  33.82  |   26.67   |   4.88  |  31.22  |  30.57  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  576    |  33.53  |   26.59   |   4.77  |  30.64  |  29.48  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  640    |  33.3   |   26.54   |   4.42  |  29.66  |  28.62  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  768    |  33.82  |   26.88   |   4.23  |  28.18  |  27.32  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  896    |  33.45  |   27.13   |   3.9   |  27.5   |  25.64  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | 1024    |  33.5   |   26.67   |   3.82  |  26.99  |  24.71  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Aboba, et al.               Standards Track                    [Page 61]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |         |         |           |         |         |         |
  |  Data   |  AES-   | AES-CBC-  |  AES-   |  HMAC-  |  HMAC-  |
  |  Size   |  PMAC   | MAC       |  UMAC   |  MD5    |  SHA1   |
  |         |         |           |         |         |         |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | 1152    |  33.53  |   27.17   |   3.69  |  26.3   |  23.99  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | 1280    |  33.56  |   26.8    |   3.58  |  26.28  |  23.67  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | 1408    |  33.58  |   26.96   |   3.55  |  25.54  |  23.41  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | 1500    |  33.52  |   26.86   |   3.5   |  25.09  |  22.87  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Table B-1: Cycles/byte consumed by the AES-PMAC, AES-CBC-MAC, AES-
  UMAC, HMAC-MD5, and HMAC-SHA1 authentication algorithms at various
  packet sizes.

  Source: Jesse Walker, Intel































Aboba, et al.               Standards Track                    [Page 62]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Table B-2 presents the cycles/second required by the AES-PMAC, AES-
  CBC-MAC, AES-UMAC, HMAC-MD5, and HMAC-SHA1 algorithms, implemented in
  software, assuming a 1500 byte packet.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             | Cycles/     |  Cycles/sec | Cycles/sec  |  Cycles/sec |
|  Transform  |  octet      |     @       |    @        |     @       |
|             | (software)  |  100 Mbps   |   1 Gbps    |   10 Gbps   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| AES-UMAC    |     3.5     |  43,750,000 | 437,500,000 |  4.375  B   |
| (8 octets)  |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| HMAC-SHA1   |    22.87    | 285,875,000 |   2.8588 B  |  28.588 B   |
| (20 octets) |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| HMAC-MD5    |    25.09    | 313,625,000 |   3.1363 B  |  31.363 B   |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| AES-CBC-MAC |    26.86    | 335,750,000 |   3.358 B   |  33.575 B   |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| AES-PMAC    |    33.52    | 419,000,000 |   4.19  B   |  41.900 B   |
| (8 octets)  |             |             |             |             |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Table B-2: Software performance of the HMAC-SHA1, HMAC-MD5, AES-CBC-
  MAC and AES-PMAC authentication algorithms at 100 Mbps, 1 Gbps, and
  10 Gbps line rates (1500 byte packet).

  Source: Jesse Walker, Intel

  At speeds of 100 Mbps, AES-UMAC is implementable with only a modest
  processor, and the other algorithms are implementable, assuming that
  a single high-speed processor can be dedicated to the task.  At 1
  Gbps, only AES-UMAC is implementable on a single high-speed
  processor; multiple high speed processors (1+ Ghz) will be required
  for the other algorithms.  At 10 Gbps, only AES-UMAC is implementable
  even with multiple high speed processors; the other algorithms will
  require a prodigious number of cycles/second.  Thus at 10 Gbps,
  hardware acceleration will be required for all algorithms with the
  possible exception of AES-UMAC.




Aboba, et al.               Standards Track                    [Page 63]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


B.2.  Encryption and Authentication Transforms

  Table B-3 presents the cycles/byte required by the AES-CBC, AES-CTR
  and 3DES-CBC encryption algorithms (no MAC), implemented in software,
  for various packet sizes.

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |             |             |             |
  |  Data size    |   AES-CBC   |   AES-CTR   |  3DES-CBC   |
  |               |             |             |             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      64       |   31.22     |    26.02    |  156.09     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     128       |   31.22     |    28.62    |  150.89     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     192       |   31.22     |    27.75    |  150.89     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     256       |   28.62     |    27.32    |  150.89     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     320       |   29.14     |    28.1     |  150.89     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     384       |   28.62     |    27.75    |  148.29     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     448       |   28.99     |    27.5     |  149.4      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     512       |   28.62     |    27.32    |  148.29     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     576       |   28.33     |    27.75    |  147.72     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     640       |   28.62     |    27.06    |  147.77     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     768       |   28.18     |    27.32    |  147.42     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     896       |   28.25     |    27.5     |  147.55     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1024       |   27.97     |    27.32    |  148.29     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1152       |   28.33     |    27.46    |  147.13     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1280       |   28.1      |    27.58    |  146.99     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1408       |   27.91     |    27.43    |  147.34     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1500       |   27.97     |    27.53    |  147.85     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+






Aboba, et al.               Standards Track                    [Page 64]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Table B-3: Cycles/byte consumed by the AES-CBC, AES-CTR and 3DES-CBC
  encryption algorithms at various packet sizes, implemented in
  software.

  Source: Jesse Walker, Intel

  Table B-4 presents the cycles/second required by the AES-CBC, AES-CTR
  and 3DES-CBC encryption algorithms (no MAC), implemented in software,
  at 100 Mbps, 1 Gbps, and 10 Gbps line rates (assuming a 1500 byte
  packet).

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             | Cycles/     |  Cycles/sec | Cycles/sec  |  Cycles/sec |
|   Transform |  octet      |     @       |    @        |     @       |
|             | (software)  |  100 Mbps   |   1 Gbps    |   10 Gbps   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| AES-CBC     |   27.97     | 349,625,000 |   3.4963 B  |  34.963 B   |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| AES-CTR     |   27.53     | 344,125,000 |   3.4413 B  |  34.413 B   |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
| 3DES -CBC   |  147.85     | 1.84813 B   |  18.4813 B  | 184.813 B   |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Table B-4: Software performance of the AES-CBC, AES-CTR, and 3DES
  encryption algorithms at 100 Mbps, 1 Gbps, and 10 Gbps line rates
  (1500 byte packet).

  Source: Jesse Walker, Intel

















Aboba, et al.               Standards Track                    [Page 65]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  At speeds of 100 Mbps, AES-CBC and AES-CTR mode are implementable
  with a high-speed processor, while 3DES would require multiple high
  speed processors.  At speeds of 1 Gbps, multiple high speed
  processors are required for AES-CBC and AES-CTR mode.  At speeds of
  1+ Gbps for 3DES, and 10 Gbps for all algorithms, implementation in
  software is infeasible, and hardware acceleration is required.

  Table B-5 presents the cycles/byte required for combined
  encryption/authentication algorithms: AES CBC + CBCMAC, AES CTR +
  CBCMAC, AES CTR + UMAC, and AES-OCB at various packet sizes,
  implemented in software.

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |  AES      | AES     |  AES    |         |
  |  Data size    |  CBC +    | CTR +   |  CTR +  |  AES-   |
  |               |  CBCMAC   | CBCMAC  |  UMAC   |  OCB    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      64       |  119.67   |  52.03  |  52.03  |  57.23  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     128       |   70.24   |  57.23  |  39.02  |  44.23  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     192       |   58.97   |  55.5   |  36.42  |  41.63  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     256       |   57.23   |  55.93  |  35.12  |  40.32  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     320       |   57.23   |  55.15  |  33.3   |  38.5   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     384       |   57.23   |  55.5   |  32.95  |  37.29  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     448       |   58.72   |    55   |  32.71  |  37.17  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     512       |   58.54   |  55.28  |  32.52  |  36.42  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     576       |   57.81   |  55.5   |  31.8   |  37     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     640       |   57.75   |  55.15  |  31.74  |  36.42  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     768       |   57.67   |  55.5   |  31.65  |  35.99  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     896       |   57.61   |  55.75  |  31.22  |  35.68  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1024       |   57.56   |  55.61  |  31.22  |  35.45  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1152       |   57.52   |  55.21  |  31.22  |  35.55  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+






Aboba, et al.               Standards Track                    [Page 66]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |               |  AES      | AES     |  AES    |         |
  |  Data size    |  CBC +    | CTR +   |  CTR +  |  AES-   |
  |               |  CBCMAC   | CBCMAC  |  UMAC   |  OCB    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1280       |   57.75   |  55.15  |  31.22  |  36.16  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1408       |   57.47   |  55.34  |  30.75  |  35.24  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |    1500       |   57.72   |  55.5   |  30.86  |  35.3   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Table B-5: Cycles/byte of combined encryption/authentication
  algorithms:  AES CBC + CBCMAC, AES CTR + CBCMAC, AES CTR + UMAC, and
  AES-OCB at various packet sizes, implemented in software.




































Aboba, et al.               Standards Track                    [Page 67]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


  Table B-6 presents the cycles/second required for the AES CBC +
  CBCMAC, AES CTR + CBCMAC, AES CTR + UMAC, and AES-OCB encryption and
  authentication algorithms operating at line rates of 100 Mbps, 1 Gbps
  and 10 Gbps, assuming 1500 byte packets.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             | Cycles/     |  Cycles/sec | Cycles/sec  |  Cycles/sec |
|  Transform  |  octet      |      @      |    @        |     @       |
|             | (software)  |  100 Mbps   |   1 Gbps    |   10 Gbps   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
|     AES     |             |             |             |             |
|CBC + CBCMAC |   57.72     | 721,500,000 |  7.215 B    |  72.15 B    |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
|     AES     |             |             |             |             |
|CTR + CBCMAC |   55.5      | 693,750,000 |  6.938 B    |  69.38 B    |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
|     AES     |             |             |             |             |
| CTR + UMAC  |   30.86     | 385,750,000 |  3.858 B    |  38.58 B    |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             |             |             |             |             |
|             |             |             |             |             |
|   AES-OCB   |   35.3      | 441,250,000 |   4.413 B   |  44.13 B    |
|             |             |             |             |             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Table B-6: Cycles/second required for the AES CBC + CBCMAC, AES CTR +
  CBCMAC, AES CTR + UMAC, and AES-OCB encryption and authentication
  algorithms, operating at line rates of 100 Mbps, 1 Gbps and 10 Gbps,
  assuming 1500 octet packets.

  Source: Jesse Walker, Intel

  At speeds of 100 Mbps, the algorithms are implementable on a high
  speed processor.  At speeds of 1 Gbps, multiple high speed processors
  are required, and none of the algorithms are implementable in
  software at 10 Gbps line rate.









Aboba, et al.               Standards Track                    [Page 68]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


Authors' Addresses

  Bernard Aboba
  Microsoft Corporation
  One Microsoft Way
  Redmond, WA 98052

  Phone: +1 425 706 6605
  Fax:   +1 425 936 7329
  EMail: [email protected]

  Joshua Tseng
  McDATA Corporation
  3850 North First Street
  San Jose, CA 95134-1702

  Phone: +1 650 207 8012
  EMail: [email protected]

  Jesse Walker
  Intel Corporation
  2211 NE 25th Avenue
  Hillboro, OR 97124

  Phone: +1 503 712 1849
  Fax:   +1 503 264 4843
  EMail: [email protected]

  Venkat Rangan
  Brocade Communications Systems Inc.
  1745 Technology Drive,
  San Jose, CA 95110

  Phone: +1 408 333 7318
  Fax: +1 408 333 7099
  EMail: [email protected]

  Franco Travostino
  Director, Content Internetworking Lab
  Nortel Networks
  3 Federal Street
  Billerica, MA  01821

  Phone: +1 978 288 7708
  EMail: [email protected]






Aboba, et al.               Standards Track                    [Page 69]

RFC 3723        Securing Block Storage Protocols over IP      April 2004


Full Copyright Statement

  Copyright (C) The Internet Society (2004).  This document is subject
  to the rights, licenses and restrictions contained in BCP 78 and
  except as set forth therein, the authors retain all their rights.

  This document and the information contained herein are provided on an
  "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
  OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
  ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
  INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
  INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
  WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

  The IETF takes no position regarding the validity or scope of any
  Intellectual Property Rights or other rights that might be claimed to
  pertain to the implementation or use of the technology described in
  this document or the extent to which any license under such rights
  might or might not be available; nor does it represent that it has
  made any independent effort to identify any such rights.  Information
  on the procedures with respect to rights in RFC documents can be
  found in BCP 78 and BCP 79.

  Copies of IPR disclosures made to the IETF Secretariat and any
  assurances of licenses to be made available, or the result of an
  attempt made to obtain a general license or permission for the use of
  such proprietary rights by implementers or users of this
  specification can be obtained from the IETF on-line IPR repository at
  http://www.ietf.org/ipr.

  The IETF invites any interested party to bring to its attention any
  copyrights, patents or patent applications, or other proprietary
  rights that may cover technology that may be required to implement
  this standard.  Please address the information to the IETF at ietf-
  [email protected].

Acknowledgement

  Funding for the RFC Editor function is currently provided by the
  Internet Society.









Aboba, et al.               Standards Track                    [Page 70]