RFC 4303 - IP Encapsulating Security Payload (ESP)(2)

时间:2006-11-02 来源: 作者: 点击:
TFCpadding[3]variableOYYcipher|o ---a Padding0-255MYYcipherd PadLength1MYYcipher NextHeader1MYYcipher Seq#(high-orderbits)4ifESN[4]Y[5] ICVPaddingvariableifneedY[5] ICVvariableO[6]plain [1]M=mandator
  
    TFC padding [3]         variable    O       Y      Y     cipher | o
                                                                  --- a
    Padding                  0-255      M       Y      Y     cipher   d
    Pad Length                 1        M       Y      Y     cipher
    Next Header                1        M       Y      Y     cipher
    Seq# (high-order bits)     4     if ESN [4]        Y     [5]
    ICV Padding             variable if need           Y     [5]
    ICV                     variable    O [6]                plain

            [1] M = mandatory; O = optional; D = dummy
            [2] If tunnel mode -> IP datagram
                If transport mode -> next header and data
            [3] Can be used only if payload specifies its "real" length
            [4] See Section 2.2.1
            [5] The algorithm choices determines whether these are
                transmitted, but in either case, the result is invisible
                to ESP
            [6] The algorithm spec determines whether this field is
                present

   The following subsections describe the fields in the header format.
   "Optional" means that the field is omitted if the option is not
   selected, i.e., it is present in neither the packet as transmitted
   nor as formatted for computation of an ICV (see Section 2.7).
   Whether or not an option is selected is determined as part of
   Security Association (SA) establishment.  Thus, the format of ESP
   packets for a given SA is fixed, for the duration of the SA.  In
   contrast, "mandatory" fields are always present in the ESP packet
   format, for all SAs.

   Note: All of the cryptographic algorithms used in IPsec expect their
   input in canonical network byte order (see Appendix of RFC 791
   [Pos81]) and generate their output in canonical network byte order.
   IP packets are also transmitted in network byte order.

   ESP does not contain a version number, therefore if there are
   concerns about backward compatibility, they MUST be addressed by
   using a signaling mechanism between the two IPsec peers to ensure
   compatible versions of ESP (e.g., Internet Key Exchange (IKEv2)
   [Kau05]) or an out-of-band configuration mechanism.

2.1.  Security Parameters Index (SPI)

   The SPI is an arbitrary 32-bit value that is used by a receiver to
   identify the SA to which an incoming packet is bound.  The SPI field
   is mandatory.

   For a unicast SA, the SPI can be used by itself to specify an SA, or
   it may be used in conjunction with the IPsec protocol type (in this
   case ESP).  Because the SPI value is generated by the receiver for a
   unicast SA, whether the value is sufficient to identify an SA by
   itself or whether it must be used in conjunction with the IPsec
   protocol value is a local matter.  This mechanism for mapping inbound
   traffic to unicast SAs MUST be supported by all ESP implementations.

   If an IPsec implementation supports multicast, then it MUST support
   multicast SAs using the algorithm below for mapping inbound IPsec
   datagrams to SAs.  Implementations that support only unicast traffic
   need not implement this de-multiplexing algorithm.

   In many secure multicast architectures (e.g., [RFC3740]), a central
   Group Controller/Key Server unilaterally assigns the group security
   association’s SPI.  This SPI assignment is not negotiated or
   coordinated with the key management (e.g., IKE) subsystems that
   reside in the individual end systems that comprise the group.
   Consequently, it is possible that a group security association and a
   unicast security association can simultaneously use the same SPI.  A
   multicast-capable IPsec implementation MUST correctly de-multiplex
   inbound traffic even in the context of SPI collisions.

   Each entry in the Security Association Database (SAD) [Ken-Arch] must
   indicate whether the SA lookup makes use of the destination, or
   destination and source, IP addresses, in addition to the SPI.  For
   multicast SAs, the protocol field is not employed for SA lookups.
   For each inbound, IPsec-protected packet, an implementation must
   conduct its search of the SAD such that it finds the entry that
   matches the "longest" SA identifier.  In this context, if two or more
   SAD entries match based on the SPI value, then the entry that also
   matches based on destination, or destination and source, address
   comparison (as indicated in the SAD entry) is the "longest" match.
   This implies a logical ordering of the SAD search as follows:

         1. Search the SAD for a match on {SPI, destination address,
            source address}.  If an SAD entry matches, then process the
            inbound ESP packet with that matching SAD entry.  Otherwise,
            proceed to step 2.

         2. Search the SAD for a match on {SPI, destination address}.
            If the SAD entry matches, then process the inbound ESP
            packet with that matching SAD entry.  Otherwise, proceed to
            step 3.

         3. Search the SAD for a match on only {SPI} if the receiver has
            chosen to maintain a single SPI space for AH and ESP, or on
            {SPI, protocol} otherwise.  If an SAD entry matches, then
            process the inbound ESP packet with that matching SAD entry.
            Otherwise, discard the packet and log an auditable event.

   In practice, an implementation MAY choose any method to accelerate
   this search, although its externally visible behavior MUST be
   functionally equivalent to having searched the SAD in the above
   order.  For example, a software-based implementation could index into
   a hash table by the SPI.  The SAD entries in each hash table bucket’s
   linked list are kept sorted to have those SAD entries with the
   longest SA identifiers first in that linked list.  Those SAD entries
   having the shortest SA identifiers are sorted so that they are the
   last entries in the linked list.  A hardware-based implementation may
   be able to effect the longest match search intrinsically, using
   commonly available Ternary Content-Addressable Memory (TCAM)
   features.

   The indication of whether source and destination address matching is
   required to map inbound IPsec traffic to SAs MUST be set either as a
   side effect of manual SA configuration or via negotiation using an SA
   management protocol, e.g., IKE or Group Domain of Interpretation
   (GDOI) [RFC3547].  Typically, Source-Specific Multicast (SSM) [HC03]
   groups use a 3-tuple SA identifier composed of an SPI, a destination
   multicast address, and source address.  An Any-Source Multicast group
   SA requires only an SPI and a destination multicast address as an
   identifier.

   The set of SPI values in the range 1 through 255 are reserved by the
   Internet Assigned Numbers Authority (IANA) for future use; a reserved
   SPI value will not normally be assigned by IANA unless the use of the
   assigned SPI value is specified in an RFC.  The SPI value of zero (0)
   is reserved for local, implementation-specific use and MUST NOT be
   sent on the wire.  (For example, a key management implementation
   might use the zero SPI value to mean "No Security Association Exists"

   during the period when the IPsec implementation has requested that
   its key management entity establish a new SA, but the SA has not yet
   been established.)

2.2.  Sequence Number

   This unsigned 32-bit field contains a counter value that increases by
   one for each packet sent, i.e., a per-SA packet sequence number.  For
   a unicast SA or a single-sender multicast SA, the sender MUST
   increment this field for every transmitted packet.  Sharing an SA
   among multiple senders is permitted, though generally not
   recommended.  ESP provides no means of synchronizing packet counters
   among multiple senders or meaningfully managing a receiver packet
   counter and window in the context of multiple senders.  Thus, for a
   multi-sender SA, the anti-replay features of ESP are not available
   (see Sections 3.3.3 and 3.4.3.)

   The field is mandatory and MUST always be present even if the
   receiver does not elect to enable the anti-replay service for a
   specific SA.  Processing of the Sequence Number field is at the
   discretion of the receiver, but all ESP implementations MUST be
   capable of performing the processing described in Sections 3.3.3 and
   3.4.3. Thus, the sender MUST always transmit this field, but the
   receiver need not act upon it (see the discussion of Sequence Number
   Verification in the "Inbound Packet Processing" section (3.4.3)
   below).

   The sender’s counter and the receiver’s counter are initialized to 0
   when an SA is established.  (The first packet sent using a given SA
   will have a sequence number of 1; see Section 3.3.3 for more details
   on how the sequence number is generated.)  If anti-replay is enabled
   (the default), the transmitted sequence number must never be allowed
   to cycle.  Thus, the sender’s counter and the receiver’s counter MUST
   be reset (by establishing a new SA and thus a new key) prior to the
   transmission of the 2^32nd packet on an SA.

2.2.1.  Extended (64-bit) Sequence Number

   To support high-speed IPsec implementations, Extended Sequence
   Numbers (ESNs) SHOULD be implemented, as an extension to the current,
   32-bit sequence number field.  Use of an ESN MUST be negotiated by an
   SA management protocol.  Note that in IKEv2, this negotiation is
   implicit; the default is ESN unless 32-bit sequence numbers are
   explicitly negotiated.  (The ESN feature is applicable to multicast
   as well as unicast SAs.)

   The ESN facility allows use of a 64-bit sequence number for an SA.
   (See Appendix A, "Extended (64-bit) Sequence Numbers", for details.)
   Only the low-order 32 bits of the sequence number are transmitted in
   the plaintext ESP header of each packet, thus minimizing packet
   overhead.  The high-order 32 bits are maintained as part of the
   sequence number counter by both transmitter and receiver and are
   included in the computation of the ICV (if the integrity service is
   selected).  If a separate integrity algorithm is employed, the high
   order bits are included in the implicit ESP trailer, but are not
   transmitted, analogous to integrity algorithm padding bits.  If a
   combined mode algorithm is employed, the algorithm choice determines
   whether the high-order ESN bits are transmitted or are included
   implicitly in the computation.  See Section 3.3.2.2 for processing
   details.

2.3.  Payload Data

   Payload Data is a variable-length field containing data (from the
   original IP packet) described by the Next Header field.  The Payload
   Data field is mandatory and is an integral number of bytes in length.
   If the algorithm used to encrypt the payload requires cryptographic
   synchronization data, e.g., an Initialization Vector (IV), then this
   data is carried explicitly in the Payload field, but it is not called
   out as a separate field in ESP, i.e., the transmission of an explicit
   IV is invisible to ESP.  (See Figure 2.)  Any encryption algorithm
   that requires such explicit, per-packet synchronization data MUST
   indicate the length, any structure for such data, and the location of
   this data as part of an RFC specifying how the algorithm is used with
   ESP.  (Typically, the IV immediately precedes the ciphertext.  See
   Figure 2.)  If such synchronization data is implicit, the algorithm
   for deriving the data MUST be part of the algorithm definition RFC.
   (If included in the Payload field, cryptographic synchronization
   data, e.g., an Initialization Vector (IV), usually is not encrypted
   per se (see Tables 1 and 2), although it sometimes is referred to as
   being part of the ciphertext.)

   Note that the beginning of the next layer protocol header MUST be
   aligned relative to the beginning of the ESP header as follows.  For
   IPv4, this alignment is a multiple of 4 bytes.  For IPv6, the
   alignment is a multiple of 8 bytes.

   With regard to ensuring the alignment of the (real) ciphertext in the
   presence of an IV, note the following:

         o For some IV-based modes of operation, the receiver treats
           the IV as the start of the ciphertext, feeding it into the
           algorithm directly.  In these modes, alignment of the start
           of the (real) ciphertext is not an issue at the receiver.

         o In some cases, the receiver reads the IV in separately from
           the ciphertext.  In these cases, the algorithm specification
           MUST address how alignment of the (real) ciphertext is to be
           achieved.

2.4.  Padding (for Encryption)

   Two primary factors require or motivate use of the Padding field.

      o If an encryption algorithm is employed that requires the
        plaintext to be a multiple of some number of bytes, e.g.,
        the block size of a block cipher, the Padding field is used
        to fill the plaintext (consisting of the Payload Data,
        Padding, Pad Length, and Next Header fields) to the size
        required by the algorithm.

      o Padding also may be required, irrespective of encryption
        algorithm requirements, to ensure that the resulting
        ciphertext terminates on a 4-byte boundary.  Specifically,
        the Pad Length and Next Header fields must be right aligned
        within a 4-byte word, as illustrated in the ESP packet
        format figures above, to ensure that the ICV field (if
        present) is aligned on a 4-byte boundary.

   Padding beyond that required for the algorithm or alignment reasons
   cited above could be used to conceal the actual length of the
   payload, in support of TFC.  However, the Padding field described is
   too limited to be effective for TFC and thus should not be used for
   that purpose.  Instead, the separate mechanism described below (see
   Section 2.7) should be used when TFC is required.

   The sender MAY add 0 to 255 bytes of padding.  Inclusion of the
   Padding field in an ESP packet is optional, subject to the
   requirements noted above, but all implementations MUST support
   generation and consumption of padding.

      o For the purpose of ensuring that the bits to be encrypted
        are a multiple of the algorithm’s block size (first bullet
        above), the padding computation applies to the Payload Data
        exclusive of any IV, but including the ESP trailer
        fields.  If a combined algorithm mode requires transmission
        of the SPI and Sequence Number to effect integrity, e.g.,
        replication of the SPI and Sequence Number in the Payload
        Data, then the replicated versions of these data items, and
        any associated, ICV-equivalent data, are included in the
        computation of the pad length.  (If the ESN option is

        selected, the high-order 32 bits of the ESN also would enter
        into the computation, if the combined mode algorithm
        requires their transmission for integrity.)

      o For the purposes of ensuring that the ICV is aligned on a
        4-byte boundary (second bullet above), the padding
        computation applies to the Payload Data inclusive of the IV,
        the Pad Length, and Next Header fields.  If a combined mode
        algorithm is used, any replicated data and ICV-equivalent
        data are included in the Payload Data covered by the padding
        computation.

   If Padding bytes are needed but the encryption algorithm does not
   specify the padding contents, then the following default processing
   MUST be used.  The Padding bytes are initialized with a series of
   (unsigned, 1-byte) integer values.  The first padding byte appended
   to the plaintext is numbered 1, with subsequent padding bytes making
   up a monotonically increasing sequence: 1, 2, 3, ....  When this
   padding scheme is employed, the receiver SHOULD inspect the Padding
   field.  (This scheme was selected because of its relative simplicity,
   ease of implementation in hardware, and because it offers limited
   protection against certain forms of "cut and paste" attacks in the
   absence of other integrity measures, if the receiver checks the
   padding values upon decryption.)

   If an encryption or combined mode algorithm imposes constraints on
   the values of the bytes used for padding, they MUST be specified by
   the RFC defining how the algorithm is employed with ESP.  If the
   algorithm requires checking of the values of the bytes used for
   padding, this too MUST be specified in that RFC.

2.5.  Pad Length

   The Pad Length field indicates the number of pad bytes immediately
   preceding it in the Padding field.  The range of valid values is 0 to
   255, where a value of zero indicates that no Padding bytes are
   present.  As noted above, this does not include any TFC padding
   bytes.  The Pad Length field is mandatory.

2.6.  Next Header

   The Next Header is a mandatory, 8-bit field that identifies the type
   of data contained in the Payload Data field, e.g., an IPv4 or IPv6
   packet, or a next layer header and data.  The value of this field is
   chosen from the set of IP Protocol Numbers defined on the web page of
   the IANA, e.g., a value of 4 indicates IPv4, a value of 41 indicates
   IPv6, and a value of 6 indicates TCP.

   To facilitate the rapid generation and discarding of the padding
   traffic in support of traffic flow confidentiality (see Section 2.4),
   the protocol value 59 (which means "no next header") MUST be used to
   designate a "dummy" packet.  A transmitter MUST be capable of
   generating dummy packets marked with this value in the next protocol
   field, and a receiver MUST be prepared to discard such packets,
   without indicating an error.  All other ESP header and trailer fields
   (SPI, Sequence Number, Padding, Pad Length, Next Header, and ICV)
   MUST be present in dummy packets, but the plaintext portion of the
   payload, other than this Next Header field, need not be well-formed,
   e.g., the rest of the Payload Data may consist of only random bytes.
   Dummy packets are discarded without prejudice.

   Implementations SHOULD provide local management controls to enable
   the use of this capability on a per-SA basis.  The controls should
   allow the user to specify if this feature is to be used and also
   provide parametric controls; for example, the controls might allow an
   administrator to generate random-length or fixed-length dummy
   packets.

   DISCUSSION: Dummy packets can be inserted at random intervals to mask
   the absence of actual traffic.  One can also "shape" the actual
   traffic to match some distribution to which dummy traffic is added as
   dictated by the distribution parameters.  As with the packet length
   padding facility for Traffic Flow Security (TFS), the most secure
   approach would be to generate dummy packets at whatever rate is
   needed to maintain a constant rate on an SA.  If packets are all the
   same size, then the SA presents the appearance of a constant bit rate
   data stream, analogous to what a link crypto would offer at layer 1
   or 2.  However, this is unlikely to be practical in many contexts,
   e.g., when there are multiple SAs active, because it would imply
   reducing the allowed bandwidth for a site, based on the number of
   SAs, and that would undermine the benefits of packet switching.
   Implementations SHOULD provide controls to enable local
   administrators to manage the generation of dummy packets for TFC
   purposes.

2.7.  Traffic Flow Confidentiality (TFC) Padding

   As noted above, the Padding field is limited to 255 bytes in length.
   This generally will not be adequate to hide traffic characteristics
   relative to traffic flow confidentiality requirements.  An optional
   field, within the payload data, is provided specifically to address
   the TFC requirement.

   An IPsec implementation SHOULD be capable of padding traffic by
   adding bytes after the end of the Payload Data, prior to the
   beginning of the Padding field.  However, this padding (hereafter
   referred to as TFC padding) can be added only if the Payload Data
   field contains a specification of the length of the IP datagram.
   This is always true in tunnel mode, and may be true in transport mode
   depending on whether the next layer protocol (e.g., IP, UDP, ICMP)
   contains explicit length information.  This length information will
   enable the receiver to discard the TFC padding, because the true
   length of the Payload Data will be known.  (ESP trailer fields are
   located by counting back from the end of the ESP packet.)
   Accordingly, if TFC padding is added, the field containing the
   specification of the length of the IP datagram MUST NOT be modified
   to reflect this padding.  No requirements for the value of this
   padding are established by this standard.

   In principle, existing IPsec implementations could have made use of
   this capability previously, in a transparent fashion.  However,
   because receivers may not have been prepared to deal with this
   padding, the SA management protocol MUST negotiate this service prior
   to a transmitter employing it, to ensure backward compatibility.
   Combined with the convention described in Section 2.6 above, about
   the use of protocol ID 59, an ESP implementation is capable of
   generating dummy and real packets that exhibit much greater length
   variability, in support of TFC.

   Implementations SHOULD provide local management controls to enable
   the use of this capability on a per-SA basis.  The controls should
   allow the user to specify if this feature is to be used and also
   provide parametric controls for the feature.

2.8.  Integrity Check Value (ICV)

   The Integrity Check Value is a variable-length field computed over
   the ESP header, Payload, and ESP trailer fields.  Implicit ESP
   trailer fields (integrity padding and high-order ESN bits, if
   applicable) are included in the ICV computation.  The ICV field is
   optional.  It is present only if the integrity service is selected
   and is provided by either a separate integrity algorithm or a
   combined mode algorithm that uses an ICV.  The length of the field is

   specified by the integrity algorithm selected and associated with the
   SA.  The integrity algorithm specification MUST specify the length of
   the ICV and the comparison rules and processing steps for validation.

3.  Encapsulating Security Protocol Processing

3.1.  ESP Header Location

   ESP may be employed in two ways: transport mode or tunnel mode.

3.1.1.  Transport Mode Processing

   In transport mode, ESP is inserted after the IP header and before a
   next layer protocol, e.g., TCP, UDP, ICMP, etc.  In the context of
   IPv4, this translates to placing ESP after the IP header (and any
   options that it contains), but before the next layer protocol.  (If
   AH is also applied to a packet, it is applied to the ESP header,
   Payload, ESP trailer, and ICV, if present.)  (Note that the term
   "transport" mode should not be misconstrued as restricting its use to
   TCP and UDP.)  The following diagram illustrates ESP transport mode
   positioning for a typical IPv4 packet, on a "before and after" basis.
   (This and subsequent diagrams in this section show the ICV field, the
   presence of which is a function of the security services and the
   algorithm/mode selected.)

                  BEFORE APPLYING ESP
             ----------------------------
       IPv4  |orig IP hdr  |     |      |
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容