diff options
Diffstat (limited to 'doc/rfc/rfc4301.txt')
-rw-r--r-- | doc/rfc/rfc4301.txt | 5659 |
1 files changed, 5659 insertions, 0 deletions
diff --git a/doc/rfc/rfc4301.txt b/doc/rfc/rfc4301.txt new file mode 100644 index 0000000..4a8eba9 --- /dev/null +++ b/doc/rfc/rfc4301.txt @@ -0,0 +1,5659 @@ + + + + + + +Network Working Group S. Kent +Request for Comments: 4301 K. Seo +Obsoletes: 2401 BBN Technologies +Category: Standards Track December 2005 + + + Security Architecture for the Internet Protocol + +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 (2005). + +Abstract + + This document describes an updated version of the "Security + Architecture for IP", which is designed to provide security services + for traffic at the IP layer. This document obsoletes RFC 2401 + (November 1998). + +Dedication + + This document is dedicated to the memory of Charlie Lynn, a long-time + senior colleague at BBN, who made very significant contributions to + the IPsec documents. + + + + + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 1] + +RFC 4301 Security Architecture for IP December 2005 + + +Table of Contents + + 1. Introduction ....................................................4 + 1.1. Summary of Contents of Document ............................4 + 1.2. Audience ...................................................4 + 1.3. Related Documents ..........................................5 + 2. Design Objectives ...............................................5 + 2.1. Goals/Objectives/Requirements/Problem Description ..........5 + 2.2. Caveats and Assumptions ....................................6 + 3. System Overview .................................................7 + 3.1. What IPsec Does ............................................7 + 3.2. How IPsec Works ............................................9 + 3.3. Where IPsec Can Be Implemented ............................10 + 4. Security Associations ..........................................11 + 4.1. Definition and Scope ......................................12 + 4.2. SA Functionality ..........................................16 + 4.3. Combining SAs .............................................17 + 4.4. Major IPsec Databases .....................................18 + 4.4.1. The Security Policy Database (SPD) .................19 + 4.4.1.1. Selectors .................................26 + 4.4.1.2. Structure of an SPD Entry .................30 + 4.4.1.3. More Regarding Fields Associated + with Next Layer Protocols .................32 + 4.4.2. Security Association Database (SAD) ................34 + 4.4.2.1. Data Items in the SAD .....................36 + 4.4.2.2. Relationship between SPD, PFP + flag, packet, and SAD .....................38 + 4.4.3. Peer Authorization Database (PAD) ..................43 + 4.4.3.1. PAD Entry IDs and Matching Rules ..........44 + 4.4.3.2. IKE Peer Authentication Data ..............45 + 4.4.3.3. Child SA Authorization Data ...............46 + 4.4.3.4. How the PAD Is Used .......................46 + 4.5. SA and Key Management .....................................47 + 4.5.1. Manual Techniques ..................................48 + 4.5.2. Automated SA and Key Management ....................48 + 4.5.3. Locating a Security Gateway ........................49 + 4.6. SAs and Multicast .........................................50 + 5. IP Traffic Processing ..........................................50 + 5.1. Outbound IP Traffic Processing + (protected-to-unprotected) ................................52 + 5.1.1. Handling an Outbound Packet That Must Be + Discarded ..........................................54 + 5.1.2. Header Construction for Tunnel Mode ................55 + 5.1.2.1. IPv4: Header Construction for + Tunnel Mode ...............................57 + 5.1.2.2. IPv6: Header Construction for + Tunnel Mode ...............................59 + 5.2. Processing Inbound IP Traffic (unprotected-to-protected) ..59 + + + +Kent & Seo Standards Track [Page 2] + +RFC 4301 Security Architecture for IP December 2005 + + + 6. ICMP Processing ................................................63 + 6.1. Processing ICMP Error Messages Directed to an + IPsec Implementation ......................................63 + 6.1.1. ICMP Error Messages Received on the + Unprotected Side of the Boundary ...................63 + 6.1.2. ICMP Error Messages Received on the + Protected Side of the Boundary .....................64 + 6.2. Processing Protected, Transit ICMP Error Messages .........64 + 7. Handling Fragments (on the protected side of the IPsec + boundary) ......................................................66 + 7.1. Tunnel Mode SAs that Carry Initial and Non-Initial + Fragments .................................................67 + 7.2. Separate Tunnel Mode SAs for Non-Initial Fragments ........67 + 7.3. Stateful Fragment Checking ................................68 + 7.4. BYPASS/DISCARD Traffic ....................................69 + 8. Path MTU/DF Processing .........................................69 + 8.1. DF Bit ....................................................69 + 8.2. Path MTU (PMTU) Discovery .................................70 + 8.2.1. Propagation of PMTU ................................70 + 8.2.2. PMTU Aging .........................................71 + 9. Auditing .......................................................71 + 10. Conformance Requirements ......................................71 + 11. Security Considerations .......................................72 + 12. IANA Considerations ...........................................72 + 13. Differences from RFC 2401 .....................................72 + 14. Acknowledgements ..............................................75 + Appendix A: Glossary ..............................................76 + Appendix B: Decorrelation .........................................79 + B.1. Decorrelation Algorithm ...................................79 + Appendix C: ASN.1 for an SPD Entry ................................82 + Appendix D: Fragment Handling Rationale ...........................88 + D.1. Transport Mode and Fragments ..............................88 + D.2. Tunnel Mode and Fragments .................................89 + D.3. The Problem of Non-Initial Fragments ......................90 + D.4. BYPASS/DISCARD Traffic ....................................93 + D.5. Just say no to ports? .....................................94 + D.6. Other Suggested Solutions..................................94 + D.7. Consistency................................................95 + D.8. Conclusions................................................95 + Appendix E: Example of Supporting Nested SAs via SPD and + Forwarding Table Entries...............................96 + References.........................................................98 + Normative References............................................98 + Informative References..........................................99 + + + + + + + +Kent & Seo Standards Track [Page 3] + +RFC 4301 Security Architecture for IP December 2005 + + +1. Introduction + +1.1. Summary of Contents of Document + + This document specifies the base architecture for IPsec-compliant + systems. It describes how to provide a set of security services for + traffic at the IP layer, in both the IPv4 [Pos81a] and IPv6 [DH98] + environments. This document describes the requirements for systems + that implement IPsec, the fundamental elements of such systems, and + how the elements fit together and fit into the IP environment. It + also describes the security services offered by the IPsec protocols, + and how these services can be employed in the IP environment. This + document does not address all aspects of the IPsec architecture. + Other documents address additional architectural details in + specialized environments, e.g., use of IPsec in Network Address + Translation (NAT) environments and more comprehensive support for IP + multicast. The fundamental components of the IPsec security + architecture are discussed in terms of their underlying, required + functionality. Additional RFCs (see Section 1.3 for pointers to + other documents) define the protocols in (a), (c), and (d). + + a. Security Protocols -- Authentication Header (AH) and + Encapsulating Security Payload (ESP) + b. Security Associations -- what they are and how they work, + how they are managed, associated processing + c. Key Management -- manual and automated (The Internet Key + Exchange (IKE)) + d. Cryptographic algorithms for authentication and encryption + + This document is not a Security Architecture for the Internet; it + addresses security only at the IP layer, provided through the use of + a combination of cryptographic and protocol security mechanisms. + + The spelling "IPsec" is preferred and used throughout this and all + related IPsec standards. All other capitalizations of IPsec (e.g., + IPSEC, IPSec, ipsec) are deprecated. However, any capitalization of + the sequence of letters "IPsec" should be understood to refer to the + IPsec protocols. + + The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, + SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this + document, are to be interpreted as described in RFC 2119 [Bra97]. + +1.2. Audience + + The target audience for this document is primarily individuals who + implement this IP security technology or who architect systems that + will use this technology. Technically adept users of this technology + + + +Kent & Seo Standards Track [Page 4] + +RFC 4301 Security Architecture for IP December 2005 + + + (end users or system administrators) also are part of the target + audience. A glossary is provided in Appendix A to help fill in gaps + in background/vocabulary. This document assumes that the reader is + familiar with the Internet Protocol (IP), related networking + technology, and general information system security terms and + concepts. + +1.3. Related Documents + + As mentioned above, other documents provide detailed definitions of + some of the components of IPsec and of their interrelationship. They + include RFCs on the following topics: + + a. security protocols -- RFCs describing the Authentication + Header (AH) [Ken05b] and Encapsulating Security Payload + (ESP) [Ken05a] protocols. + b. cryptographic algorithms for integrity and encryption -- one + RFC that defines the mandatory, default algorithms for use + with AH and ESP [Eas05], a similar RFC that defines the + mandatory algorithms for use with IKEv2 [Sch05] plus a + separate RFC for each cryptographic algorithm. + c. automatic key management -- RFCs on "The Internet Key + Exchange (IKEv2) Protocol" [Kau05] and "Cryptographic + Algorithms for Use in the Internet Key Exchange Version 2 + (IKEv2)" [Sch05]. + +2. Design Objectives + +2.1. Goals/Objectives/Requirements/Problem Description + + IPsec is designed to provide interoperable, high quality, + cryptographically-based security for IPv4 and IPv6. The set of + security services offered includes access control, connectionless + integrity, data origin authentication, detection and rejection of + replays (a form of partial sequence integrity), confidentiality (via + encryption), and limited traffic flow confidentiality. These + services are provided at the IP layer, offering protection in a + standard fashion for all protocols that may be carried over IP + (including IP itself). + + IPsec includes a specification for minimal firewall functionality, + since that is an essential aspect of access control at the IP layer. + Implementations are free to provide more sophisticated firewall + mechanisms, and to implement the IPsec-mandated functionality using + those more sophisticated mechanisms. (Note that interoperability may + suffer if additional firewall constraints on traffic flows are + imposed by an IPsec implementation but cannot be negotiated based on + the traffic selector features defined in this document and negotiated + + + +Kent & Seo Standards Track [Page 5] + +RFC 4301 Security Architecture for IP December 2005 + + + via IKEv2.) The IPsec firewall function makes use of the + cryptographically-enforced authentication and integrity provided for + all IPsec traffic to offer better access control than could be + obtained through use of a firewall (one not privy to IPsec internal + parameters) plus separate cryptographic protection. + + Most of the security services are provided through use of two traffic + security protocols, the Authentication Header (AH) and the + Encapsulating Security Payload (ESP), and through the use of + cryptographic key management procedures and protocols. The set of + IPsec protocols employed in a context, and the ways in which they are + employed, will be determined by the users/administrators in that + context. It is the goal of the IPsec architecture to ensure that + compliant implementations include the services and management + interfaces needed to meet the security requirements of a broad user + population. + + When IPsec is correctly implemented and deployed, it ought not + adversely affect users, hosts, and other Internet components that do + not employ IPsec for traffic protection. IPsec security protocols + (AH and ESP, and to a lesser extent, IKE) are designed to be + cryptographic algorithm independent. This modularity permits + selection of different sets of cryptographic algorithms as + appropriate, without affecting the other parts of the implementation. + For example, different user communities may select different sets of + cryptographic algorithms (creating cryptographically-enforced + cliques) if required. + + To facilitate interoperability in the global Internet, a set of + default cryptographic algorithms for use with AH and ESP is specified + in [Eas05] and a set of mandatory-to-implement algorithms for IKEv2 + is specified in [Sch05]. [Eas05] and [Sch05] will be periodically + updated to keep pace with computational and cryptologic advances. By + specifying these algorithms in documents that are separate from the + AH, ESP, and IKEv2 specifications, these algorithms can be updated or + replaced without affecting the standardization progress of the rest + of the IPsec document suite. The use of these cryptographic + algorithms, in conjunction with IPsec traffic protection and key + management protocols, is intended to permit system and application + developers to deploy high quality, Internet-layer, cryptographic + security technology. + +2.2. Caveats and Assumptions + + The suite of IPsec protocols and associated default cryptographic + algorithms are designed to provide high quality security for Internet + traffic. However, the security offered by use of these protocols + ultimately depends on the quality of their implementation, which is + + + +Kent & Seo Standards Track [Page 6] + +RFC 4301 Security Architecture for IP December 2005 + + + outside the scope of this set of standards. Moreover, the security + of a computer system or network is a function of many factors, + including personnel, physical, procedural, compromising emanations, + and computer security practices. Thus, IPsec is only one part of an + overall system security architecture. + + Finally, the security afforded by the use of IPsec is critically + dependent on many aspects of the operating environment in which the + IPsec implementation executes. For example, defects in OS security, + poor quality of random number sources, sloppy system management + protocols and practices, etc., can all degrade the security provided + by IPsec. As above, none of these environmental attributes are + within the scope of this or other IPsec standards. + +3. System Overview + + This section provides a high level description of how IPsec works, + the components of the system, and how they fit together to provide + the security services noted above. The goal of this description is + to enable the reader to "picture" the overall process/system, see how + it fits into the IP environment, and to provide context for later + sections of this document, which describe each of the components in + more detail. + + An IPsec implementation operates in a host, as a security gateway + (SG), or as an independent device, affording protection to IP + traffic. (A security gateway is an intermediate system implementing + IPsec, e.g., a firewall or router that has been IPsec-enabled.) More + detail on these classes of implementations is provided later, in + Section 3.3. The protection offered by IPsec is based on requirements + defined by a Security Policy Database (SPD) established and + maintained by a user or system administrator, or by an application + operating within constraints established by either of the above. In + general, packets are selected for one of three processing actions + based on IP and next layer header information ("Selectors", Section + 4.4.1.1) matched against entries in the SPD. Each packet is either + PROTECTed using IPsec security services, DISCARDed, or allowed to + BYPASS IPsec protection, based on the applicable SPD policies + identified by the Selectors. + +3.1. What IPsec Does + + IPsec creates a boundary between unprotected and protected + interfaces, for a host or a network (see Figure 1 below). Traffic + traversing the boundary is subject to the access controls specified + by the user or administrator responsible for the IPsec configuration. + These controls indicate whether packets cross the boundary unimpeded, + are afforded security services via AH or ESP, or are discarded. + + + +Kent & Seo Standards Track [Page 7] + +RFC 4301 Security Architecture for IP December 2005 + + + IPsec security services are offered at the IP layer through selection + of appropriate security protocols, cryptographic algorithms, and + cryptographic keys. IPsec can be used to protect one or more "paths" + (a) between a pair of hosts, (b) between a pair of security gateways, + or (c) between a security gateway and a host. A compliant host + implementation MUST support (a) and (c) and a compliant security + gateway must support all three of these forms of connectivity, since + under certain circumstances a security gateway acts as a host. + + Unprotected + ^ ^ + | | + +-------------|-------|-------+ + | +-------+ | | | + | |Discard|<--| V | + | +-------+ |B +--------+ | + ................|y..| AH/ESP |..... IPsec Boundary + | +---+ |p +--------+ | + | |IKE|<----|a ^ | + | +---+ |s | | + | +-------+ |s | | + | |Discard|<--| | | + | +-------+ | | | + +-------------|-------|-------+ + | | + V V + Protected + + Figure 1. Top Level IPsec Processing Model + + In this diagram, "unprotected" refers to an interface that might also + be described as "black" or "ciphertext". Here, "protected" refers to + an interface that might also be described as "red" or "plaintext". + The protected interface noted above may be internal, e.g., in a host + implementation of IPsec, the protected interface may link to a socket + layer interface presented by the OS. In this document, the term + "inbound" refers to traffic entering an IPsec implementation via the + unprotected interface or emitted by the implementation on the + unprotected side of the boundary and directed towards the protected + interface. The term "outbound" refers to traffic entering the + implementation via the protected interface, or emitted by the + implementation on the protected side of the boundary and directed + toward the unprotected interface. An IPsec implementation may + support more than one interface on either or both sides of the + boundary. + + + + + + +Kent & Seo Standards Track [Page 8] + +RFC 4301 Security Architecture for IP December 2005 + + + Note the facilities for discarding traffic on either side of the + IPsec boundary, the BYPASS facility that allows traffic to transit + the boundary without cryptographic protection, and the reference to + IKE as a protected-side key and security management function. + + IPsec optionally supports negotiation of IP compression [SMPT01], + motivated in part by the observation that when encryption is employed + within IPsec, it prevents effective compression by lower protocol + layers. + +3.2. How IPsec Works + + IPsec uses two protocols to provide traffic security services -- + Authentication Header (AH) and Encapsulating Security Payload (ESP). + Both protocols are described in detail in their respective RFCs + [Ken05b, Ken05a]. IPsec implementations MUST support ESP and MAY + support AH. (Support for AH has been downgraded to MAY because + experience has shown that there are very few contexts in which ESP + cannot provide the requisite security services. Note that ESP can be + used to provide only integrity, without confidentiality, making it + comparable to AH in most contexts.) + + o The IP Authentication Header (AH) [Ken05b] offers integrity and + data origin authentication, with optional (at the discretion of + the receiver) anti-replay features. + + o The Encapsulating Security Payload (ESP) protocol [Ken05a] offers + the same set of services, and also offers confidentiality. Use of + ESP to provide confidentiality without integrity is NOT + RECOMMENDED. When ESP is used with confidentiality enabled, there + are provisions for limited traffic flow confidentiality, i.e., + provisions for concealing packet length, and for facilitating + efficient generation and discard of dummy packets. This + capability is likely to be effective primarily in virtual private + network (VPN) and overlay network contexts. + + o Both AH and ESP offer access control, enforced through the + distribution of cryptographic keys and the management of traffic + flows as dictated by the Security Policy Database (SPD, Section + 4.4.1). + + These protocols may be applied individually or in combination with + each other to provide IPv4 and IPv6 security services. However, most + security requirements can be met through the use of ESP by itself. + Each protocol supports two modes of use: transport mode and tunnel + mode. In transport mode, AH and ESP provide protection primarily for + + + + + +Kent & Seo Standards Track [Page 9] + +RFC 4301 Security Architecture for IP December 2005 + + + next layer protocols; in tunnel mode, AH and ESP are applied to + tunneled IP packets. The differences between the two modes are + discussed in Section 4.1. + + IPsec allows the user (or system administrator) to control the + granularity at which a security service is offered. For example, one + can create a single encrypted tunnel to carry all the traffic between + two security gateways, or a separate encrypted tunnel can be created + for each TCP connection between each pair of hosts communicating + across these gateways. IPsec, through the SPD management paradigm, + incorporates facilities for specifying: + + o which security protocol (AH or ESP) to employ, the mode (transport + or tunnel), security service options, what cryptographic + algorithms to use, and in what combinations to use the specified + protocols and services, and + + o the granularity at which protection should be applied. + + Because most of the security services provided by IPsec require the + use of cryptographic keys, IPsec relies on a separate set of + mechanisms for putting these keys in place. This document requires + support for both manual and automated distribution of keys. It + specifies a specific public-key based approach (IKEv2 [Kau05]) for + automated key management, but other automated key distribution + techniques MAY be used. + + Note: This document mandates support for several features for which + support is available in IKEv2 but not in IKEv1, e.g., negotiation of + an SA representing ranges of local and remote ports or negotiation of + multiple SAs with the same selectors. Therefore, this document + assumes use of IKEv2 or a key and security association management + system with comparable features. + +3.3. Where IPsec Can Be Implemented + + There are many ways in which IPsec may be implemented in a host, or + in conjunction with a router or firewall to create a security + gateway, or as an independent security device. + + a. IPsec may be integrated into the native IP stack. This requires + access to the IP source code and is applicable to both hosts and + security gateways, although native host implementations benefit + the most from this strategy, as explained later (Section 4.4.1, + paragraph 6; Section 4.4.1.1, last paragraph). + + + + + + +Kent & Seo Standards Track [Page 10] + +RFC 4301 Security Architecture for IP December 2005 + + + b. In a "bump-in-the-stack" (BITS) implementation, IPsec is + implemented "underneath" an existing implementation of an IP + protocol stack, between the native IP and the local network + drivers. Source code access for the IP stack is not required in + this context, making this implementation approach appropriate for + use with legacy systems. This approach, when it is adopted, is + usually employed in hosts. + + c. The use of a dedicated, inline security protocol processor is a + common design feature of systems used by the military, and of some + commercial systems as well. It is sometimes referred to as a + "bump-in-the-wire" (BITW) implementation. Such implementations + may be designed to serve either a host or a gateway. Usually, the + BITW device is itself IP addressable. When supporting a single + host, it may be quite analogous to a BITS implementation, but in + supporting a router or firewall, it must operate like a security + gateway. + + This document often talks in terms of use of IPsec by a host or a + security gateway, without regard to whether the implementation is + native, BITS, or BITW. When the distinctions among these + implementation options are significant, the document makes reference + to specific implementation approaches. + + A host implementation of IPsec may appear in devices that might not + be viewed as "hosts". For example, a router might employ IPsec to + protect routing protocols (e.g., BGP) and management functions (e.g., + Telnet), without affecting subscriber traffic traversing the router. + A security gateway might employ separate IPsec implementations to + protect its management traffic and subscriber traffic. The + architecture described in this document is very flexible. For + example, a computer with a full-featured, compliant, native OS IPsec + implementation should be capable of being configured to protect + resident (host) applications and to provide security gateway + protection for traffic traversing the computer. Such configuration + would make use of the forwarding tables and the SPD selection + function described in Sections 5.1 and 5.2. + +4. Security Associations + + This section defines Security Association management requirements for + all IPv6 implementations and for those IPv4 implementations that + implement AH, ESP, or both AH and ESP. The concept of a "Security + Association" (SA) is fundamental to IPsec. Both AH and ESP make use + of SAs, and a major function of IKE is the establishment and + maintenance of SAs. All implementations of AH or ESP MUST support + the concept of an SA as described below. The remainder of this + + + + +Kent & Seo Standards Track [Page 11] + +RFC 4301 Security Architecture for IP December 2005 + + + section describes various aspects of SA management, defining required + characteristics for SA policy management and SA management + techniques. + +4.1. Definition and Scope + + An SA is a simplex "connection" that affords security services to the + traffic carried by it. Security services are afforded to an SA by + the use of AH, or ESP, but not both. If both AH and ESP protection + are applied to a traffic stream, then two SAs must be created and + coordinated to effect protection through iterated application of the + security protocols. To secure typical, bi-directional communication + between two IPsec-enabled systems, a pair of SAs (one in each + direction) is required. IKE explicitly creates SA pairs in + recognition of this common usage requirement. + + For an SA used to carry unicast traffic, the Security Parameters + Index (SPI) by itself suffices to specify an SA. (For information on + the SPI, see Appendix A and the AH and ESP specifications [Ken05b, + Ken05a].) However, as a local matter, an implementation may choose + to use the SPI in conjunction with the IPsec protocol type (AH or + ESP) for SA identification. 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 (GSA'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 constitute the group. + Consequently, it is possible that a GSA and a unicast SA 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 SA Database (SAD) (Section 4.4.2) must indicate + whether the SA lookup makes use of the destination IP address, or the + 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 address, or destination and source + address (as indicated in the SAD entry) is the "longest" match. This + implies a logical ordering of the SAD search as follows: + + + +Kent & Seo Standards Track [Page 12] + +RFC 4301 Security Architecture for IP December 2005 + + + 1. Search the SAD for a match on the combination of SPI, + destination address, and source address. If an SAD entry + matches, then process the inbound packet with that + matching SAD entry. Otherwise, proceed to step 2. + + 2. Search the SAD for a match on both SPI and destination address. + If the SAD entry matches, then process the inbound 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, and on + both SPI and protocol, otherwise. If an SAD entry matches, + then process the inbound packet with that matching SAD entry. + Otherwise, discard the packet and log an auditable event. + + In practice, an implementation may choose any method (or none at all) + 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 could be 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 could be 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. + + If different classes of traffic (distinguished by Differentiated + Services Code Point (DSCP) bits [NiBlBaBL98], [Gro02]) are sent on + the same SA, and if the receiver is employing the optional + anti-replay feature available in both AH and ESP, this could result + in inappropriate discarding of lower priority packets due to the + windowing mechanism used by this feature. Therefore, a sender SHOULD + put traffic of different classes, but with the same selector values, + on different SAs to support Quality of Service (QoS) appropriately. + To permit this, the IPsec implementation MUST permit establishment + and maintenance of multiple SAs between a given sender and receiver, + + + +Kent & Seo Standards Track [Page 13] + +RFC 4301 Security Architecture for IP December 2005 + + + with the same selectors. Distribution of traffic among these + parallel SAs to support QoS is locally determined by the sender and + is not negotiated by IKE. The receiver MUST process the packets from + the different SAs without prejudice. These requirements apply to + both transport and tunnel mode SAs. In the case of tunnel mode SAs, + the DSCP values in question appear in the inner IP header. In + transport mode, the DSCP value might change en route, but this should + not cause problems with respect to IPsec processing since the value + is not employed for SA selection and MUST NOT be checked as part of + SA/packet validation. However, if significant re-ordering of packets + occurs in an SA, e.g., as a result of changes to DSCP values en + route, this may trigger packet discarding by a receiver due to + application of the anti-replay mechanism. + + DISCUSSION: Although the DSCP [NiBlBaBL98, Gro02] and Explicit + Congestion Notification (ECN) [RaFlBl01] fields are not "selectors", + as that term in used in this architecture, the sender will need a + mechanism to direct packets with a given (set of) DSCP values to the + appropriate SA. This mechanism might be termed a "classifier". + + As noted above, two types of SAs are defined: transport mode and + tunnel mode. IKE creates pairs of SAs, so for simplicity, we choose + to require that both SAs in a pair be of the same mode, transport or + tunnel. + + A transport mode SA is an SA typically employed between a pair of + hosts to provide end-to-end security services. When security is + desired between two intermediate systems along a path (vs. end-to-end + use of IPsec), transport mode MAY be used between security gateways + or between a security gateway and a host. In the case where + transport mode is used between security gateways or between a + security gateway and a host, transport mode may be used to support + in-IP tunneling (e.g., IP-in-IP [Per96] or Generic Routing + Encapsulation (GRE) tunneling [FaLiHaMeTr00] or dynamic routing + [ToEgWa04]) over transport mode SAs. To clarify, the use of + transport mode by an intermediate system (e.g., a security gateway) + is permitted only when applied to packets whose source address (for + outbound packets) or destination address (for inbound packets) is an + address belonging to the intermediate system itself. The access + control functions that are an important part of IPsec are + significantly limited in this context, as they cannot be applied to + the end-to-end headers of the packets that traverse a transport mode + SA used in this fashion. Thus, this way of using transport mode + should be evaluated carefully before being employed in a specific + context. + + + + + + +Kent & Seo Standards Track [Page 14] + +RFC 4301 Security Architecture for IP December 2005 + + + In IPv4, a transport mode security protocol header appears + immediately after the IP header and any options, and before any next + layer protocols (e.g., TCP or UDP). In IPv6, the security protocol + header appears after the base IP header and selected extension + headers, but may appear before or after destination options; it MUST + appear before next layer protocols (e.g., TCP, UDP, Stream Control + Transmission Protocol (SCTP)). In the case of ESP, a transport mode + SA provides security services only for these next layer protocols, + not for the IP header or any extension headers preceding the ESP + header. In the case of AH, the protection is also extended to + selected portions of the IP header preceding it, selected portions of + extension headers, and selected options (contained in the IPv4 + header, IPv6 Hop-by-Hop extension header, or IPv6 Destination + extension headers). For more details on the coverage afforded by AH, + see the AH specification [Ken05b]. + + A tunnel mode SA is essentially an SA applied to an IP tunnel, with + the access controls applied to the headers of the traffic inside the + tunnel. Two hosts MAY establish a tunnel mode SA between themselves. + Aside from the two exceptions below, whenever either end of a + security association is a security gateway, the SA MUST be tunnel + mode. Thus, an SA between two security gateways is typically a + tunnel mode SA, as is an SA between a host and a security gateway. + The two exceptions are as follows. + + o Where traffic is destined for a security gateway, e.g., Simple + Network Management Protocol (SNMP) commands, the security gateway + is acting as a host and transport mode is allowed. In this case, + the SA terminates at a host (management) function within a + security gateway and thus merits different treatment. + + o As noted above, security gateways MAY support a transport mode SA + to provide security for IP traffic between two intermediate + systems along a path, e.g., between a host and a security gateway + or between two security gateways. + + Several concerns motivate the use of tunnel mode for an SA involving + a security gateway. For example, if there are multiple paths (e.g., + via different security gateways) to the same destination behind a + security gateway, it is important that an IPsec packet be sent to the + security gateway with which the SA was negotiated. Similarly, a + packet that might be fragmented en route must have all the fragments + delivered to the same IPsec instance for reassembly prior to + cryptographic processing. Also, when a fragment is processed by + IPsec and transmitted, then fragmented en route, it is critical that + there be inner and outer headers to retain the fragmentation state + data for the pre- and post-IPsec packet formats. Hence there are + several reasons for employing tunnel mode when either end of an SA is + + + +Kent & Seo Standards Track [Page 15] + +RFC 4301 Security Architecture for IP December 2005 + + + a security gateway. (Use of an IP-in-IP tunnel in conjunction with + transport mode can also address these fragmentation issues. However, + this configuration limits the ability of IPsec to enforce access + control policies on traffic.) + + Note: AH and ESP cannot be applied using transport mode to IPv4 + packets that are fragments. Only tunnel mode can be employed in such + cases. For IPv6, it would be feasible to carry a plaintext fragment + on a transport mode SA; however, for simplicity, this restriction + also applies to IPv6 packets. See Section 7 for more details on + handling plaintext fragments on the protected side of the IPsec + barrier. + + For a tunnel mode SA, there is an "outer" IP header that specifies + the IPsec processing source and destination, plus an "inner" IP + header that specifies the (apparently) ultimate source and + destination for the packet. The security protocol header appears + after the outer IP header, and before the inner IP header. If AH is + employed in tunnel mode, portions of the outer IP header are afforded + protection (as above), as well as all of the tunneled IP packet + (i.e., all of the inner IP header is protected, as well as next layer + protocols). If ESP is employed, the protection is afforded only to + the tunneled packet, not to the outer header. + + In summary, + + a) A host implementation of IPsec MUST support both transport and + tunnel mode. This is true for native, BITS, and BITW + implementations for hosts. + + b) A security gateway MUST support tunnel mode and MAY support + transport mode. If it supports transport mode, that should be + used only when the security gateway is acting as a host, e.g., for + network management, or to provide security between two + intermediate systems along a path. + +4.2. SA Functionality + + The set of security services offered by an SA depends on the security + protocol selected, the SA mode, the endpoints of the SA, and the + election of optional services within the protocol. + + For example, both AH and ESP offer integrity and authentication + services, but the coverage differs for each protocol and differs for + transport vs. tunnel mode. If the integrity of an IPv4 option or + IPv6 extension header must be protected en route between sender and + receiver, AH can provide this service, except for IP or extension + headers that may change in a fashion not predictable by the sender. + + + +Kent & Seo Standards Track [Page 16] + +RFC 4301 Security Architecture for IP December 2005 + + + However, the same security may be achieved in some contexts by + applying ESP to a tunnel carrying a packet. + + The granularity of access control provided is determined by the + choice of the selectors that define each SA. Moreover, the + authentication means employed by IPsec peers, e.g., during creation + of an IKE (vs. child) SA also affects the granularity of the access + control afforded. + + If confidentiality is selected, then an ESP (tunnel mode) SA between + two security gateways can offer partial traffic flow confidentiality. + The use of tunnel mode allows the inner IP headers to be encrypted, + concealing the identities of the (ultimate) traffic source and + destination. Moreover, ESP payload padding also can be invoked to + hide the size of the packets, further concealing the external + characteristics of the traffic. Similar traffic flow confidentiality + services may be offered when a mobile user is assigned a dynamic IP + address in a dialup context, and establishes a (tunnel mode) ESP SA + to a corporate firewall (acting as a security gateway). Note that + fine-granularity SAs generally are more vulnerable to traffic + analysis than coarse-granularity ones that are carrying traffic from + many subscribers. + + Note: A compliant implementation MUST NOT allow instantiation of an + ESP SA that employs both NULL encryption and no integrity algorithm. + An attempt to negotiate such an SA is an auditable event by both + initiator and responder. The audit log entry for this event SHOULD + include the current date/time, local IKE IP address, and remote IKE + IP address. The initiator SHOULD record the relevant SPD entry. + +4.3. Combining SAs + + This document does not require support for nested security + associations or for what RFC 2401 [RFC2401] called "SA bundles". + These features still can be effected by appropriate configuration of + both the SPD and the local forwarding functions (for inbound and + outbound traffic), but this capability is outside of the IPsec module + and thus the scope of this specification. As a result, management of + nested/bundled SAs is potentially more complex and less assured than + under the model implied by RFC 2401 [RFC2401]. An implementation + that provides support for nested SAs SHOULD provide a management + interface that enables a user or administrator to express the nesting + requirement, and then create the appropriate SPD entries and + forwarding table entries to effect the requisite processing. (See + Appendix E for an example of how to configure nested SAs.) + + + + + + +Kent & Seo Standards Track [Page 17] + +RFC 4301 Security Architecture for IP December 2005 + + +4.4. Major IPsec Databases + + Many of the details associated with processing IP traffic in an IPsec + implementation are largely a local matter, not subject to + standardization. However, some external aspects of the processing + must be standardized to ensure interoperability and to provide a + minimum management capability that is essential for productive use of + IPsec. This section describes a general model for processing IP + traffic relative to IPsec functionality, in support of these + interoperability and functionality goals. The model described below + is nominal; implementations need not match details of this model as + presented, but the external behavior of implementations MUST + correspond to the externally observable characteristics of this model + in order to be compliant. + + There are three nominal databases in this model: the Security Policy + Database (SPD), the Security Association Database (SAD), and the Peer + Authorization Database (PAD). The first specifies the policies that + determine the disposition of all IP traffic inbound or outbound from + a host or security gateway (Section 4.4.1). The second database + contains parameters that are associated with each established (keyed) + SA (Section 4.4.2). The third database, the PAD, provides a link + between an SA management protocol (such as IKE) and the SPD (Section + 4.4.3). + + Multiple Separate IPsec Contexts + + If an IPsec implementation acts as a security gateway for multiple + subscribers, it MAY implement multiple separate IPsec contexts. + Each context MAY have and MAY use completely independent + identities, policies, key management SAs, and/or IPsec SAs. This + is for the most part a local implementation matter. However, a + means for associating inbound (SA) proposals with local contexts + is required. To this end, if supported by the key management + protocol in use, context identifiers MAY be conveyed from + initiator to responder in the signaling messages, with the result + that IPsec SAs are created with a binding to a particular context. + For example, a security gateway that provides VPN service to + multiple customers will be able to associate each customer's + traffic with the correct VPN. + + Forwarding vs Security Decisions + + The IPsec model described here embodies a clear separation between + forwarding (routing) and security decisions, to accommodate a wide + range of contexts where IPsec may be employed. Forwarding may be + trivial, in the case where there are only two interfaces, or it + may be complex, e.g., if the context in which IPsec is implemented + + + +Kent & Seo Standards Track [Page 18] + +RFC 4301 Security Architecture for IP December 2005 + + + employs a sophisticated forwarding function. IPsec assumes only + that outbound and inbound traffic that has passed through IPsec + processing is forwarded in a fashion consistent with the context + in which IPsec is implemented. Support for nested SAs is + optional; if required, it requires coordination between forwarding + tables and SPD entries to cause a packet to traverse the IPsec + boundary more than once. + + "Local" vs "Remote" + + In this document, with respect to IP addresses and ports, the + terms "Local" and "Remote" are used for policy rules. "Local" + refers to the entity being protected by an IPsec implementation, + i.e., the "source" address/port of outbound packets or the + "destination" address/port of inbound packets. "Remote" refers to + a peer entity or peer entities. The terms "source" and + "destination" are used for packet header fields. + + "Non-initial" vs "Initial" Fragments + + Throughout this document, the phrase "non-initial fragments" is + used to mean fragments that do not contain all of the selector + values that may be needed for access control (e.g., they might not + contain Next Layer Protocol, source and destination ports, ICMP + message type/code, Mobility Header type). And the phrase "initial + fragment" is used to mean a fragment that contains all the + selector values needed for access control. However, it should be + noted that for IPv6, which fragment contains the Next Layer + Protocol and ports (or ICMP message type/code or Mobility Header + type [Mobip]) will depend on the kind and number of extension + headers present. The "initial fragment" might not be the first + fragment, in this context. + +4.4.1. The Security Policy Database (SPD) + + An SA is a management construct used to enforce security policy for + traffic crossing the IPsec boundary. Thus, an essential element of + SA processing is an underlying Security Policy Database (SPD) that + specifies what services are to be offered to IP datagrams and in what + fashion. The form of the database and its interface are outside the + scope of this specification. However, this section specifies minimum + management functionality that must be provided, to allow a user or + system administrator to control whether and how IPsec is applied to + traffic transmitted or received by a host or transiting a security + gateway. The SPD, or relevant caches, must be consulted during the + processing of all traffic (inbound and outbound), including traffic + not protected by IPsec, that traverses the IPsec boundary. This + includes IPsec management traffic such as IKE. An IPsec + + + +Kent & Seo Standards Track [Page 19] + +RFC 4301 Security Architecture for IP December 2005 + + + implementation MUST have at least one SPD, and it MAY support + multiple SPDs, if appropriate for the context in which the IPsec + implementation operates. There is no requirement to maintain SPDs on + a per-interface basis, as was specified in RFC 2401 [RFC2401]. + However, if an implementation supports multiple SPDs, then it MUST + include an explicit SPD selection function that is invoked to select + the appropriate SPD for outbound traffic processing. The inputs to + this function are the outbound packet and any local metadata (e.g., + the interface via which the packet arrived) required to effect the + SPD selection function. The output of the function is an SPD + identifier (SPD-ID). + + The SPD is an ordered database, consistent with the use of Access + Control Lists (ACLs) or packet filters in firewalls, routers, etc. + The ordering requirement arises because entries often will overlap + due to the presence of (non-trivial) ranges as values for selectors. + Thus, a user or administrator MUST be able to order the entries to + express a desired access control policy. There is no way to impose a + general, canonical order on SPD entries, because of the allowed use + of wildcards for selector values and because the different types of + selectors are not hierarchically related. + + Processing Choices: DISCARD, BYPASS, PROTECT + + An SPD must discriminate among traffic that is afforded IPsec + protection and traffic that is allowed to bypass IPsec. This + applies to the IPsec protection to be applied by a sender and to + the IPsec protection that must be present at the receiver. For + any outbound or inbound datagram, three processing choices are + possible: DISCARD, BYPASS IPsec, or PROTECT using IPsec. The + first choice refers to traffic that is not allowed to traverse the + IPsec boundary (in the specified direction). The second choice + refers to traffic that is allowed to cross the IPsec boundary + without IPsec protection. The third choice refers to traffic that + is afforded IPsec protection, and for such traffic the SPD must + specify the security protocols to be employed, their mode, + security service options, and the cryptographic algorithms to be + used. + + SPD-S, SPD-I, SPD-O + + An SPD is logically divided into three pieces. The SPD-S (secure + traffic) contains entries for all traffic subject to IPsec + protection. SPD-O (outbound) contains entries for all outbound + traffic that is to be bypassed or discarded. SPD-I (inbound) is + applied to inbound traffic that will be bypassed or discarded. + All three of these can be decorrelated (with the exception noted + above for native host implementations) to facilitate caching. If + + + +Kent & Seo Standards Track [Page 20] + +RFC 4301 Security Architecture for IP December 2005 + + + an IPsec implementation supports only one SPD, then the SPD + consists of all three parts. If multiple SPDs are supported, some + of them may be partial, e.g., some SPDs might contain only SPD-I + entries, to control inbound bypassed traffic on a per-interface + basis. The split allows SPD-I to be consulted without having to + consult SPD-S, for such traffic. Since the SPD-I is just a part + of the SPD, if a packet that is looked up in the SPD-I cannot be + matched to an entry there, then the packet MUST be discarded. + Note that for outbound traffic, if a match is not found in SPD-S, + then SPD-O must be checked to see if the traffic should be + bypassed. Similarly, if SPD-O is checked first and no match is + found, then SPD-S must be checked. In an ordered, + non-decorrelated SPD, the entries for the SPD-S, SPD-I, and SPD-O + are interleaved. So there is one lookup in the SPD. + + SPD Entries + + Each SPD entry specifies packet disposition as BYPASS, DISCARD, or + PROTECT. The entry is keyed by a list of one or more selectors. + The SPD contains an ordered list of these entries. The required + selector types are defined in Section 4.4.1.1. These selectors are + used to define the granularity of the SAs that are created in + response to an outbound packet or in response to a proposal from a + peer. The detailed structure of an SPD entry is described in + Section 4.4.1.2. Every SPD SHOULD have a nominal, final entry that + matches anything that is otherwise unmatched, and discards it. + + The SPD MUST permit a user or administrator to specify policy + entries as follows: + + - SPD-I: For inbound traffic that is to be bypassed or discarded, + the entry consists of the values of the selectors that apply to + the traffic to be bypassed or discarded. + + - SPD-O: For outbound traffic that is to be bypassed or + discarded, the entry consists of the values of the selectors + that apply to the traffic to be bypassed or discarded. + + - SPD-S: For traffic that is to be protected using IPsec, the + entry consists of the values of the selectors that apply to the + traffic to be protected via AH or ESP, controls on how to + create SAs based on these selectors, and the parameters needed + to effect this protection (e.g., algorithms, modes, etc.). Note + that an SPD-S entry also contains information such as "populate + from packet" (PFP) flag (see paragraphs below on "How To Derive + the Values for an SAD entry") and bits indicating whether the + + + + + +Kent & Seo Standards Track [Page 21] + +RFC 4301 Security Architecture for IP December 2005 + + + SA lookup makes use of the local and remote IP addresses in + addition to the SPI (see AH [Ken05b] or ESP [Ken05a] + specifications). + + Representing Directionality in an SPD Entry + + For traffic protected by IPsec, the Local and Remote address and + ports in an SPD entry are swapped to represent directionality, + consistent with IKE conventions. In general, the protocols that + IPsec deals with have the property of requiring symmetric SAs with + flipped Local/Remote IP addresses. However, for ICMP, there is + often no such bi-directional authorization requirement. + Nonetheless, for the sake of uniformity and simplicity, SPD + entries for ICMP are specified in the same way as for other + protocols. Note also that for ICMP, Mobility Header, and + non-initial fragments, there are no port fields in these packets. + ICMP has message type and code and Mobility Header has mobility + header type. Thus, SPD entries have provisions for expressing + access controls appropriate for these protocols, in lieu of the + normal port field controls. For bypassed or discarded traffic, + separate inbound and outbound entries are supported, e.g., to + permit unidirectional flows if required. + + OPAQUE and ANY + + For each selector in an SPD entry, in addition to the literal + values that define a match, there are two special values: ANY and + OPAQUE. ANY is a wildcard that matches any value in the + corresponding field of the packet, or that matches packets where + that field is not present or is obscured. OPAQUE indicates that + the corresponding selector field is not available for examination + because it may not be present in a fragment, it does not exist for + the given Next Layer Protocol, or prior application of IPsec may + have encrypted the value. The ANY value encompasses the OPAQUE + value. Thus, OPAQUE need be used only when it is necessary to + distinguish between the case of any allowed value for a field, vs. + the absence or unavailability (e.g., due to encryption) of the + field. + + How to Derive the Values for an SAD Entry + + For each selector in an SPD entry, the entry specifies how to + derive the corresponding values for a new SA Database (SAD, see + Section 4.4.2) entry from those in the SPD and the packet. The + goal is to allow an SAD entry and an SPD cache entry to be created + based on specific selector values from the packet, or from the + matching SPD entry. For outbound traffic, there are SPD-S cache + entries and SPD-O cache entries. For inbound traffic not + + + +Kent & Seo Standards Track [Page 22] + +RFC 4301 Security Architecture for IP December 2005 + + + protected by IPsec, there are SPD-I cache entries and there is the + SAD, which represents the cache for inbound IPsec-protected + traffic (see Section 4.4.2). If IPsec processing is specified for + an entry, a "populate from packet" (PFP) flag may be asserted for + one or more of the selectors in the SPD entry (Local IP address; + Remote IP address; Next Layer Protocol; and, depending on Next + Layer Protocol, Local port and Remote port, or ICMP type/code, or + Mobility Header type). If asserted for a given selector X, the + flag indicates that the SA to be created should take its value for + X from the value in the packet. Otherwise, the SA should take its + value(s) for X from the value(s) in the SPD entry. Note: In the + non-PFP case, the selector values negotiated by the SA management + protocol (e.g., IKEv2) may be a subset of those in the SPD entry, + depending on the SPD policy of the peer. Also, whether a single + flag is used for, e.g., source port, ICMP type/code, and Mobility + Header (MH) type, or a separate flag is used for each, is a local + matter. + + The following example illustrates the use of the PFP flag in the + context of a security gateway or a BITS/BITW implementation. + Consider an SPD entry where the allowed value for Remote address + is a range of IPv4 addresses: 192.0.2.1 to 192.0.2.10. Suppose an + outbound packet arrives with a destination address of 192.0.2.3, + and there is no extant SA to carry this packet. The value used + for the SA created to transmit this packet could be either of the + two values shown below, depending on what the SPD entry for this + selector says is the source of the selector value: + + PFP flag value example of new + for the Remote SAD dest. address + addr. selector selector value + --------------- ------------ + a. PFP TRUE 192.0.2.3 (one host) + b. PFP FALSE 192.0.2.1 to 192.0.2.10 (range of hosts) + + Note that if the SPD entry above had a value of ANY for the Remote + address, then the SAD selector value would have to be ANY for case + (b), but would still be as illustrated for case (a). Thus, the + PFP flag can be used to prohibit sharing of an SA, even among + packets that match the same SPD entry. + + Management Interface + + For every IPsec implementation, there MUST be a management + interface that allows a user or system administrator to manage the + SPD. The interface must allow the user (or administrator) to + specify the security processing to be applied to every packet that + traverses the IPsec boundary. (In a native host IPsec + + + +Kent & Seo Standards Track [Page 23] + +RFC 4301 Security Architecture for IP December 2005 + + + implementation making use of a socket interface, the SPD may not + need to be consulted on a per-packet basis, as noted at the end of + Section 4.4.1.1 and in Section 5.) The management interface for + the SPD MUST allow creation of entries consistent with the + selectors defined in Section 4.4.1.1, and MUST support (total) + ordering of these entries, as seen via this interface. The SPD + entries' selectors are analogous to the ACL or packet filters + commonly found in a stateless firewall or packet filtering router + and which are currently managed this way. + + In host systems, applications MAY be allowed to create SPD + entries. (The means of signaling such requests to the IPsec + implementation are outside the scope of this standard.) However, + the system administrator MUST be able to specify whether or not a + user or application can override (default) system policies. The + form of the management interface is not specified by this document + and may differ for hosts vs. security gateways, and within hosts + the interface may differ for socket-based vs. BITS + implementations. However, this document does specify a standard + set of SPD elements that all IPsec implementations MUST support. + + Decorrelation + + The processing model described in this document assumes the + ability to decorrelate overlapping SPD entries to permit caching, + which enables more efficient processing of outbound traffic in + security gateways and BITS/BITW implementations. Decorrelation + [CoSa04] is only a means of improving performance and simplifying + the processing description. This RFC does not require a compliant + implementation to make use of decorrelation. For example, native + host implementations typically make use of caching implicitly + because they bind SAs to socket interfaces, and thus there is no + requirement to be able to decorrelate SPD entries in these + implementations. + + Note: Unless otherwise qualified, the use of "SPD" refers to the + body of policy information in both ordered or decorrelated + (unordered) state. Appendix B provides an algorithm that can be + used to decorrelate SPD entries, but any algorithm that produces + equivalent output may be used. Note that when an SPD entry is + decorrelated all the resulting entries MUST be linked together, so + that all members of the group derived from an individual, SPD + entry (prior to decorrelation) can all be placed into caches and + into the SAD at the same time. For example, suppose one starts + with an entry A (from an ordered SPD) that when decorrelated, + yields entries A1, A2, and A3. When a packet comes along that + matches, say A2, and triggers the creation of an SA, the SA + management protocol (e.g., IKEv2) negotiates A. And all 3 + + + +Kent & Seo Standards Track [Page 24] + +RFC 4301 Security Architecture for IP December 2005 + + + decorrelated entries, A1, A2, and A3, are placed in the + appropriate SPD-S cache and linked to the SA. The intent is that + use of a decorrelated SPD ought not to create more SAs than would + have resulted from use of a not-decorrelated SPD. + + If a decorrelated SPD is employed, there are three options for + what an initiator sends to a peer via an SA management protocol + (e.g., IKE). By sending the complete set of linked, decorrelated + entries that were selected from the SPD, a peer is given the best + possible information to enable selection of the appropriate SPD + entry at its end, especially if the peer has also decorrelated its + SPD. However, if a large number of decorrelated entries are + linked, this may create large packets for SA negotiation, and + hence fragmentation problems for the SA management protocol. + + Alternatively, the original entry from the (correlated) SPD may be + retained and passed to the SA management protocol. Passing the + correlated SPD entry keeps the use of a decorrelated SPD a local + matter, not visible to peers, and avoids possible fragmentation + concerns, although it provides less precise information to a + responder for matching against the responder's SPD. + + An intermediate approach is to send a subset of the complete set + of linked, decorrelated SPD entries. This approach can avoid the + fragmentation problems cited above yet provide better information + than the original, correlated entry. The major shortcoming of + this approach is that it may cause additional SAs to be created + later, since only a subset of the linked, decorrelated entries are + sent to a peer. Implementers are free to employ any of the + approaches cited above. + + A responder uses the traffic selector proposals it receives via an + SA management protocol to select an appropriate entry in its SPD. + The intent of the matching is to select an SPD entry and create an + SA that most closely matches the intent of the initiator, so that + traffic traversing the resulting SA will be accepted at both ends. + If the responder employs a decorrelated SPD, it SHOULD use the + decorrelated SPD entries for matching, as this will generally + result in creation of SAs that are more likely to match the intent + of both peers. If the responder has a correlated SPD, then it + SHOULD match the proposals against the correlated entries. For + IKEv2, use of a decorrelated SPD offers the best opportunity for a + responder to generate a "narrowed" response. + + In all cases, when a decorrelated SPD is available, the + decorrelated entries are used to populate the SPD-S cache. If the + SPD is not decorrelated, caching is not allowed and an ordered + + + + +Kent & Seo Standards Track [Page 25] + +RFC 4301 Security Architecture for IP December 2005 + + + search of SPD MUST be performed to verify that inbound traffic + arriving on an SA is consistent with the access control policy + expressed in the SPD. + + Handling Changes to the SPD While the System Is Running + + If a change is made to the SPD while the system is running, a + check SHOULD be made of the effect of this change on extant SAs. + An implementation SHOULD check the impact of an SPD change on + extant SAs and SHOULD provide a user/administrator with a + mechanism for configuring what actions to take, e.g., delete an + affected SA, allow an affected SA to continue unchanged, etc. + +4.4.1.1. Selectors + + An SA may be fine-grained or coarse-grained, depending on the + selectors used to define the set of traffic for the SA. For example, + all traffic between two hosts may be carried via a single SA, and + afforded a uniform set of security services. Alternatively, traffic + between a pair of hosts might be spread over multiple SAs, depending + on the applications being used (as defined by the Next Layer Protocol + and related fields, e.g., ports), with different security services + offered by different SAs. Similarly, all traffic between a pair of + security gateways could be carried on a single SA, or one SA could be + assigned for each communicating host pair. The following selector + parameters MUST be supported by all IPsec implementations to + facilitate control of SA granularity. Note that both Local and + Remote addresses should either be IPv4 or IPv6, but not a mix of + address types. Also, note that the Local/Remote port selectors (and + ICMP message type and code, and Mobility Header type) may be labeled + as OPAQUE to accommodate situations where these fields are + inaccessible due to packet fragmentation. + + - Remote IP Address(es) (IPv4 or IPv6): This is a list of ranges + of IP addresses (unicast, broadcast (IPv4 only)). This + structure allows expression of a single IP address (via a + trivial range), or a list of addresses (each a trivial range), + or a range of addresses (low and high values, inclusive), as + well as the most generic form of a list of ranges. Address + ranges are used to support more than one remote system sharing + the same SA, e.g., behind a security gateway. + + - Local IP Address(es) (IPv4 or IPv6): This is a list of ranges of + IP addresses (unicast, broadcast (IPv4 only)). This structure + allows expression of a single IP address (via a trivial range), + or a list of addresses (each a trivial range), or a range of + addresses (low and high values, inclusive), as well as the most + generic form of a list of ranges. Address ranges are used to + + + +Kent & Seo Standards Track [Page 26] + +RFC 4301 Security Architecture for IP December 2005 + + + support more than one source system sharing the same SA, e.g., + behind a security gateway. Local refers to the address(es) + being protected by this implementation (or policy entry). + + Note: The SPD does not include support for multicast address + entries. To support multicast SAs, an implementation should + make use of a Group SPD (GSPD) as defined in [RFC3740]. GSPD + entries require a different structure, i.e., one cannot use the + symmetric relationship associated with local and remote address + values for unicast SAs in a multicast context. Specifically, + outbound traffic directed to a multicast address on an SA would + not be received on a companion, inbound SA with the multicast + address as the source. + + - Next Layer Protocol: Obtained from the IPv4 "Protocol" or the + IPv6 "Next Header" fields. This is an individual protocol + number, ANY, or for IPv6 only, OPAQUE. The Next Layer Protocol + is whatever comes after any IP extension headers that are + present. To simplify locating the Next Layer Protocol, there + SHOULD be a mechanism for configuring which IPv6 extension + headers to skip. The default configuration for which protocols + to skip SHOULD include the following protocols: 0 (Hop-by-hop + options), 43 (Routing Header), 44 (Fragmentation Header), and 60 + (Destination Options). Note: The default list does NOT include + 51 (AH) or 50 (ESP). From a selector lookup point of view, + IPsec treats AH and ESP as Next Layer Protocols. + + Several additional selectors depend on the Next Layer Protocol + value: + + * If the Next Layer Protocol uses two ports (as do TCP, UDP, + SCTP, and others), then there are selectors for Local and + Remote Ports. Each of these selectors has a list of ranges + of values. Note that the Local and Remote ports may not be + available in the case of receipt of a fragmented packet or if + the port fields have been protected by IPsec (encrypted); + thus, a value of OPAQUE also MUST be supported. Note: In a + non-initial fragment, port values will not be available. If + a port selector specifies a value other than ANY or OPAQUE, + it cannot match packets that are non-initial fragments. If + the SA requires a port value other than ANY or OPAQUE, an + arriving fragment without ports MUST be discarded. (See + Section 7, "Handling Fragments".) + + * If the Next Layer Protocol is a Mobility Header, then there + is a selector for IPv6 Mobility Header message type (MH type) + [Mobip]. This is an 8-bit value that identifies a particular + mobility message. Note that the MH type may not be available + + + +Kent & Seo Standards Track [Page 27] + +RFC 4301 Security Architecture for IP December 2005 + + + in the case of receipt of a fragmented packet. (See Section + 7, "Handling Fragments".) For IKE, the IPv6 Mobility Header + message type (MH type) is placed in the most significant + eight bits of the 16-bit local "port" selector. + + * If the Next Layer Protocol value is ICMP, then there is a + 16-bit selector for the ICMP message type and code. The + message type is a single 8-bit value, which defines the type + of an ICMP message, or ANY. The ICMP code is a single 8-bit + value that defines a specific subtype for an ICMP message. + For IKE, the message type is placed in the most significant 8 + bits of the 16-bit selector and the code is placed in the + least significant 8 bits. This 16-bit selector can contain a + single type and a range of codes, a single type and ANY code, + and ANY type and ANY code. Given a policy entry with a range + of Types (T-start to T-end) and a range of Codes (C-start to + C-end), and an ICMP packet with Type t and Code c, an + implementation MUST test for a match using + + (T-start*256) + C-start <= (t*256) + c <= (T-end*256) + + C-end + + Note that the ICMP message type and code may not be available + in the case of receipt of a fragmented packet. (See Section + 7, "Handling Fragments".) + + - Name: This is not a selector like the others above. It is not + acquired from a packet. A name may be used as a symbolic + identifier for an IPsec Local or Remote address. Named SPD + entries are used in two ways: + + 1. A named SPD entry is used by a responder (not an initiator) + in support of access control when an IP address would not be + appropriate for the Remote IP address selector, e.g., for + "road warriors". The name used to match this field is + communicated during the IKE negotiation in the ID payload. + In this context, the initiator's Source IP address (inner IP + header in tunnel mode) is bound to the Remote IP address in + the SAD entry created by the IKE negotiation. This address + overrides the Remote IP address value in the SPD, when the + SPD entry is selected in this fashion. All IPsec + implementations MUST support this use of names. + + 2. A named SPD entry may be used by an initiator to identify a + user for whom an IPsec SA will be created (or for whom + traffic may be bypassed). The initiator's IP source address + (from inner IP header in tunnel mode) is used to replace the + following if and when they are created: + + + +Kent & Seo Standards Track [Page 28] + +RFC 4301 Security Architecture for IP December 2005 + + + - local address in the SPD cache entry + - local address in the outbound SAD entry + - remote address in the inbound SAD entry + + Support for this use is optional for multi-user, native host + implementations and not applicable to other implementations. + Note that this name is used only locally; it is not + communicated by the key management protocol. Also, name + forms other than those used for case 1 above (responder) are + applicable in the initiator context (see below). + + An SPD entry can contain both a name (or a list of names) and + also values for the Local or Remote IP address. + + For case 1, responder, the identifiers employed in named SPD + entries are one of the following four types: + + a. a fully qualified user name string (email), e.g., + mozart@foo.example.com + (this corresponds to ID_RFC822_ADDR in IKEv2) + + b. a fully qualified DNS name, e.g., + foo.example.com + (this corresponds to ID_FQDN in IKEv2) + + c. X.500 distinguished name, e.g., [WaKiHo97], + CN = Stephen T. Kent, O = BBN Technologies, + SP = MA, C = US + (this corresponds to ID_DER_ASN1_DN in IKEv2, after + decoding) + + d. a byte string + (this corresponds to Key_ID in IKEv2) + + For case 2, initiator, the identifiers employed in named SPD + entries are of type byte string. They are likely to be Unix + UIDs, Windows security IDs, or something similar, but could + also be a user name or account name. In all cases, this + identifier is only of local concern and is not transmitted. + + The IPsec implementation context determines how selectors are used. + For example, a native host implementation typically makes use of a + socket interface. When a new connection is established, the SPD can + be consulted and an SA bound to the socket. Thus, traffic sent via + that socket need not result in additional lookups to the SPD (SPD-O + and SPD-S) cache. In contrast, a BITS, BITW, or security gateway + implementation needs to look at each packet and perform an + SPD-O/SPD-S cache lookup based on the selectors. + + + +Kent & Seo Standards Track [Page 29] + +RFC 4301 Security Architecture for IP December 2005 + + +4.4.1.2. Structure of an SPD Entry + + This section contains a prose description of an SPD entry. Also, + Appendix C provides an example of an ASN.1 definition of an SPD + entry. + + This text describes the SPD in a fashion that is intended to map + directly into IKE payloads to ensure that the policy required by SPD + entries can be negotiated through IKE. Unfortunately, the semantics + of the version of IKEv2 published concurrently with this document + [Kau05] do not align precisely with those defined for the SPD. + Specifically, IKEv2 does not enable negotiation of a single SA that + binds multiple pairs of local and remote addresses and ports to a + single SA. Instead, when multiple local and remote addresses and + ports are negotiated for an SA, IKEv2 treats these not as pairs, but + as (unordered) sets of local and remote values that can be + arbitrarily paired. Until IKE provides a facility that conveys the + semantics that are expressed in the SPD via selector sets (as + described below), users MUST NOT include multiple selector sets in a + single SPD entry unless the access control intent aligns with the IKE + "mix and match" semantics. An implementation MAY warn users, to + alert them to this problem if users create SPD entries with multiple + selector sets, the syntax of which indicates possible conflicts with + current IKE semantics. + + The management GUI can offer the user other forms of data entry and + display, e.g., the option of using address prefixes as well as + ranges, and symbolic names for protocols, ports, etc. (Do not confuse + the use of symbolic names in a management interface with the SPD + selector "Name".) Note that Remote/Local apply only to IP addresses + and ports, not to ICMP message type/code or Mobility Header type. + Also, if the reserved, symbolic selector value OPAQUE or ANY is + employed for a given selector type, only that value may appear in the + list for that selector, and it must appear only once in the list for + that selector. Note that ANY and OPAQUE are local syntax conventions + -- IKEv2 negotiates these values via the ranges indicated below: + + ANY: start = 0 end = <max> + OPAQUE: start = <max> end = 0 + + An SPD is an ordered list of entries each of which contains the + following fields. + + o Name -- a list of IDs. This quasi-selector is optional. + The forms that MUST be supported are described above in + Section 4.4.1.1 under "Name". + + + + + +Kent & Seo Standards Track [Page 30] + +RFC 4301 Security Architecture for IP December 2005 + + + o PFP flags -- one per traffic selector. A given flag, e.g., + for Next Layer Protocol, applies to the relevant selector + across all "selector sets" (see below) contained in an SPD + entry. When creating an SA, each flag specifies for the + corresponding traffic selector whether to instantiate the + selector from the corresponding field in the packet that + triggered the creation of the SA or from the value(s) in + the corresponding SPD entry (see Section 4.4.1, "How to + Derive the Values for an SAD Entry"). Whether a single + flag is used for, e.g., source port, ICMP type/code, and + MH type, or a separate flag is used for each, is a local + matter. There are PFP flags for: + - Local Address + - Remote Address + - Next Layer Protocol + - Local Port, or ICMP message type/code or Mobility + Header type (depending on the next layer protocol) + - Remote Port, or ICMP message type/code or Mobility + Header type (depending on the next layer protocol) + + o One to N selector sets that correspond to the "condition" + for applying a particular IPsec action. Each selector set + contains: + - Local Address + - Remote Address + - Next Layer Protocol + - Local Port, or ICMP message type/code or Mobility + Header type (depending on the next layer protocol) + - Remote Port, or ICMP message type/code or Mobility + Header type (depending on the next layer protocol) + + Note: The "next protocol" selector is an individual value + (unlike the local and remote IP addresses) in a selector + set entry. This is consistent with how IKEv2 negotiates + the Traffic Selector (TS) values for an SA. It also makes + sense because one may need to associate different port + fields with different protocols. It is possible to + associate multiple protocols (and ports) with a single SA + by specifying multiple selector sets for that SA. + + o Processing info -- which action is required -- PROTECT, + BYPASS, or DISCARD. There is just one action that goes + with all the selector sets, not a separate action for each + set. If the required processing is PROTECT, the entry + contains the following information. + - IPsec mode -- tunnel or transport + + + + + +Kent & Seo Standards Track [Page 31] + +RFC 4301 Security Architecture for IP December 2005 + + + - (if tunnel mode) local tunnel address -- For a + non-mobile host, if there is just one interface, this + is straightforward; if there are multiple + interfaces, this must be statically configured. For a + mobile host, the specification of the local address + is handled externally to IPsec. + - (if tunnel mode) remote tunnel address -- There is no + standard way to determine this. See 4.5.3, "Locating + a Security Gateway". + - Extended Sequence Number -- Is this SA using extended + sequence numbers? + - stateful fragment checking -- Is this SA using + stateful fragment checking? (See Section 7 for more + details.) + - Bypass DF bit (T/F) -- applicable to tunnel mode SAs + - Bypass DSCP (T/F) or map to unprotected DSCP values + (array) if needed to restrict bypass of DSCP values -- + applicable to tunnel mode SAs + - IPsec protocol -- AH or ESP + - algorithms -- which ones to use for AH, which ones to + use for ESP, which ones to use for combined mode, + ordered by decreasing priority + + It is a local matter as to what information is kept with regard to + handling extant SAs when the SPD is changed. + +4.4.1.3. More Regarding Fields Associated with Next Layer Protocols + + Additional selectors are often associated with fields in the Next + Layer Protocol header. A particular Next Layer Protocol can have + zero, one, or two selectors. There may be situations where there + aren't both local and remote selectors for the fields that are + dependent on the Next Layer Protocol. The IPv6 Mobility Header has + only a Mobility Header message type. AH and ESP have no further + selector fields. A system may be willing to send an ICMP message + type and code that it does not want to receive. In the descriptions + below, "port" is used to mean a field that is dependent on the Next + Layer Protocol. + + A. If a Next Layer Protocol has no "port" selectors, then + the Local and Remote "port" selectors are set to OPAQUE in + the relevant SPD entry, e.g., + + Local's + next layer protocol = AH + "port" selector = OPAQUE + + + + + +Kent & Seo Standards Track [Page 32] + +RFC 4301 Security Architecture for IP December 2005 + + + Remote's + next layer protocol = AH + "port" selector = OPAQUE + + B. Even if a Next Layer Protocol has only one selector, e.g., + Mobility Header type, then the Local and Remote "port" + selectors are used to indicate whether a system is + willing to send and/or receive traffic with the specified + "port" values. For example, if Mobility Headers of a + specified type are allowed to be sent and received via an + SA, then the relevant SPD entry would be set as follows: + + Local's + next layer protocol = Mobility Header + "port" selector = Mobility Header message type + + Remote's + next layer protocol = Mobility Header + "port" selector = Mobility Header message type + + If Mobility Headers of a specified type are allowed to be + sent but NOT received via an SA, then the relevant SPD + entry would be set as follows: + + Local's + next layer protocol = Mobility Header + "port" selector = Mobility Header message type + + Remote's + next layer protocol = Mobility Header + "port" selector = OPAQUE + + If Mobility Headers of a specified type are allowed to be + received but NOT sent via an SA, then the relevant SPD + entry would be set as follows: + + Local's + next layer protocol = Mobility Header + "port" selector = OPAQUE + + Remote's + next layer protocol = Mobility Header + "port" selector = Mobility Header message type + + C. If a system is willing to send traffic with a particular + "port" value but NOT receive traffic with that kind of + port value, the system's traffic selectors are set as + follows in the relevant SPD entry: + + + +Kent & Seo Standards Track [Page 33] + +RFC 4301 Security Architecture for IP December 2005 + + + Local's + next layer protocol = ICMP + "port" selector = <specific ICMP type & code> + + Remote's + next layer protocol = ICMP + "port" selector = OPAQUE + + D. To indicate that a system is willing to receive traffic + with a particular "port" value but NOT send that kind of + traffic, the system's traffic selectors are set as follows + in the relevant SPD entry: + + Local's + next layer protocol = ICMP + "port" selector = OPAQUE + + Remote's + next layer protocol = ICMP + "port" selector = <specific ICMP type & code> + + For example, if a security gateway is willing to allow + systems behind it to send ICMP traceroutes, but is not + willing to let outside systems run ICMP traceroutes to + systems behind it, then the security gateway's traffic + selectors are set as follows in the relevant SPD entry: + + Local's + next layer protocol = 1 (ICMPv4) + "port" selector = 30 (traceroute) + + Remote's + next layer protocol = 1 (ICMPv4) + "port" selector = OPAQUE + +4.4.2. Security Association Database (SAD) + + In each IPsec implementation, there is a nominal Security Association + Database (SAD), in which each entry defines the parameters associated + with one SA. Each SA has an entry in the SAD. For outbound + processing, each SAD entry is pointed to by entries in the SPD-S part + of the SPD cache. For inbound processing, for unicast SAs, the SPI + is used either alone to look up an SA or in conjunction with the + IPsec protocol type. If an IPsec implementation supports multicast, + the SPI plus destination address, or SPI plus destination and source + addresses are used to look up the SA. (See Section 4.1 for details on + the algorithm that MUST be used for mapping inbound IPsec datagrams + to SAs.) The following parameters are associated with each entry in + + + +Kent & Seo Standards Track [Page 34] + +RFC 4301 Security Architecture for IP December 2005 + + + the SAD. They should all be present except where otherwise noted, + e.g., AH Authentication algorithm. This description does not purport + to be a MIB, only a specification of the minimal data items required + to support an SA in an IPsec implementation. + + For each of the selectors defined in Section 4.4.1.1, the entry for + an inbound SA in the SAD MUST be initially populated with the value + or values negotiated at the time the SA was created. (See the + paragraph in Section 4.4.1 under "Handling Changes to the SPD while + the System is Running" for guidance on the effect of SPD changes on + extant SAs.) For a receiver, these values are used to check that the + header fields of an inbound packet (after IPsec processing) match the + selector values negotiated for the SA. Thus, the SAD acts as a cache + for checking the selectors of inbound traffic arriving on SAs. For + the receiver, this is part of verifying that a packet arriving on an + SA is consistent with the policy for the SA. (See Section 6 for rules + for ICMP messages.) These fields can have the form of specific + values, ranges, ANY, or OPAQUE, as described in Section 4.4.1.1, + "Selectors". Note also that there are a couple of situations in + which the SAD can have entries for SAs that do not have corresponding + entries in the SPD. Since this document does not mandate that the + SAD be selectively cleared when the SPD is changed, SAD entries can + remain when the SPD entries that created them are changed or deleted. + Also, if a manually keyed SA is created, there could be an SAD entry + for this SA that does not correspond to any SPD entry. + + Note: The SAD can support multicast SAs, if manually configured. An + outbound multicast SA has the same structure as a unicast SA. The + source address is that of the sender, and the destination address is + the multicast group address. An inbound, multicast SA must be + configured with the source addresses of each peer authorized to + transmit to the multicast SA in question. The SPI value for a + multicast SA is provided by a multicast group controller, not by the + receiver, as for a unicast SA. Because an SAD entry may be required + to accommodate multiple, individual IP source addresses that were + part of an SPD entry (for unicast SAs), the required facility for + inbound, multicast SAs is a feature already present in an IPsec + implementation. However, because the SPD has no provisions for + accommodating multicast entries, this document does not specify an + automated way to create an SAD entry for a multicast, inbound SA. + Only manually configured SAD entries can be created to accommodate + inbound, multicast traffic. + + Implementation Guidance: This document does not specify how an SPD-S + entry refers to the corresponding SAD entry, as this is an + implementation-specific detail. However, some implementations (based + on experience from RFC 2401) are known to have problems in this + regard. In particular, simply storing the (remote tunnel header IP + + + +Kent & Seo Standards Track [Page 35] + +RFC 4301 Security Architecture for IP December 2005 + + + address, remote SPI) pair in the SPD cache is not sufficient, since + the pair does not always uniquely identify a single SAD entry. For + instance, two hosts behind the same NAT could choose the same SPI + value. The situation also may arise if a host is assigned an IP + address (e.g., via DHCP) previously used by some other host, and the + SAs associated with the old host have not yet been deleted via dead + peer detection mechanisms. This may lead to packets being sent over + the wrong SA or, if key management ensures the pair is unique, + denying the creation of otherwise valid SAs. Thus, implementors + should implement links between the SPD cache and the SAD in a way + that does not engender such problems. + +4.4.2.1. Data Items in the SAD + + The following data items MUST be in the SAD: + + o Security Parameter Index (SPI): a 32-bit value selected by the + receiving end of an SA to uniquely identify the SA. In an SAD + entry for an outbound SA, the SPI is used to construct the + packet's AH or ESP header. In an SAD entry for an inbound SA, the + SPI is used to map traffic to the appropriate SA (see text on + unicast/multicast in Section 4.1). + + o Sequence Number Counter: a 64-bit counter used to generate the + Sequence Number field in AH or ESP headers. 64-bit sequence + numbers are the default, but 32-bit sequence numbers are also + supported if negotiated. + + o Sequence Counter Overflow: a flag indicating whether overflow of + the sequence number counter should generate an auditable event and + prevent transmission of additional packets on the SA, or whether + rollover is permitted. The audit log entry for this event SHOULD + include the SPI value, current date/time, Local Address, Remote + Address, and the selectors from the relevant SAD entry. + + o Anti-Replay Window: a 64-bit counter and a bit-map (or equivalent) + used to determine whether an inbound AH or ESP packet is a replay. + + Note: If anti-replay has been disabled by the receiver for an SA, + e.g., in the case of a manually keyed SA, then the Anti-Replay + Window is ignored for the SA in question. 64-bit sequence numbers + are the default, but this counter size accommodates 32-bit + sequence numbers as well. + + o AH Authentication algorithm, key, etc. This is required only if + AH is supported. + + + + + +Kent & Seo Standards Track [Page 36] + +RFC 4301 Security Architecture for IP December 2005 + + + o ESP Encryption algorithm, key, mode, IV, etc. If a combined mode + algorithm is used, these fields will not be applicable. + + o ESP integrity algorithm, keys, etc. If the integrity service is + not selected, these fields will not be applicable. If a combined + mode algorithm is used, these fields will not be applicable. + + o ESP combined mode algorithms, key(s), etc. This data is used when + a combined mode (encryption and integrity) algorithm is used with + ESP. If a combined mode algorithm is not used, these fields are + not applicable. + + o Lifetime of this SA: a time interval after which an SA must be + replaced with a new SA (and new SPI) or terminated, plus an + indication of which of these actions should occur. This may be + expressed as a time or byte count, or a simultaneous use of both + with the first lifetime to expire taking precedence. A compliant + implementation MUST support both types of lifetimes, and MUST + support a simultaneous use of both. If time is employed, and if + IKE employs X.509 certificates for SA establishment, the SA + lifetime must be constrained by the validity intervals of the + certificates, and the NextIssueDate of the Certificate Revocation + Lists (CRLs) used in the IKE exchange for the SA. Both initiator + and responder are responsible for constraining the SA lifetime in + this fashion. Note: The details of how to handle the refreshing + of keys when SAs expire is a local matter. However, one + reasonable approach is: + + (a) If byte count is used, then the implementation SHOULD count the + number of bytes to which the IPsec cryptographic algorithm is + applied. For ESP, this is the encryption algorithm (including + Null encryption) and for AH, this is the authentication + algorithm. This includes pad bytes, etc. Note that + implementations MUST be able to handle having the counters at + the ends of an SA get out of synch, e.g., because of packet + loss or because the implementations at each end of the SA + aren't doing things the same way. + + (b) There SHOULD be two kinds of lifetime -- a soft lifetime that + warns the implementation to initiate action such as setting up + a replacement SA, and a hard lifetime when the current SA ends + and is destroyed. + + (c) If the entire packet does not get delivered during the SA's + lifetime, the packet SHOULD be discarded. + + o IPsec protocol mode: tunnel or transport. Indicates which mode of + AH or ESP is applied to traffic on this SA. + + + +Kent & Seo Standards Track [Page 37] + +RFC 4301 Security Architecture for IP December 2005 + + + o Stateful fragment checking flag. Indicates whether or not + stateful fragment checking applies to this SA. + + o Bypass DF bit (T/F) -- applicable to tunnel mode SAs where both + inner and outer headers are IPv4. + + o DSCP values -- the set of DSCP values allowed for packets carried + over this SA. If no values are specified, no DSCP-specific + filtering is applied. If one or more values are specified, these + are used to select one SA among several that match the traffic + selectors for an outbound packet. Note that these values are NOT + checked against inbound traffic arriving on the SA. + + o Bypass DSCP (T/F) or map to unprotected DSCP values (array) if + needed to restrict bypass of DSCP values -- applicable to tunnel + mode SAs. This feature maps DSCP values from an inner header to + values in an outer header, e.g., to address covert channel + signaling concerns. + + o Path MTU: any observed path MTU and aging variables. + + o Tunnel header IP source and destination address -- both addresses + must be either IPv4 or IPv6 addresses. The version implies the + type of IP header to be used. Only used when the IPsec protocol + mode is tunnel. + +4.4.2.2. Relationship between SPD, PFP flag, packet, and SAD + + For each selector, the following tables show the relationship + between the value in the SPD, the PFP flag, the value in the + triggering packet, and the resulting value in the SAD. Note that + the administrative interface for IPsec can use various syntactic + options to make it easier for the administrator to enter rules. + For example, although a list of ranges is what IKEv2 sends, it + might be clearer and less error prone for the user to enter a + single IP address or IP address prefix. + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 38] + +RFC 4301 Security Architecture for IP December 2005 + + + Value in + Triggering Resulting SAD + Selector SPD Entry PFP Packet Entry + -------- ---------------- --- ------------ -------------- + loc addr list of ranges 0 IP addr "S" list of ranges + ANY 0 IP addr "S" ANY + list of ranges 1 IP addr "S" "S" + ANY 1 IP addr "S" "S" + + rem addr list of ranges 0 IP addr "D" list of ranges + ANY 0 IP addr "D" ANY + list of ranges 1 IP addr "D" "D" + ANY 1 IP addr "D" "D" + + protocol list of prot's* 0 prot. "P" list of prot's* + ANY** 0 prot. "P" ANY + OPAQUE**** 0 prot. "P" OPAQUE + + list of prot's* 0 not avail. discard packet + ANY** 0 not avail. ANY + OPAQUE**** 0 not avail. OPAQUE + + list of prot's* 1 prot. "P" "P" + ANY** 1 prot. "P" "P" + OPAQUE**** 1 prot. "P" *** + + list of prot's* 1 not avail. discard packet + ANY** 1 not avail. discard packet + OPAQUE**** 1 not avail. *** + + + + + + + + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 39] + +RFC 4301 Security Architecture for IP December 2005 + + + If the protocol is one that has two ports, then there will be + selectors for both Local and Remote ports. + + Value in + Triggering Resulting SAD + Selector SPD Entry PFP Packet Entry + -------- ---------------- --- ------------ -------------- + loc port list of ranges 0 src port "s" list of ranges + ANY 0 src port "s" ANY + OPAQUE 0 src port "s" OPAQUE + + list of ranges 0 not avail. discard packet + ANY 0 not avail. ANY + OPAQUE 0 not avail. OPAQUE + + list of ranges 1 src port "s" "s" + ANY 1 src port "s" "s" + OPAQUE 1 src port "s" *** + + list of ranges 1 not avail. discard packet + ANY 1 not avail. discard packet + OPAQUE 1 not avail. *** + + + rem port list of ranges 0 dst port "d" list of ranges + ANY 0 dst port "d" ANY + OPAQUE 0 dst port "d" OPAQUE + + list of ranges 0 not avail. discard packet + ANY 0 not avail. ANY + OPAQUE 0 not avail. OPAQUE + + list of ranges 1 dst port "d" "d" + ANY 1 dst port "d" "d" + OPAQUE 1 dst port "d" *** + + list of ranges 1 not avail. discard packet + ANY 1 not avail. discard packet + OPAQUE 1 not avail. *** + + + + + + + + + + + + +Kent & Seo Standards Track [Page 40] + +RFC 4301 Security Architecture for IP December 2005 + + + If the protocol is mobility header, then there will be a selector + for mh type. + + Value in + Triggering Resulting SAD + Selector SPD Entry PFP Packet Entry + -------- ---------------- --- ------------ -------------- + mh type list of ranges 0 mh type "T" list of ranges + ANY 0 mh type "T" ANY + OPAQUE 0 mh type "T" OPAQUE + + list of ranges 0 not avail. discard packet + ANY 0 not avail. ANY + OPAQUE 0 not avail. OPAQUE + + list of ranges 1 mh type "T" "T" + ANY 1 mh type "T" "T" + OPAQUE 1 mh type "T" *** + + list of ranges 1 not avail. discard packet + ANY 1 not avail. discard packet + OPAQUE 1 not avail. *** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 41] + +RFC 4301 Security Architecture for IP December 2005 + + + If the protocol is ICMP, then there will be a 16-bit selector for + ICMP type and ICMP code. Note that the type and code are bound to + each other, i.e., the codes apply to the particular type. This + 16-bit selector can contain a single type and a range of codes, a + single type and ANY code, and ANY type and ANY code. + + Value in + Triggering Resulting SAD + Selector SPD Entry PFP Packet Entry + --------- ---------------- --- ------------ -------------- + ICMP type a single type & 0 type "t" & single type & + and code range of codes code "c" range of codes + a single type & 0 type "t" & single type & + ANY code code "c" ANY code + ANY type & ANY 0 type "t" & ANY type & + code code "c" ANY code + OPAQUE 0 type "t" & OPAQUE + code "c" + + a single type & 0 not avail. discard packet + range of codes + a single type & 0 not avail. discard packet + ANY code + ANY type & 0 not avail. ANY type & + ANY code ANY code + OPAQUE 0 not avail. OPAQUE + + a single type & 1 type "t" & "t" and "c" + range of codes code "c" + a single type & 1 type "t" & "t" and "c" + ANY code code "c" + ANY type & 1 type "t" & "t" and "c" + ANY code code "c" + OPAQUE 1 type "t" & *** + code "c" + + a single type & 1 not avail. discard packet + range of codes + a single type & 1 not avail. discard packet + ANY code + ANY type & 1 not avail. discard packet + ANY code + OPAQUE 1 not avail. *** + + + + + + + + +Kent & Seo Standards Track [Page 42] + +RFC 4301 Security Architecture for IP December 2005 + + + If the name selector is used: + + Value in + Triggering Resulting SAD + Selector SPD Entry PFP Packet Entry + --------- ---------------- --- ------------ -------------- + name list of user or N/A N/A N/A + system names + + * "List of protocols" is the information, not the way + that the SPD or SAD or IKEv2 have to represent this + information. + ** 0 (zero) is used by IKE to indicate ANY for + protocol. + *** Use of PFP=1 with an OPAQUE value is an error and + SHOULD be prohibited by an IPsec implementation. + **** The protocol field cannot be OPAQUE in IPv4. This + table entry applies only to IPv6. + +4.4.3. Peer Authorization Database (PAD) + + The Peer Authorization Database (PAD) provides the link between the + SPD and a security association management protocol such as IKE. It + embodies several critical functions: + + o identifies the peers or groups of peers that are authorized + to communicate with this IPsec entity + o specifies the protocol and method used to authenticate each + peer + o provides the authentication data for each peer + o constrains the types and values of IDs that can be asserted + by a peer with regard to child SA creation, to ensure that the + peer does not assert identities for lookup in the SPD that it + is not authorized to represent, when child SAs are created + o peer gateway location info, e.g., IP address(es) or DNS names, + MAY be included for peers that are known to be "behind" a + security gateway + + The PAD provides these functions for an IKE peer when the peer acts + as either the initiator or the responder. + + To perform these functions, the PAD contains an entry for each peer + or group of peers with which the IPsec entity will communicate. An + entry names an individual peer (a user, end system or security + gateway) or specifies a group of peers (using ID matching rules + defined below). The entry specifies the authentication protocol + (e.g., IKEv1, IKEv2, KINK) method used (e.g., certificates or pre- + shared secrets) and the authentication data (e.g., the pre-shared + + + +Kent & Seo Standards Track [Page 43] + +RFC 4301 Security Architecture for IP December 2005 + + + secret or the trust anchor relative to which the peer's certificate + will be validated). For certificate-based authentication, the entry + also may provide information to assist in verifying the revocation + status of the peer, e.g., a pointer to a CRL repository or the name + of an Online Certificate Status Protocol (OCSP) server associated + with the peer or with the trust anchor associated with the peer. + + Each entry also specifies whether the IKE ID payload will be used as + a symbolic name for SPD lookup, or whether the remote IP address + provided in traffic selector payloads will be used for SPD lookups + when child SAs are created. + + Note that the PAD information MAY be used to support creation of more + than one tunnel mode SA at a time between two peers, e.g., two + tunnels to protect the same addresses/hosts, but with different + tunnel endpoints. + +4.4.3.1. PAD Entry IDs and Matching Rules + + The PAD is an ordered database, where the order is defined by an + administrator (or a user in the case of a single-user end system). + Usually, the same administrator will be responsible for both the PAD + and SPD, since the two databases must be coordinated. The ordering + requirement for the PAD arises for the same reason as for the SPD, + i.e., because use of "star name" entries allows for overlaps in the + set of IKE IDs that could match a specific entry. + + Six types of IDs are supported for entries in the PAD, consistent + with the symbolic name types and IP addresses used to identify SPD + entries. The ID for each entry acts as the index for the PAD, i.e., + it is the value used to select an entry. All of these ID types can + be used to match IKE ID payload types. The six types are: + + o DNS name (specific or partial) + o Distinguished Name (complete or sub-tree constrained) + o RFC 822 email address (complete or partially qualified) + o IPv4 address (range) + o IPv6 address (range) + o Key ID (exact match only) + + The first three name types can accommodate sub-tree matching as well + as exact matches. A DNS name may be fully qualified and thus match + exactly one name, e.g., foo.example.com. Alternatively, the name may + encompass a group of peers by being partially specified, e.g., the + string ".example.com" could be used to match any DNS name ending in + these two domain name components. + + + + + +Kent & Seo Standards Track [Page 44] + +RFC 4301 Security Architecture for IP December 2005 + + + Similarly, a Distinguished Name may specify a complete Distinguished + Name to match exactly one entry, e.g., CN = Stephen, O = BBN + Technologies, SP = MA, C = US. Alternatively, an entry may encompass + a group of peers by specifying a sub-tree, e.g., an entry of the form + "C = US, SP = MA" might be used to match all DNs that contain these + two attributes as the top two Relative Distinguished Names (RDNs). + + For an RFC 822 e-mail addresses, the same options exist. A complete + address such as foo@example.com matches one entity, but a sub-tree + name such as "@example.com" could be used to match all the entities + with names ending in those two domain names to the right of the @. + + The specific syntax used by an implementation to accommodate sub-tree + matching for distinguished names, domain names or RFC 822 e-mail + addresses is a local matter. But, at a minimum, sub-tree matching of + the sort described above MUST be supported. (Substring matching + within a DN, DNS name, or RFC 822 address MAY be supported, but is + not required.) + + For IPv4 and IPv6 addresses, the same address range syntax used for + SPD entries MUST be supported. This allows specification of an + individual address (via a trivial range), an address prefix (by + choosing a range that adheres to Classless Inter-Domain Routing + (CIDR)-style prefixes), or an arbitrary address range. + + The Key ID field is defined as an OCTET string in IKE. For this name + type, only exact-match syntax MUST be supported (since there is no + explicit structure for this ID type). Additional matching functions + MAY be supported for this ID type. + +4.4.3.2. IKE Peer Authentication Data + + Once an entry is located based on an ordered search of the PAD based + on ID field matching, it is necessary to verify the asserted + identity, i.e., to authenticate the asserted ID. For each PAD entry, + there is an indication of the type of authentication to be performed. + This document requires support for two required authentication data + types: + + - X.509 certificate + - pre-shared secret + + For authentication based on an X.509 certificate, the PAD entry + contains a trust anchor via which the end entity (EE) certificate for + the peer must be verifiable, either directly or via a certificate + path. See RFC 3280 for the definition of a trust anchor. An entry + used with certificate-based authentication MAY include additional + data to facilitate certificate revocation status, e.g., a list of + + + +Kent & Seo Standards Track [Page 45] + +RFC 4301 Security Architecture for IP December 2005 + + + appropriate OCSP responders or CRL repositories, and associated + authentication data. For authentication based on a pre-shared + secret, the PAD contains the pre-shared secret to be used by IKE. + + This document does not require that the IKE ID asserted by a peer be + syntactically related to a specific field in an end entity + certificate that is employed to authenticate the identity of that + peer. However, it often will be appropriate to impose such a + requirement, e.g., when a single entry represents a set of peers each + of whom may have a distinct SPD entry. Thus, implementations MUST + provide a means for an administrator to require a match between an + asserted IKE ID and the subject name or subject alt name in a + certificate. The former is applicable to IKE IDs expressed as + distinguished names; the latter is appropriate for DNS names, RFC 822 + e-mail addresses, and IP addresses. Since KEY ID is intended for + identifying a peer authenticated via a pre-shared secret, there is no + requirement to match this ID type to a certificate field. + + See IKEv1 [HarCar98] and IKEv2 [Kau05] for details of how IKE + performs peer authentication using certificates or pre-shared + secrets. + + This document does not mandate support for any other authentication + methods, although such methods MAY be employed. + +4.4.3.3. Child SA Authorization Data + + Once an IKE peer is authenticated, child SAs may be created. Each + PAD entry contains data to constrain the set of IDs that can be + asserted by an IKE peer, for matching against the SPD. Each PAD + entry indicates whether the IKE ID is to be used as a symbolic name + for SPD matching, or whether an IP address asserted in a traffic + selector payload is to be used. + + If the entry indicates that the IKE ID is to be used, then the PAD + entry ID field defines the authorized set of IDs. If the entry + indicates that child SAs traffic selectors are to be used, then an + additional data element is required, in the form of IPv4 and/or IPv6 + address ranges. (A peer may be authorized for both address types, so + there MUST be provision for both a v4 and a v6 address range.) + +4.4.3.4. How the PAD Is Used + + During the initial IKE exchange, the initiator and responder each + assert their identity via the IKE ID payload and send an AUTH payload + to verify the asserted identity. One or more CERT payloads may be + transmitted to facilitate the verification of each asserted identity. + + + + +Kent & Seo Standards Track [Page 46] + +RFC 4301 Security Architecture for IP December 2005 + + + When an IKE entity receives an IKE ID payload, it uses the asserted + ID to locate an entry in the PAD, using the matching rules described + above. The PAD entry specifies the authentication method to be + employed for the identified peer. This ensures that the right method + is used for each peer and that different methods can be used for + different peers. The entry also specifies the authentication data + that will be used to verify the asserted identity. This data is + employed in conjunction with the specified method to authenticate the + peer, before any CHILD SAs are created. + + Child SAs are created based on the exchange of traffic selector + payloads, either at the end of the initial IKE exchange or in + subsequent CREATE_CHILD_SA exchanges. The PAD entry for the (now + authenticated) IKE peer is used to constrain creation of child SAs; + specifically, the PAD entry specifies how the SPD is searched using a + traffic selector proposal from a peer. There are two choices: either + the IKE ID asserted by the peer is used to find an SPD entry via its + symbolic name, or peer IP addresses asserted in traffic selector + payloads are used for SPD lookups based on the remote IP address + field portion of an SPD entry. It is necessary to impose these + constraints on creation of child SAs to prevent an authenticated peer + from spoofing IDs associated with other, legitimate peers. + + Note that because the PAD is checked before searching for an SPD + entry, this safeguard protects an initiator against spoofing attacks. + For example, assume that IKE A receives an outbound packet destined + for IP address X, a host served by a security gateway. RFC 2401 + [RFC2401] and this document do not specify how A determines the + address of the IKE peer serving X. However, any peer contacted by A + as the presumed representative for X must be registered in the PAD in + order to allow the IKE exchange to be authenticated. Moreover, when + the authenticated peer asserts that it represents X in its traffic + selector exchange, the PAD will be consulted to determine if the peer + in question is authorized to represent X. Thus, the PAD provides a + binding of address ranges (or name sub-spaces) to peers, to counter + such attacks. + +4.5. SA and Key Management + + All IPsec implementations MUST support both manual and automated SA + and cryptographic key management. The IPsec protocols, AH and ESP, + are largely independent of the associated SA management techniques, + although the techniques involved do affect some of the security + services offered by the protocols. For example, the optional + anti-replay service available for AH and ESP requires automated SA + management. Moreover, the granularity of key distribution employed + with IPsec determines the granularity of authentication provided. In + general, data origin authentication in AH and ESP is limited by the + + + +Kent & Seo Standards Track [Page 47] + +RFC 4301 Security Architecture for IP December 2005 + + + extent to which secrets used with the integrity algorithm (or with a + key management protocol that creates such secrets) are shared among + multiple possible sources. + + The following text describes the minimum requirements for both types + of SA management. + +4.5.1. Manual Techniques + + The simplest form of management is manual management, in which a + person manually configures each system with keying material and SA + management data relevant to secure communication with other systems. + Manual techniques are practical in small, static environments but + they do not scale well. For example, a company could create a + virtual private network (VPN) using IPsec in security gateways at + several sites. If the number of sites is small, and since all the + sites come under the purview of a single administrative domain, this + might be a feasible context for manual management techniques. In + this case, the security gateway might selectively protect traffic to + and from other sites within the organization using a manually + configured key, while not protecting traffic for other destinations. + It also might be appropriate when only selected communications need + to be secured. A similar argument might apply to use of IPsec + entirely within an organization for a small number of hosts and/or + gateways. Manual management techniques often employ statically + configured, symmetric keys, though other options also exist. + +4.5.2. Automated SA and Key Management + + Widespread deployment and use of IPsec requires an Internet-standard, + scalable, automated, SA management protocol. Such support is + required to facilitate use of the anti-replay features of AH and ESP, + and to accommodate on-demand creation of SAs, e.g., for user- and + session-oriented keying. (Note that the notion of "rekeying" an SA + actually implies creation of a new SA with a new SPI, a process that + generally implies use of an automated SA/key management protocol.) + + The default automated key management protocol selected for use with + IPsec is IKEv2 [Kau05]. This document assumes the availability of + certain functions from the key management protocol that are not + supported by IKEv1. Other automated SA management protocols MAY be + employed. + + When an automated SA/key management protocol is employed, the output + from this protocol is used to generate multiple keys for a single SA. + This also occurs because distinct keys are used for each of the two + + + + + +Kent & Seo Standards Track [Page 48] + +RFC 4301 Security Architecture for IP December 2005 + + + SAs created by IKE. If both integrity and confidentiality are + employed, then a minimum of four keys are required. Additionally, + some cryptographic algorithms may require multiple keys, e.g., 3DES. + + The Key Management System may provide a separate string of bits for + each key or it may generate one string of bits from which all keys + are extracted. If a single string of bits is provided, care needs to + be taken to ensure that the parts of the system that map the string + of bits to the required keys do so in the same fashion at both ends + of the SA. To ensure that the IPsec implementations at each end of + the SA use the same bits for the same keys, and irrespective of which + part of the system divides the string of bits into individual keys, + the encryption keys MUST be taken from the first (left-most, + high-order) bits and the integrity keys MUST be taken from the + remaining bits. The number of bits for each key is defined in the + relevant cryptographic algorithm specification RFC. In the case of + multiple encryption keys or multiple integrity keys, the + specification for the cryptographic algorithm must specify the order + in which they are to be selected from a single string of bits + provided to the cryptographic algorithm. + +4.5.3. Locating a Security Gateway + + This section discusses issues relating to how a host learns about the + existence of relevant security gateways and, once a host has + contacted these security gateways, how it knows that these are the + correct security gateways. The details of where the required + information is stored is a local matter, but the Peer Authorization + Database (PAD) described in Section 4.4 is the most likely candidate. + (Note: S* indicates a system that is running IPsec, e.g., SH1 and SG2 + below.) + + Consider a situation in which a remote host (SH1) is using the + Internet to gain access to a server or other machine (H2) and there + is a security gateway (SG2), e.g., a firewall, through which H1's + traffic must pass. An example of this situation would be a mobile + host crossing the Internet to his home organization's firewall (SG2). + This situation raises several issues: + + 1. How does SH1 know/learn about the existence of the security + gateway SG2? + + 2. How does it authenticate SG2, and once it has authenticated SG2, + how does it confirm that SG2 has been authorized to represent H2? + + 3. How does SG2 authenticate SH1 and verify that SH1 is authorized to + contact H2? + + + + +Kent & Seo Standards Track [Page 49] + +RFC 4301 Security Architecture for IP December 2005 + + + 4. How does SH1 know/learn about any additional gateways that provide + alternate paths to H2? + + To address these problems, an IPsec-supporting host or security + gateway MUST have an administrative interface that allows the + user/administrator to configure the address of one or more security + gateways for ranges of destination addresses that require its use. + This includes the ability to configure information for locating and + authenticating one or more security gateways and verifying the + authorization of these gateways to represent the destination host. + (The authorization function is implied in the PAD.) This document + does not address the issue of how to automate the + discovery/verification of security gateways. + +4.6. SAs and Multicast + + The receiver-orientation of the SA implies that, in the case of + unicast traffic, the destination system will select the SPI value. + By having the destination select the SPI value, there is no potential + for manually configured SAs to conflict with automatically configured + (e.g., via a key management protocol) SAs or for SAs from multiple + sources to conflict with each other. For multicast traffic, there + are multiple destination systems associated with a single SA. So + some system or person will need to coordinate among all multicast + groups to select an SPI or SPIs on behalf of each multicast group and + then communicate the group's IPsec information to all of the + legitimate members of that multicast group via mechanisms not defined + here. + + Multiple senders to a multicast group SHOULD use a single Security + Association (and hence SPI) for all traffic to that group when a + symmetric key encryption or integrity algorithm is employed. In such + circumstances, the receiver knows only that the message came from a + system possessing the key for that multicast group. In such + circumstances, a receiver generally will not be able to authenticate + which system sent the multicast traffic. Specifications for other, + more general multicast approaches are deferred to the IETF Multicast + Security Working Group. + +5. IP Traffic Processing + + As mentioned in Section 4.4.1, "The Security Policy Database (SPD)", + the SPD (or associated caches) MUST be consulted during the + processing of all traffic that crosses the IPsec protection boundary, + including IPsec management traffic. If no policy is found in the SPD + that matches a packet (for either inbound or outbound traffic), the + packet MUST be discarded. To simplify processing, and to allow for + very fast SA lookups (for SG/BITS/BITW), this document introduces the + + + +Kent & Seo Standards Track [Page 50] + +RFC 4301 Security Architecture for IP December 2005 + + + notion of an SPD cache for all outbound traffic (SPD-O plus SPD-S), + and a cache for inbound, non-IPsec-protected traffic (SPD-I). (As + mentioned earlier, the SAD acts as a cache for checking the selectors + of inbound IPsec-protected traffic arriving on SAs.) There is + nominally one cache per SPD. For the purposes of this specification, + it is assumed that each cached entry will map to exactly one SA. + Note, however, exceptions arise when one uses multiple SAs to carry + traffic of different priorities (e.g., as indicated by distinct DSCP + values) but the same selectors. Note also, that there are a couple + of situations in which the SAD can have entries for SAs that do not + have corresponding entries in the SPD. Since this document does not + mandate that the SAD be selectively cleared when the SPD is changed, + SAD entries can remain when the SPD entries that created them are + changed or deleted. Also, if a manually keyed SA is created, there + could be an SAD entry for this SA that does not correspond to any SPD + entry. + + Since SPD entries may overlap, one cannot safely cache these entries + in general. Simple caching might result in a match against a cache + entry, whereas an ordered search of the SPD would have resulted in a + match against a different entry. But, if the SPD entries are first + decorrelated, then the resulting entries can safely be cached. Each + cached entry will indicate that matching traffic should be bypassed + or discarded, appropriately. (Note: The original SPD entry might + result in multiple SAs, e.g., because of PFP.) Unless otherwise + noted, all references below to the "SPD" or "SPD cache" or "cache" + are to a decorrelated SPD (SPD-I, SPD-O, SPD-S) or the SPD cache + containing entries from the decorrelated SPD. + + Note: In a host IPsec implementation based on sockets, the SPD will + be consulted whenever a new socket is created to determine what, if + any, IPsec processing will be applied to the traffic that will flow + on that socket. This provides an implicit caching mechanism, and the + portions of the preceding discussion that address caching can be + ignored in such implementations. + + Note: It is assumed that one starts with a correlated SPD because + that is how users and administrators are accustomed to managing these + sorts of access control lists or firewall filter rules. Then the + decorrelation algorithm is applied to build a list of cache-able SPD + entries. The decorrelation is invisible at the management interface. + + For inbound IPsec traffic, the SAD entry selected by the SPI serves + as the cache for the selectors to be matched against arriving IPsec + packets, after AH or ESP processing has been performed. + + + + + + +Kent & Seo Standards Track [Page 51] + +RFC 4301 Security Architecture for IP December 2005 + + +5.1. Outbound IP Traffic Processing (protected-to-unprotected) + + First consider the path for traffic entering the implementation via a + protected interface and exiting via an unprotected interface. + + Unprotected Interface + ^ + | + (nested SAs) +----------+ + -------------------|Forwarding|<-----+ + | +----------+ | + | ^ | + | | BYPASS | + V +-----+ | + +-------+ | SPD | +--------+ + ...| SPD-I |.................|Cache|.....|PROCESS |...IPsec + | (*) | | (*) |---->|(AH/ESP)| boundary + +-------+ +-----+ +--------+ + | +-------+ / ^ + | |DISCARD| <--/ | + | +-------+ | + | | + | +-------------+ + |---------------->|SPD Selection| + +-------------+ + ^ + | +------+ + | -->| ICMP | + | / +------+ + |/ + | + | + Protected Interface + + + Figure 2. Processing Model for Outbound Traffic + (*) = The SPD caches are shown here. If there + is a cache miss, then the SPD is checked. + There is no requirement that an + implementation buffer the packet if + there is a cache miss. + + + + + + + + + + +Kent & Seo Standards Track [Page 52] + +RFC 4301 Security Architecture for IP December 2005 + + + IPsec MUST perform the following steps when processing outbound + packets: + + 1. When a packet arrives from the subscriber (protected) interface, + invoke the SPD selection function to obtain the SPD-ID needed to + choose the appropriate SPD. (If the implementation uses only one + SPD, this step is a no-op.) + + 2. Match the packet headers against the cache for the SPD specified + by the SPD-ID from step 1. Note that this cache contains entries + from SPD-O and SPD-S. + + 3a. If there is a match, then process the packet as specified by the + matching cache entry, i.e., BYPASS, DISCARD, or PROTECT using AH + or ESP. If IPsec processing is applied, there is a link from the + SPD cache entry to the relevant SAD entry (specifying the mode, + cryptographic algorithms, keys, SPI, PMTU, etc.). IPsec + processing is as previously defined, for tunnel or transport + modes and for AH or ESP, as specified in their respective RFCs + [Ken05b, Ken05a]. Note that the SA PMTU value, plus the value of + the stateful fragment checking flag (and the DF bit in the IP + header of the outbound packet) determine whether the packet can + (must) be fragmented prior to or after IPsec processing, or if it + must be discarded and an ICMP PMTU message is sent. + + 3b. If no match is found in the cache, search the SPD (SPD-S and + SPD-O parts) specified by SPD-ID. If the SPD entry calls for + BYPASS or DISCARD, create one or more new outbound SPD cache + entries and if BYPASS, create one or more new inbound SPD cache + entries. (More than one cache entry may be created since a + decorrelated SPD entry may be linked to other such entries that + were created as a side effect of the decorrelation process.) If + the SPD entry calls for PROTECT, i.e., creation of an SA, the key + management mechanism (e.g., IKEv2) is invoked to create the SA. + If SA creation succeeds, a new outbound (SPD-S) cache entry is + created, along with outbound and inbound SAD entries, otherwise + the packet is discarded. (A packet that triggers an SPD lookup + MAY be discarded by the implementation, or it MAY be processed + against the newly created cache entry, if one is created.) Since + SAs are created in pairs, an SAD entry for the corresponding + inbound SA also is created, and it contains the selector values + derived from the SPD entry (and packet, if any PFP flags were + "true") used to create the inbound SA, for use in checking + inbound traffic delivered via the SA. + + 4. The packet is passed to the outbound forwarding function + (operating outside of the IPsec implementation), to select the + interface to which the packet will be directed. This function + + + +Kent & Seo Standards Track [Page 53] + +RFC 4301 Security Architecture for IP December 2005 + + + may cause the packet to be passed back across the IPsec boundary, + for additional IPsec processing, e.g., in support of nested SAs. + If so, there MUST be an entry in SPD-I database that permits + inbound bypassing of the packet, otherwise the packet will be + discarded. If necessary, i.e., if there is more than one SPD-I, + the traffic being looped back MAY be tagged as coming from this + internal interface. This would allow the use of a different + SPD-I for "real" external traffic vs. looped traffic, if needed. + + Note: With the exception of IPv4 and IPv6 transport mode, an SG, + BITS, or BITW implementation MAY fragment packets before applying + IPsec. (This applies only to IPv4. For IPv6 packets, only the + originator is allowed to fragment them.) The device SHOULD have a + configuration setting to disable this. The resulting fragments are + evaluated against the SPD in the normal manner. Thus, fragments not + containing port numbers (or ICMP message type and code, or Mobility + Header type) will only match rules having port (or ICMP message type + and code, or MH type) selectors of OPAQUE or ANY. (See Section 7 for + more details.) + + Note: With regard to determining and enforcing the PMTU of an SA, the + IPsec system MUST follow the steps described in Section 8.2. + +5.1.1. Handling an Outbound Packet That Must Be Discarded + + If an IPsec system receives an outbound packet that it finds it must + discard, it SHOULD be capable of generating and sending an ICMP + message to indicate to the sender of the outbound packet that the + packet was discarded. The type and code of the ICMP message will + depend on the reason for discarding the packet, as specified below. + The reason SHOULD be recorded in the audit log. The audit log entry + for this event SHOULD include the reason, current date/time, and the + selector values from the packet. + + a. The selectors of the packet matched an SPD entry requiring the + packet to be discarded. + + IPv4 Type = 3 (destination unreachable) Code = 13 + (Communication Administratively Prohibited) + + IPv6 Type = 1 (destination unreachable) Code = 1 + (Communication with destination administratively + prohibited) + + b1. The IPsec system successfully reached the remote peer but was + unable to negotiate the SA required by the SPD entry matching the + packet because, for example, the remote peer is administratively + prohibited from communicating with the initiator, the initiating + + + +Kent & Seo Standards Track [Page 54] + +RFC 4301 Security Architecture for IP December 2005 + + + peer was unable to authenticate itself to the remote peer, the + remote peer was unable to authenticate itself to the initiating + peer, or the SPD at the remote peer did not have a suitable + entry. + + IPv4 Type = 3 (destination unreachable) Code = 13 + (Communication Administratively Prohibited) + + IPv6 Type = 1 (destination unreachable) Code = 1 + (Communication with destination administratively + prohibited) + + b2. The IPsec system was unable to set up the SA required by the SPD + entry matching the packet because the IPsec peer at the other end + of the exchange could not be contacted. + + IPv4 Type = 3 (destination unreachable) Code = 1 (host + unreachable) + + IPv6 Type = 1 (destination unreachable) Code = 3 (address + unreachable) + + Note that an attacker behind a security gateway could send packets + with a spoofed source address, W.X.Y.Z, to an IPsec entity causing it + to send ICMP messages to W.X.Y.Z. This creates an opportunity for a + denial of service (DoS) attack among hosts behind a security gateway. + To address this, a security gateway SHOULD include a management + control to allow an administrator to configure an IPsec + implementation to send or not send the ICMP messages under these + circumstances, and if this facility is selected, to rate limit the + transmission of such ICMP responses. + +5.1.2. Header Construction for Tunnel Mode + + This section describes the handling of the inner and outer IP + headers, extension headers, and options for AH and ESP tunnels, with + regard to outbound traffic processing. This includes how to + construct the encapsulating (outer) IP header, how to process fields + in the inner IP header, and what other actions should be taken for + outbound, tunnel mode traffic. The general processing described here + is modeled after RFC 2003, "IP Encapsulation within IP" [Per96]: + + o The outer IP header Source Address and Destination Address + identify the "endpoints" of the tunnel (the encapsulator and + decapsulator). The inner IP header Source Address and Destination + Addresses identify the original sender and recipient of the + datagram (from the perspective of this tunnel), respectively. + + + + +Kent & Seo Standards Track [Page 55] + +RFC 4301 Security Architecture for IP December 2005 + + + (See footnote 3 after the table in 5.1.2.1 for more details on the + encapsulating source IP address.) + + o The inner IP header is not changed except as noted below for TTL + (or Hop Limit) and the DS/ECN Fields. The inner IP header + otherwise remains unchanged during its delivery to the tunnel exit + point. + + o No change to IP options or extension headers in the inner header + occurs during delivery of the encapsulated datagram through the + tunnel. + + Note: IPsec tunnel mode is different from IP-in-IP tunneling (RFC + 2003 [Per96]) in several ways: + + o IPsec offers certain controls to a security administrator to + manage covert channels (which would not normally be a concern for + tunneling) and to ensure that the receiver examines the right + portions of the received packet with respect to application of + access controls. An IPsec implementation MAY be configurable with + regard to how it processes the outer DS field for tunnel mode for + transmitted packets. For outbound traffic, one configuration + setting for the outer DS field will operate as described in the + following sections on IPv4 and IPv6 header processing for IPsec + tunnels. Another will allow the outer DS field to be mapped to a + fixed value, which MAY be configured on a per-SA basis. (The value + might really be fixed for all traffic outbound from a device, but + per-SA granularity allows that as well.) This configuration option + allows a local administrator to decide whether the covert channel + provided by copying these bits outweighs the benefits of copying. + + o IPsec describes how to handle ECN or DS and provides the ability + to control propagation of changes in these fields between + unprotected and protected domains. In general, propagation from a + protected to an unprotected domain is a covert channel and thus + controls are provided to manage the bandwidth of this channel. + Propagation of ECN values in the other direction are controlled so + that only legitimate ECN changes (indicating occurrence of + congestion between the tunnel endpoints) are propagated. By + default, DS propagation from an unprotected domain to a protected + domain is not permitted. However, if the sender and receiver do + not share the same DS code space, and the receiver has no way of + learning how to map between the two spaces, then it may be + appropriate to deviate from the default. Specifically, an IPsec + implementation MAY be configurable in terms of how it processes + the outer DS field for tunnel mode for received packets. It may + be configured to either discard the outer DS value (the default) + OR to overwrite the inner DS field with the outer DS field. If + + + +Kent & Seo Standards Track [Page 56] + +RFC 4301 Security Architecture for IP December 2005 + + + offered, the discard vs. overwrite behavior MAY be configured on a + per-SA basis. This configuration option allows a local + administrator to decide whether the vulnerabilities created by + copying these bits outweigh the benefits of copying. See + [RFC2983] for further information on when each of these behaviors + may be useful, and also for the possible need for diffserv traffic + conditioning prior or subsequent to IPsec processing (including + tunnel decapsulation). + + o IPsec allows the IP version of the encapsulating header to be + different from that of the inner header. + + The tables in the following sub-sections show the handling for the + different header/option fields ("constructed" means that the value in + the outer field is constructed independently of the value in the + inner). + +5.1.2.1. IPv4: Header Construction for Tunnel Mode + + <-- How Outer Hdr Relates to Inner Hdr --> + Outer Hdr at Inner Hdr at + IPv4 Encapsulator Decapsulator + Header fields: -------------------- ------------ + version 4 (1) no change + header length constructed no change + DS Field copied from inner hdr (5) no change + ECN Field copied from inner hdr constructed (6) + total length constructed no change + ID constructed no change + flags (DF,MF) constructed, DF (4) no change + fragment offset constructed no change + TTL constructed (2) decrement (2) + protocol AH, ESP no change + checksum constructed constructed (2)(6) + src address constructed (3) no change + dest address constructed (3) no change + Options never copied no change + + Notes: + + (1) The IP version in the encapsulating header can be different + from the value in the inner header. + + (2) The TTL in the inner header is decremented by the encapsulator + prior to forwarding and by the decapsulator if it forwards the + packet. (The IPv4 checksum changes when the TTL changes.) + + + + + +Kent & Seo Standards Track [Page 57] + +RFC 4301 Security Architecture for IP December 2005 + + + Note: Decrementing the TTL value is a normal part of + forwarding a packet. Thus, a packet originating from the same + node as the encapsulator does not have its TTL decremented, + since the sending node is originating the packet rather than + forwarding it. This applies to BITS and native IPsec + implementations in hosts and routers. However, the IPsec + processing model includes an external forwarding capability. + TTL processing can be used to prevent looping of packets, + e.g., due to configuration errors, within the context of this + processing model. + + (3) Local and Remote addresses depend on the SA, which is used to + determine the Remote address, which in turn determines which + Local address (net interface) is used to forward the packet. + + Note: For multicast traffic, the destination address, or + source and destination addresses, may be required for + demuxing. In that case, it is important to ensure consistency + over the lifetime of the SA by ensuring that the source + address that appears in the encapsulating tunnel header is the + same as the one that was negotiated during the SA + establishment process. There is an exception to this general + rule, i.e., a mobile IPsec implementation will update its + source address as it moves. + + (4) Configuration determines whether to copy from the inner header + (IPv4 only), clear, or set the DF. + + (5) If the packet will immediately enter a domain for which the + DSCP value in the outer header is not appropriate, that value + MUST be mapped to an appropriate value for the domain + [NiBlBaBL98]. See RFC 2475 [BBCDWW98] for further + information. + + (6) If the ECN field in the inner header is set to ECT(0) or + ECT(1), where ECT is ECN-Capable Transport (ECT), and if the + ECN field in the outer header is set to Congestion Experienced + (CE), then set the ECN field in the inner header to CE; + otherwise, make no change to the ECN field in the inner + header. (The IPv4 checksum changes when the ECN changes.) + + Note: IPsec does not copy the options from the inner header into the + outer header, nor does IPsec construct the options in the outer + header. However, post-IPsec code MAY insert/construct options for + the outer header. + + + + + + +Kent & Seo Standards Track [Page 58] + +RFC 4301 Security Architecture for IP December 2005 + + +5.1.2.2. IPv6: Header Construction for Tunnel Mode + + <-- How Outer Hdr Relates Inner Hdr ---> + Outer Hdr at Inner Hdr at + IPv6 Encapsulator Decapsulator + Header fields: -------------------- ------------ + version 6 (1) no change + DS Field copied from inner hdr (5) no change (9) + ECN Field copied from inner hdr constructed (6) + flow label copied or configured (8) no change + payload length constructed no change + next header AH,ESP,routing hdr no change + hop limit constructed (2) decrement (2) + src address constructed (3) no change + dest address constructed (3) no change + Extension headers never copied (7) no change + + Notes: + + (1) - (6) See Section 5.1.2.1. + + (7) IPsec does not copy the extension headers from the inner + packet into outer headers, nor does IPsec construct extension + headers in the outer header. However, post-IPsec code MAY + insert/construct extension headers for the outer header. + + (8) See [RaCoCaDe04]. Copying is acceptable only for end systems, + not SGs. If an SG copied flow labels from the inner header to + the outer header, collisions might result. + + (9) An implementation MAY choose to provide a facility to pass the + DS value from the outer header to the inner header, on a per- + SA basis, for received tunnel mode packets. The motivation + for providing this feature is to accommodate situations in + which the DS code space at the receiver is different from that + of the sender and the receiver has no way of knowing how to + translate from the sender's space. There is a danger in + copying this value from the outer header to the inner header, + since it enables an attacker to modify the outer DSCP value in + a fashion that may adversely affect other traffic at the + receiver. Hence the default behavior for IPsec + implementations is NOT to permit such copying. + +5.2. Processing Inbound IP Traffic (unprotected-to-protected) + + Inbound processing is somewhat different from outbound processing, + because of the use of SPIs to map IPsec-protected traffic to SAs. + The inbound SPD cache (SPD-I) is applied only to bypassed or + + + +Kent & Seo Standards Track [Page 59] + +RFC 4301 Security Architecture for IP December 2005 + + + discarded traffic. If an arriving packet appears to be an IPsec + fragment from an unprotected interface, reassembly is performed prior + to IPsec processing. The intent for any SPD cache is that a packet + that fails to match any entry is then referred to the corresponding + SPD. Every SPD SHOULD have a nominal, final entry that catches + anything that is otherwise unmatched, and discards it. This ensures + that non-IPsec-protected traffic that arrives and does not match any + SPD-I entry will be discarded. + + Unprotected Interface + | + V + +-----+ IPsec protected + ------------------->|Demux|-------------------+ + | +-----+ | + | | | + | Not IPsec | | + | | | + | V | + | +-------+ +---------+ | + | |DISCARD|<---|SPD-I (*)| | + | +-------+ +---------+ | + | | | + | |-----+ | + | | | | + | | V | + | | +------+ | + | | | ICMP | | + | | +------+ | + | | V + +---------+ | +-----------+ + ....|SPD-O (*)|............|...................|PROCESS(**)|...IPsec + +---------+ | | (AH/ESP) | Boundary + ^ | +-----------+ + | | +---+ | + | BYPASS | +-->|IKE| | + | | | +---+ | + | V | V + | +----------+ +---------+ +----+ + |--------<------|Forwarding|<---------|SAD Check|-->|ICMP| + nested SAs +----------+ | (***) | +----+ + | +---------+ + V + Protected Interface + + Figure 3. Processing Model for Inbound Traffic + + + + + +Kent & Seo Standards Track [Page 60] + +RFC 4301 Security Architecture for IP December 2005 + + + (*) = The caches are shown here. If there is + a cache miss, then the SPD is checked. + There is no requirement that an + implementation buffer the packet if + there is a cache miss. + (**) = This processing includes using the + packet's SPI, etc., to look up the SA + in the SAD, which forms a cache of the + SPD for inbound packets (except for + cases noted in Sections 4.4.2 and 5). + See step 3a below. + (***) = This SAD check refers to step 4 below. + + Prior to performing AH or ESP processing, any IP fragments that + arrive via the unprotected interface are reassembled (by IP). Each + inbound IP datagram to which IPsec processing will be applied is + identified by the appearance of the AH or ESP values in the IP Next + Protocol field (or of AH or ESP as a next layer protocol in the IPv6 + context). + + IPsec MUST perform the following steps: + + 1. When a packet arrives, it may be tagged with the ID of the + interface (physical or virtual) via which it arrived, if + necessary, to support multiple SPDs and associated SPD-I caches. + (The interface ID is mapped to a corresponding SPD-ID.) + + 2. The packet is examined and demuxed into one of two categories: + - If the packet appears to be IPsec protected and it is addressed + to this device, an attempt is made to map it to an active SA + via the SAD. Note that the device may have multiple IP + addresses that may be used in the SAD lookup, e.g., in the case + of protocols such as SCTP. + - Traffic not addressed to this device, or addressed to this + device and not AH or ESP, is directed to SPD-I lookup. (This + implies that IKE traffic MUST have an explicit BYPASS entry in + the SPD.) If multiple SPDs are employed, the tag assigned to + the packet in step 1 is used to select the appropriate SPD-I + (and cache) to search. SPD-I lookup determines whether the + action is DISCARD or BYPASS. + + 3a. If the packet is addressed to the IPsec device and AH or ESP is + specified as the protocol, the packet is looked up in the SAD. + For unicast traffic, use only the SPI (or SPI plus protocol). + For multicast traffic, use the SPI plus the destination or SPI + plus destination and source addresses, as specified in Section + 4.1. In either case (unicast or multicast), if there is no match, + discard the traffic. This is an auditable event. The audit log + + + +Kent & Seo Standards Track [Page 61] + +RFC 4301 Security Architecture for IP December 2005 + + + entry for this event SHOULD include the current date/time, SPI, + source and destination of the packet, IPsec protocol, and any + other selector values of the packet that are available. If the + packet is found in the SAD, process it accordingly (see step 4). + + 3b. If the packet is not addressed to the device or is addressed to + this device and is not AH or ESP, look up the packet header in + the (appropriate) SPD-I cache. If there is a match and the + packet is to be discarded or bypassed, do so. If there is no + cache match, look up the packet in the corresponding SPD-I and + create a cache entry as appropriate. (No SAs are created in + response to receipt of a packet that requires IPsec protection; + only BYPASS or DISCARD cache entries can be created this way.) If + there is no match, discard the traffic. This is an auditable + event. The audit log entry for this event SHOULD include the + current date/time, SPI if available, IPsec protocol if available, + source and destination of the packet, and any other selector + values of the packet that are available. + + 3c. Processing of ICMP messages is assumed to take place on the + unprotected side of the IPsec boundary. Unprotected ICMP + messages are examined and local policy is applied to determine + whether to accept or reject these messages and, if accepted, what + action to take as a result. For example, if an ICMP unreachable + message is received, the implementation must decide whether to + act on it, reject it, or act on it with constraints. (See Section + 6.) + + 4. Apply AH or ESP processing as specified, using the SAD entry + selected in step 3a above. Then match the packet against the + inbound selectors identified by the SAD entry to verify that the + received packet is appropriate for the SA via which it was + received. + + 5. If an IPsec system receives an inbound packet on an SA and the + packet's header fields are not consistent with the selectors for + the SA, it MUST discard the packet. This is an auditable event. + The audit log entry for this event SHOULD include the current + date/time, SPI, IPsec protocol(s), source and destination of the + packet, any other selector values of the packet that are + available, and the selector values from the relevant SAD entry. + The system SHOULD also be capable of generating and sending an + IKE notification of INVALID_SELECTORS to the sender (IPsec peer), + indicating that the received packet was discarded because of + failure to pass selector checks. + + + + + + +Kent & Seo Standards Track [Page 62] + +RFC 4301 Security Architecture for IP December 2005 + + + To minimize the impact of a DoS attack, or a mis-configured peer, the + IPsec system SHOULD include a management control to allow an + administrator to configure the IPsec implementation to send or not + send this IKE notification, and if this facility is selected, to rate + limit the transmission of such notifications. + + After traffic is bypassed or processed through IPsec, it is handed to + the inbound forwarding function for disposition. This function may + cause the packet to be sent (outbound) across the IPsec boundary for + additional inbound IPsec processing, e.g., in support of nested SAs. + If so, then as with ALL outbound traffic that is to be bypassed, the + packet MUST be matched against an SPD-O entry. Ultimately, the + packet should be forwarded to the destination host or process for + disposition. + +6. ICMP Processing + + This section describes IPsec handling of ICMP traffic. There are two + categories of ICMP traffic: error messages (e.g., type = destination + unreachable) and non-error messages (e.g., type = echo). This + section applies exclusively to error messages. Disposition of + non-error, ICMP messages (that are not addressed to the IPsec + implementation itself) MUST be explicitly accounted for using SPD + entries. + + The discussion in this section applies to ICMPv6 as well as to + ICMPv4. Also, a mechanism SHOULD be provided to allow an + administrator to cause ICMP error messages (selected, all, or none) + to be logged as an aid to problem diagnosis. + +6.1. Processing ICMP Error Messages Directed to an IPsec Implementation + +6.1.1. ICMP Error Messages Received on the Unprotected Side of the + Boundary + + Figure 3 in Section 5.2 shows a distinct ICMP processing module on + the unprotected side of the IPsec boundary, for processing ICMP + messages (error or otherwise) that are addressed to the IPsec device + and that are not protected via AH or ESP. An ICMP message of this + sort is unauthenticated, and its processing may result in denial or + degradation of service. This suggests that, in general, it would be + desirable to ignore such messages. However, many ICMP messages will + be received by hosts or security gateways from unauthenticated + sources, e.g., routers in the public Internet. Ignoring these ICMP + messages can degrade service, e.g., because of a failure to process + PMTU message and redirection messages. Thus, there is also a + motivation for accepting and acting upon unauthenticated ICMP + messages. + + + +Kent & Seo Standards Track [Page 63] + +RFC 4301 Security Architecture for IP December 2005 + + + To accommodate both ends of this spectrum, a compliant IPsec + implementation MUST permit a local administrator to configure an + IPsec implementation to accept or reject unauthenticated ICMP + traffic. This control MUST be at the granularity of ICMP type and + MAY be at the granularity of ICMP type and code. Additionally, an + implementation SHOULD incorporate mechanisms and parameters for + dealing with such traffic. For example, there could be the ability + to establish a minimum PMTU for traffic (on a per destination basis), + to prevent receipt of an unauthenticated ICMP from setting the PMTU + to a trivial size. + + If an ICMP PMTU message passes the checks above and the system is + configured to accept it, then there are two possibilities. If the + implementation applies fragmentation on the ciphertext side of the + boundary, then the accepted PMTU information is passed to the + forwarding module (outside of the IPsec implementation), which uses + it to manage outbound packet fragmentation. If the implementation is + configured to effect plaintext side fragmentation, then the PMTU + information is passed to the plaintext side and processed as + described in Section 8.2. + +6.1.2. ICMP Error Messages Received on the Protected Side of the + Boundary + + These ICMP messages are not authenticated, but they do come from + sources on the protected side of the IPsec boundary. Thus, these + messages generally are viewed as more "trustworthy" than their + counterparts arriving from sources on the unprotected side of the + boundary. The major security concern here is that a compromised host + or router might emit erroneous ICMP error messages that could degrade + service for other devices "behind" the security gateway, or that + could even result in violations of confidentiality. For example, if + a bogus ICMP redirect were consumed by a security gateway, it could + cause the forwarding table on the protected side of the boundary to + be modified so as to deliver traffic to an inappropriate destination + "behind" the gateway. Thus, implementers MUST provide controls to + allow local administrators to constrain the processing of ICMP error + messages received on the protected side of the boundary, and directed + to the IPsec implementation. These controls are of the same type as + those employed on the unprotected side, described above in Section + 6.1.1. + +6.2. Processing Protected, Transit ICMP Error Messages + + When an ICMP error message is transmitted via an SA to a device + "behind" an IPsec implementation, both the payload and the header of + the ICMP message require checking from an access control perspective. + If one of these messages is forwarded to a host behind a security + + + +Kent & Seo Standards Track [Page 64] + +RFC 4301 Security Architecture for IP December 2005 + + + gateway, the receiving host IP implementation will make decisions + based on the payload, i.e., the header of the packet that purportedly + triggered the error response. Thus, an IPsec implementation MUST be + configurable to check that this payload header information is + consistent with the SA via which it arrives. (This means that the + payload header, with source and destination address and port fields + reversed, matches the traffic selectors for the SA.) If this sort of + check is not performed, then, for example, anyone with whom the + receiving IPsec system (A) has an active SA could send an ICMP + Destination Unreachable message that refers to any host/net with + which A is currently communicating, and thus effect a highly + efficient DoS attack regarding communication with other peers of A. + Normal IPsec receiver processing of traffic is not sufficient to + protect against such attacks. However, not all contexts may require + such checks, so it is also necessary to allow a local administrator + to configure an implementation to NOT perform such checks. + + To accommodate both policies, the following convention is adopted. + If an administrator wants to allow ICMP error messages to be carried + by an SA without inspection of the payload, then configure an SPD + entry that explicitly allows for carriage of such traffic. If an + administrator wants IPsec to check the payload of ICMP error messages + for consistency, then do not create any SPD entries that accommodate + carriage of such traffic based on the ICMP packet header. This + convention motivates the following processing description. + + IPsec senders and receivers MUST support the following processing for + ICMP error messages that are sent and received via SAs. + + If an SA exists that accommodates an outbound ICMP error message, + then the message is mapped to the SA and only the IP and ICMP headers + are checked upon receipt, just as would be the case for other + traffic. If no SA exists that matches the traffic selectors + associated with an ICMP error message, then the SPD is searched to + determine if such an SA can be created. If so, the SA is created and + the ICMP error message is transmitted via that SA. Upon receipt, + this message is subject to the usual traffic selector checks at the + receiver. This processing is exactly what would happen for traffic + in general, and thus does not represent any special processing for + ICMP error messages. + + If no SA exists that would carry the outbound ICMP message in + question, and if no SPD entry would allow carriage of this outbound + ICMP error message, then an IPsec implementation MUST map the message + to the SA that would carry the return traffic associated with the + packet that triggered the ICMP error message. This requires an IPsec + implementation to detect outbound ICMP error messages that map to no + extant SA or SPD entry, and treat them specially with regard to SA + + + +Kent & Seo Standards Track [Page 65] + +RFC 4301 Security Architecture for IP December 2005 + + + creation and lookup. The implementation extracts the header for the + packet that triggered the error (from the ICMP message payload), + reverses the source and destination IP address fields, extracts the + protocol field, and reverses the port fields (if accessible). It + then uses this extracted information to locate an appropriate, active + outbound SA, and transmits the error message via this SA. If no such + SA exists, no SA will be created, and this is an auditable event. + + If an IPsec implementation receives an inbound ICMP error message on + an SA, and the IP and ICMP headers of the message do not match the + traffic selectors for the SA, the receiver MUST process the received + message in a special fashion. Specifically, the receiver must + extract the header of the triggering packet from the ICMP payload, + and reverse fields as described above to determine if the packet is + consistent with the selectors for the SA via which the ICMP error + message was received. If the packet fails this check, the IPsec + implementation MUST NOT forwarded the ICMP message to the + destination. This is an auditable event. + +7. Handling Fragments (on the protected side of the IPsec boundary) + + Earlier sections of this document describe mechanisms for (a) + fragmenting an outbound packet after IPsec processing has been + applied and reassembling it at the receiver before IPsec processing + and (b) handling inbound fragments received from the unprotected side + of the IPsec boundary. This section describes how an implementation + should handle the processing of outbound plaintext fragments on the + protected side of the IPsec boundary. (See Appendix D, "Fragment + Handling Rationale".) In particular, it addresses: + + o mapping an outbound non-initial fragment to the right SA + (or finding the right SPD entry) + o verifying that a received non-initial fragment is + authorized for the SA via which it was received + o mapping outbound and inbound non-initial fragments to the + right SPD-O/SPD-I entry or the relevant cache entry, for + BYPASS/DISCARD traffic + + Note: In Section 4.1, transport mode SAs have been defined to not + carry fragments (IPv4 or IPv6). Note also that in Section 4.4.1, two + special values, ANY and OPAQUE, were defined for selectors and that + ANY includes OPAQUE. The term "non-trivial" is used to mean that the + selector has a value other than OPAQUE or ANY. + + Note: The term "non-initial fragment" is used here to indicate a + fragment that does not contain all the selector values that may be + needed for access control. As observed in Section 4.4.1, depending + on the Next Layer Protocol, in addition to Ports, the ICMP message + + + +Kent & Seo Standards Track [Page 66] + +RFC 4301 Security Architecture for IP December 2005 + + + type/code or Mobility Header type could be missing from non-initial + fragments. Also, for IPv6, even the first fragment might NOT contain + the Next Layer Protocol or Ports (or ICMP message type/code, or + Mobility Header type) depending on the kind and number of extension + headers present. If a non-initial fragment contains the Port (or + ICMP type and code or Mobility Header type) but not the Next Layer + Protocol, then unless there is an SPD entry for the relevant + Local/Remote addresses with ANY for Next Layer Protocol and Port (or + ICMP type and code or Mobility Header type), the fragment would not + contain all the selector information needed for access control. + + To address the above issues, three approaches have been defined: + + o Tunnel mode SAs that carry initial and non-initial fragments + (See Section 7.1.) + o Separate tunnel mode SAs for non-initial fragments (See + Section 7.2.) + o Stateful fragment checking (See Section 7.3.) + +7.1. Tunnel Mode SAs that Carry Initial and Non-Initial Fragments + + All implementations MUST support tunnel mode SAs that are configured + to pass traffic without regard to port field (or ICMP type/code or + Mobility Header type) values. If the SA will carry traffic for + specified protocols, the selector set for the SA MUST specify the + port fields (or ICMP type/code or Mobility Header type) as ANY. An + SA defined in this fashion will carry all traffic including initial + and non-initial fragments for the indicated Local/Remote addresses + and specified Next Layer protocol(s). If the SA will carry traffic + without regard to a specific protocol value (i.e., ANY is specified + as the (Next Layer) protocol selector value), then the port field + values are undefined and MUST be set to ANY as well. (As noted in + 4.4.1, ANY includes OPAQUE as well as all specific values.) + +7.2. Separate Tunnel Mode SAs for Non-Initial Fragments + + An implementation MAY support tunnel mode SAs that will carry only + non-initial fragments, separate from non-fragmented packets and + initial fragments. The OPAQUE value will be used to specify port (or + ICMP type/code or Mobility Header type) field selectors for an SA to + carry such fragments. Receivers MUST perform a minimum offset check + on IPv4 (non-initial) fragments to protect against overlapping + fragment attacks when SAs of this type are employed. Because such + checks cannot be performed on IPv6 non-initial fragments, users and + administrators are advised that carriage of such fragments may be + dangerous, and implementers may choose to NOT support such SAs for + IPv6 traffic. Also, an SA of this sort will carry all non-initial + fragments that match a specified Local/Remote address pair and + + + +Kent & Seo Standards Track [Page 67] + +RFC 4301 Security Architecture for IP December 2005 + + + protocol value, i.e., the fragments carried on this SA belong to + packets that if not fragmented, might have gone on separate SAs of + differing security. Therefore, users and administrators are advised + to protect such traffic using ESP (with integrity) and the + "strongest" integrity and encryption algorithms in use between both + peers. (Determination of the "strongest" algorithms requires + imposing an ordering of the available algorithms, a local + determination at the discretion of the initiator of the SA.) + + Specific port (or ICMP type/code or Mobility Header type) selector + values will be used to define SAs to carry initial fragments and + non-fragmented packets. This approach can be used if a user or + administrator wants to create one or more tunnel mode SAs between the + same Local/Remote addresses that discriminate based on port (or ICMP + type/code or Mobility Header type) fields. These SAs MUST have + non-trivial protocol selector values, otherwise approach #1 above + MUST be used. + + Note: In general, for the approach described in this section, one + needs only a single SA between two implementations to carry all + non-initial fragments. However, if one chooses to have multiple SAs + between the two implementations for QoS differentiation, then one + might also want multiple SAs to carry fragments-without-ports, one + for each supported QoS class. Since support for QoS via distinct SAs + is a local matter, not mandated by this document, the choice to have + multiple SAs to carry non-initial fragments should also be local. + +7.3. Stateful Fragment Checking + + An implementation MAY support some form of stateful fragment checking + for a tunnel mode SA with non-trivial port (or ICMP type/code or MH + type) field values (not ANY or OPAQUE). Implementations that will + transmit non-initial fragments on a tunnel mode SA that makes use of + non-trivial port (or ICMP type/code or MH type) selectors MUST notify + a peer via the IKE NOTIFY NON_FIRST_FRAGMENTS_ALSO payload. + + The peer MUST reject this proposal if it will not accept non-initial + fragments in this context. If an implementation does not + successfully negotiate transmission of non-initial fragments for such + an SA, it MUST NOT send such fragments over the SA. This standard + does not specify how peers will deal with such fragments, e.g., via + reassembly or other means, at either sender or receiver. However, a + receiver MUST discard non-initial fragments that arrive on an SA with + non-trivial port (or ICMP type/code or MH type) selector values + unless this feature has been negotiated. Also, the receiver MUST + discard non-initial fragments that do not comply with the security + policy applied to the overall packet. Discarding such packets is an + auditable event. Note that in network configurations where fragments + + + +Kent & Seo Standards Track [Page 68] + +RFC 4301 Security Architecture for IP December 2005 + + + of a packet might be sent or received via different security gateways + or BITW implementations, stateful strategies for tracking fragments + may fail. + +7.4. BYPASS/DISCARD Traffic + + All implementations MUST support DISCARDing of fragments using the + normal SPD packet classification mechanisms. All implementations + MUST support stateful fragment checking to accommodate BYPASS traffic + for which a non-trivial port range is specified. The concern is that + BYPASS of a cleartext, non-initial fragment arriving at an IPsec + implementation could undermine the security afforded IPsec-protected + traffic directed to the same destination. For example, consider an + IPsec implementation configured with an SPD entry that calls for + IPsec protection of traffic between a specific source/destination + address pair, and for a specific protocol and destination port, e.g., + TCP traffic on port 23 (Telnet). Assume that the implementation also + allows BYPASS of traffic from the same source/destination address + pair and protocol, but for a different destination port, e.g., port + 119 (NNTP). An attacker could send a non-initial fragment (with a + forged source address) that, if bypassed, could overlap with + IPsec-protected traffic from the same source and thus violate the + integrity of the IPsec-protected traffic. Requiring stateful + fragment checking for BYPASS entries with non-trivial port ranges + prevents attacks of this sort. As noted above, in network + configurations where fragments of a packet might be sent or received + via different security gateways or BITW implementations, stateful + strategies for tracking fragments may fail. + +8. Path MTU/DF Processing + + The application of AH or ESP to an outbound packet increases the size + of a packet and thus may cause a packet to exceed the PMTU for the SA + via which the packet will travel. An IPsec implementation also may + receive an unprotected ICMP PMTU message and, if it chooses to act + upon the message, the result will affect outbound traffic processing. + This section describes the processing required of an IPsec + implementation to deal with these two PMTU issues. + +8.1. DF Bit + + All IPsec implementations MUST support the option of copying the DF + bit from an outbound packet to the tunnel mode header that it emits, + when traffic is carried via a tunnel mode SA. This means that it + MUST be possible to configure the implementation's treatment of the + DF bit (set, clear, copy from inner header) for each SA. This + applies to SAs where both inner and outer headers are IPv4. + + + + +Kent & Seo Standards Track [Page 69] + +RFC 4301 Security Architecture for IP December 2005 + + +8.2. Path MTU (PMTU) Discovery + + This section discusses IPsec handling for unprotected Path MTU + Discovery messages. ICMP PMTU is used here to refer to an ICMP + message for: + + IPv4 (RFC 792 [Pos81b]): + - Type = 3 (Destination Unreachable) + - Code = 4 (Fragmentation needed and DF set) + - Next-Hop MTU in the low-order 16 bits of the + second word of the ICMP header (labeled "unused" + in RFC 792), with high-order 16 bits set to zero) + + IPv6 (RFC 2463 [CD98]): + - Type = 2 (Packet Too Big) + - Code = 0 (Fragmentation needed) + - Next-Hop MTU in the 32-bit MTU field of the ICMP6 + message + +8.2.1. Propagation of PMTU + + When an IPsec implementation receives an unauthenticated PMTU + message, and it is configured to process (vs. ignore) such messages, + it maps the message to the SA to which it corresponds. This mapping + is effected by extracting the header information from the payload of + the PMTU message and applying the procedure described in Section 5.2. + The PMTU determined by this message is used to update the SAD PMTU + field, taking into account the size of the AH or ESP header that will + be applied, any crypto synchronization data, and the overhead imposed + by an additional IP header, in the case of a tunnel mode SA. + + In a native host implementation, it is possible to maintain PMTU data + at the same granularity as for unprotected communication, so there is + no loss of functionality. Signaling of the PMTU information is + internal to the host. For all other IPsec implementation options, + the PMTU data must be propagated via a synthesized ICMP PMTU. In + these cases, the IPsec implementation SHOULD wait for outbound + traffic to be mapped to the SAD entry. When such traffic arrives, if + the traffic would exceed the updated PMTU value the traffic MUST be + handled as follows: + + Case 1: Original (cleartext) packet is IPv4 and has the DF + bit set. The implementation SHOULD discard the packet + and send a PMTU ICMP message. + + + + + + + +Kent & Seo Standards Track [Page 70] + +RFC 4301 Security Architecture for IP December 2005 + + + Case 2: Original (cleartext) packet is IPv4 and has the DF + bit clear. The implementation SHOULD fragment (before or + after encryption per its configuration) and then forward + the fragments. It SHOULD NOT send a PMTU ICMP message. + + Case 3: Original (cleartext) packet is IPv6. The implementation + SHOULD discard the packet and send a PMTU ICMP message. + +8.2.2. PMTU Aging + + In all IPsec implementations, the PMTU associated with an SA MUST be + "aged" and some mechanism is required to update the PMTU in a timely + manner, especially for discovering if the PMTU is smaller than + required by current network conditions. A given PMTU has to remain + in place long enough for a packet to get from the source of the SA to + the peer, and to propagate an ICMP error message if the current PMTU + is too big. + + Implementations SHOULD use the approach described in the Path MTU + Discovery document (RFC 1191 [MD90], Section 6.3), which suggests + periodically resetting the PMTU to the first-hop data-link MTU and + then letting the normal PMTU Discovery processes update the PMTU as + necessary. The period SHOULD be configurable. + +9. Auditing + + IPsec implementations are not required to support auditing. For the + most part, the granularity of auditing is a local matter. However, + several auditable events are identified in this document, and for + each of these events a minimum set of information that SHOULD be + included in an audit log is defined. Additional information also MAY + be included in the audit log for each of these events, and additional + events, not explicitly called out in this specification, also MAY + result in audit log entries. There is no requirement for the + receiver to transmit any message to the purported transmitter in + response to the detection of an auditable event, because of the + potential to induce denial of service via such action. + +10. Conformance Requirements + + All IPv4 IPsec implementations MUST comply with all requirements of + this document. All IPv6 implementations MUST comply with all + requirements of this document. + + + + + + + + +Kent & Seo Standards Track [Page 71] + +RFC 4301 Security Architecture for IP December 2005 + + +11. Security Considerations + + The focus of this document is security; hence security considerations + permeate this specification. + + IPsec imposes stringent constraints on bypass of IP header data in + both directions, across the IPsec barrier, especially when tunnel + mode SAs are employed. Some constraints are absolute, while others + are subject to local administrative controls, often on a per-SA + basis. For outbound traffic, these constraints are designed to limit + covert channel bandwidth. For inbound traffic, the constraints are + designed to prevent an adversary who has the ability to tamper with + one data stream (on the unprotected side of the IPsec barrier) from + adversely affecting other data streams (on the protected side of the + barrier). The discussion in Section 5 dealing with processing DSCP + values for tunnel mode SAs illustrates this concern. + + If an IPsec implementation is configured to pass ICMP error messages + over SAs based on the ICMP header values, without checking the header + information from the ICMP message payload, serious vulnerabilities + may arise. Consider a scenario in which several sites (A, B, and C) + are connected to one another via ESP-protected tunnels: A-B, A-C, and + B-C. Also assume that the traffic selectors for each tunnel specify + ANY for protocol and port fields and IP source/destination address + ranges that encompass the address range for the systems behind the + security gateways serving each site. This would allow a host at site + B to send an ICMP Destination Unreachable message to any host at site + A, that declares all hosts on the net at site C to be unreachable. + This is a very efficient DoS attack that could have been prevented if + the ICMP error messages were subjected to the checks that IPsec + provides, if the SPD is suitably configured, as described in Section + 6.2. + +12. IANA Considerations + + The IANA has assigned the value (3) for the asn1-modules registry and + has assigned the object identifier 1.3.6.1.5.8.3.1 for the SPD + module. See Appendix C, "ASN.1 for an SPD Entry". + +13. Differences from RFC 2401 + + This architecture document differs substantially from RFC 2401 + [RFC2401] in detail and in organization, but the fundamental notions + are unchanged. + + o The processing model has been revised to address new IPsec + scenarios, improve performance, and simplify implementation. This + includes a separation between forwarding (routing) and SPD + + + +Kent & Seo Standards Track [Page 72] + +RFC 4301 Security Architecture for IP December 2005 + + + selection, several SPD changes, and the addition of an outbound SPD + cache and an inbound SPD cache for bypassed or discarded traffic. + There is also a new database, the Peer Authorization Database + (PAD). This provides a link between an SA management protocol + (such as IKE) and the SPD. + + o There is no longer a requirement to support nested SAs or "SA + bundles". Instead this functionality can be achieved through SPD + and forwarding table configuration. An example of a configuration + has been added in Appendix E. + + o SPD entries were redefined to provide more flexibility. Each SPD + entry now consists of 1 to N sets of selectors, where each selector + set contains one protocol and a "list of ranges" can now be + specified for the Local IP address, Remote IP address, and whatever + fields (if any) are associated with the Next Layer Protocol (Local + Port, Remote Port, ICMP message type and code, and Mobility Header + type). An individual value for a selector is represented via a + trivial range and ANY is represented via a range than spans all + values for the selector. An example of an ASN.1 description is + included in Appendix C. + + o TOS (IPv4) and Traffic Class (IPv6) have been replaced by DSCP and + ECN. The tunnel section has been updated to explain how to handle + DSCP and ECN bits. + + o For tunnel mode SAs, an SG, BITS, or BITW implementation is now + allowed to fragment packets before applying IPsec. This applies + only to IPv4. For IPv6 packets, only the originator is allowed to + fragment them. + + o When security is desired between two intermediate systems along a + path or between an intermediate system and an end system, transport + mode may now be used between security gateways and between a + security gateway and a host. + + o This document clarifies that for all traffic that crosses the IPsec + boundary, including IPsec management traffic, the SPD or associated + caches must be consulted. + + o This document defines how to handle the situation of a security + gateway with multiple subscribers requiring separate IPsec + contexts. + + o A definition of reserved SPIs has been added. + + + + + + +Kent & Seo Standards Track [Page 73] + +RFC 4301 Security Architecture for IP December 2005 + + + o Text has been added explaining why ALL IP packets must be checked + -- IPsec includes minimal firewall functionality to support access + control at the IP layer. + + o The tunnel section has been updated to clarify how to handle the IP + options field and IPv6 extension headers when constructing the + outer header. + + o SA mapping for inbound traffic has been updated to be consistent + with the changes made in AH and ESP for support of unicast and + multicast SAs. + + o Guidance has been added regarding how to handle the covert channel + created in tunnel mode by copying the DSCP value to outer header. + + o Support for AH in both IPv4 and IPv6 is no longer required. + + o PMTU handling has been updated. The appendix on + PMTU/DF/Fragmentation has been deleted. + + o Three approaches have been added for handling plaintext fragments + on the protected side of the IPsec boundary. Appendix D documents + the rationale behind them. + + o Added revised text describing how to derive selector values for SAs + (from the SPD entry or from the packet, etc.) + + o Added a new table describing the relationship between selector + values in an SPD entry, the PFP flag, and resulting selector values + in the corresponding SAD entry. + + o Added Appendix B to describe decorrelation. + + o Added text describing how to handle an outbound packet that must be + discarded. + + o Added text describing how to handle a DISCARDED inbound packet, + i.e., one that does not match the SA upon which it arrived. + + o IPv6 mobility header has been added as a possible Next Layer + Protocol. IPv6 Mobility Header message type has been added as a + selector. + + o ICMP message type and code have been added as selectors. + + o The selector "data sensitivity level" has been removed to simplify + things. + + + + +Kent & Seo Standards Track [Page 74] + +RFC 4301 Security Architecture for IP December 2005 + + + o Updated text describing handling ICMP error messages. The appendix + on "Categorization of ICMP Messages" has been deleted. + + o The text for the selector name has been updated and clarified. + + o The "Next Layer Protocol" has been further explained and a default + list of protocols to skip when looking for the Next Layer Protocol + has been added. + + o The text has been amended to say that this document assumes use of + IKEv2 or an SA management protocol with comparable features. + + o Text has been added clarifying the algorithm for mapping inbound + IPsec datagrams to SAs in the presence of multicast SAs. + + o The appendix "Sequence Space Window Code Example" has been removed. + + o With respect to IP addresses and ports, the terms "Local" and + "Remote" are used for policy rules (replacing source and + destination). "Local" refers to the entity being protected by an + IPsec implementation, i.e., the "source" address/port of outbound + packets or the "destination" address/port of inbound packets. + "Remote" refers to a peer entity or peer entities. The terms + "source" and "destination" are still used for packet header fields. + +14. Acknowledgements + + The authors would like to acknowledge the contributions of Ran + Atkinson, who played a critical role in initial IPsec activities, and + who authored the first series of IPsec standards: RFCs 1825-1827; and + Charlie Lynn, who made significant contributions to the second series + of IPsec standards (RFCs 2401, 2402, and 2406) and to the current + versions, especially with regard to IPv6 issues. The authors also + would like to thank the members of the IPsec and MSEC working groups + who have contributed to the development of this protocol + specification. + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 75] + +RFC 4301 Security Architecture for IP December 2005 + + +Appendix A: Glossary + + This section provides definitions for several key terms that are + employed in this document. Other documents provide additional + definitions and background information relevant to this technology, + e.g., [Shi00], [VK83], and [HA94]. Included in this glossary are + generic security service and security mechanism terms, plus + IPsec-specific terms. + + Access Control + A security service that prevents unauthorized use of a resource, + including the prevention of use of a resource in an unauthorized + manner. In the IPsec context, the resource to which access is + being controlled is often: + + o for a host, computing cycles or data + o for a security gateway, a network behind the gateway + or bandwidth on that network. + + Anti-replay + See "Integrity" below. + + Authentication + Used informally to refer to the combination of two nominally + distinct security services, data origin authentication and + connectionless integrity. See the definitions below for each of + these services. + + Availability + When viewed as a security service, addresses the security concerns + engendered by attacks against networks that deny or degrade + service. For example, in the IPsec context, the use of + anti-replay mechanisms in AH and ESP support availability. + + Confidentiality + The security service that protects data from unauthorized + disclosure. The primary confidentiality concern in most instances + is unauthorized disclosure of application-level data, but + disclosure of the external characteristics of communication also + can be a concern in some circumstances. Traffic flow + confidentiality is the service that addresses this latter concern + by concealing source and destination addresses, message length, or + frequency of communication. In the IPsec context, using ESP in + tunnel mode, especially at a security gateway, can provide some + level of traffic flow confidentiality. (See also "Traffic + Analysis" below.) + + + + + +Kent & Seo Standards Track [Page 76] + +RFC 4301 Security Architecture for IP December 2005 + + + Data Origin Authentication + A security service that verifies the identity of the claimed + source of data. This service is usually bundled with + connectionless integrity service. + + Encryption + A security mechanism used to transform data from an intelligible + form (plaintext) into an unintelligible form (ciphertext), to + provide confidentiality. The inverse transformation process is + designated "decryption". Often the term "encryption" is used to + generically refer to both processes. + + Integrity + A security service that ensures that modifications to data are + detectable. Integrity comes in various flavors to match + application requirements. IPsec supports two forms of integrity: + connectionless and a form of partial sequence integrity. + Connectionless integrity is a service that detects modification of + an individual IP datagram, without regard to the ordering of the + datagram in a stream of traffic. The form of partial sequence + integrity offered in IPsec is referred to as anti-replay + integrity, and it detects arrival of duplicate IP datagrams + (within a constrained window). This is in contrast to + connection-oriented integrity, which imposes more stringent + sequencing requirements on traffic, e.g., to be able to detect + lost or re-ordered messages. Although authentication and + integrity services often are cited separately, in practice they + are intimately connected and almost always offered in tandem. + + Protected vs. Unprotected + "Protected" refers to the systems or interfaces that are inside + the IPsec protection boundary, and "unprotected" refers to the + systems or interfaces that are outside the IPsec protection + boundary. IPsec provides a boundary through which traffic passes. + There is an asymmetry to this barrier, which is reflected in the + processing model. Outbound data, if not discarded or bypassed, is + protected via the application of AH or ESP and the addition of the + corresponding headers. Inbound data, if not discarded or + bypassed, is processed via the removal of AH or ESP headers. In + this document, inbound traffic enters an IPsec implementation from + the "unprotected" interface. Outbound traffic enters the + implementation via the "protected" interface, or is internally + generated by the implementation on the "protected" side of the + boundary and directed toward the "unprotected" interface. An + IPsec implementation may support more than one interface on either + or both sides of the boundary. The protected interface may be + + + + + +Kent & Seo Standards Track [Page 77] + +RFC 4301 Security Architecture for IP December 2005 + + + internal, e.g., in a host implementation of IPsec. The protected + interface may link to a socket layer interface presented by the + OS. + + Security Association (SA) + A simplex (uni-directional) logical connection, created for + security purposes. All traffic traversing an SA is provided the + same security processing. In IPsec, an SA is an Internet-layer + abstraction implemented through the use of AH or ESP. State data + associated with an SA is represented in the SA Database (SAD). + + Security Gateway + An intermediate system that acts as the communications interface + between two networks. The set of hosts (and networks) on the + external side of the security gateway is termed unprotected (they + are generally at least less protected than those "behind" the SG), + while the networks and hosts on the internal side are viewed as + protected. The internal subnets and hosts served by a security + gateway are presumed to be trusted by virtue of sharing a common, + local, security administration. In the IPsec context, a security + gateway is a point at which AH and/or ESP is implemented in order + to serve a set of internal hosts, providing security services for + these hosts when they communicate with external hosts also + employing IPsec (either directly or via another security gateway). + + Security Parameters Index (SPI) + An arbitrary 32-bit value that is used by a receiver to identify + the SA to which an incoming packet should be bound. 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. Additional IP + address information is used to identify multicast SAs. The SPI is + carried in AH and ESP protocols to enable the receiving system to + select the SA under which a received packet will be processed. An + SPI has only local significance, as defined by the creator of the + SA (usually the receiver of the packet carrying the SPI); thus an + SPI is generally viewed as an opaque bit string. However, the + creator of an SA may choose to interpret the bits in an SPI to + facilitate local processing. + + Traffic Analysis + The analysis of network traffic flow for the purpose of deducing + information that is useful to an adversary. Examples of such + information are frequency of transmission, the identities of the + conversing parties, sizes of packets, and flow identifiers + [Sch94]. + + + + + + +Kent & Seo Standards Track [Page 78] + +RFC 4301 Security Architecture for IP December 2005 + + +Appendix B: Decorrelation + + This appendix is based on work done for caching of policies in the IP + Security Policy Working Group by Luis Sanchez, Matt Condell, and John + Zao. + + Two SPD entries are correlated if there is a non-null intersection + between the values of corresponding selectors in each entry. Caching + correlated SPD entries can lead to incorrect policy enforcement. A + solution to this problem, which still allows for caching, is to + remove the ambiguities by decorrelating the entries. That is, the + SPD entries must be rewritten so that for every pair of entries there + exists a selector for which there is a null intersection between the + values in both of the entries. Once the entries are decorrelated, + there is no longer any ordering requirement on them, since only one + entry will match any lookup. The next section describes + decorrelation in more detail and presents an algorithm that may be + used to implement decorrelation. + +B.1. Decorrelation Algorithm + + The basic decorrelation algorithm takes each entry in a correlated + SPD and divides it into a set of entries using a tree structure. + The nodes of the tree are the selectors that may overlap between the + policies. At each node, the algorithm creates a branch for each of + the values of the selector. It also creates one branch for the + complement of the union of all selector values. Policies are then + formed by traversing the tree from the root to each leaf. The + policies at the leaves are compared to the set of already + decorrelated policy rules. Each policy at a leaf is either + completely overridden by a policy in the already decorrelated set and + is discarded or is decorrelated with all the policies in the + decorrelated set and is added to it. + + The basic algorithm does not guarantee an optimal set of decorrelated + entries. That is, the entries may be broken up into smaller sets + than is necessary, though they will still provide all the necessary + policy information. Some extensions to the basic algorithm are + described later to improve this and improve the performance of the + algorithm. + + C A set of ordered, correlated entries (a correlated SPD). + Ci The ith entry in C. + U The set of decorrelated entries being built from C. + Ui The ith entry in U. + Sik The kth selection for policy Ci. + Ai The action for policy Ci. + + + + +Kent & Seo Standards Track [Page 79] + +RFC 4301 Security Architecture for IP December 2005 + + + A policy (SPD entry) P may be expressed as a sequence of selector + values and an action (BYPASS, DISCARD, or PROTECT): + + Ci = Si1 x Si2 x ... x Sik -> Ai + + 1) Put C1 in set U as U1 + + For each policy Cj (j > 1) in C + + 2) If Cj is decorrelated with every entry in U, then add it to U. + + 3) If Cj is correlated with one or more entries in U, create a tree + rooted at the policy Cj that partitions Cj into a set of decorrelated + entries. The algorithm starts with a root node where no selectors + have yet been chosen. + + A) Choose a selector in Cj, Sjn, that has not yet been chosen when + traversing the tree from the root to this node. If there are no + selectors not yet used, continue to the next unfinished branch + until all branches have been completed. When the tree is + completed, go to step D. + + T is the set of entries in U that are correlated with the entry + at this node. + + The entry at this node is the entry formed by the selector + values of each of the branches between the root and this node. + Any selector values that are not yet represented by branches + assume the corresponding selector value in Cj, since the values + in Cj represent the maximum value for each selector. + + B) Add a branch to the tree for each value of the selector Sjn that + appears in any of the entries in T. (If the value is a superset + of the value of Sjn in Cj, then use the value in Cj, since that + value represents the universal set.) Also add a branch for the + complement of the union of all the values of the selector Sjn + in T. When taking the complement, remember that the universal + set is the value of Sjn in Cj. A branch need not be created + for the null set. + + C) Repeat A and B until the tree is completed. + + D) The entry to each leaf now represents an entry that is a subset + of Cj. The entries at the leaves completely partition Cj in + such a way that each entry is either completely overridden by + an entry in U, or is decorrelated with the entries in U. + + Add all the decorrelated entries at the leaves of the tree to U. + + + +Kent & Seo Standards Track [Page 80] + +RFC 4301 Security Architecture for IP December 2005 + + + 4) Get next Cj and go to 2. + + 5) When all entries in C have been processed, then U will contain an + decorrelated version of C. + + There are several optimizations that can be made to this algorithm. + A few of them are presented here. + + It is possible to optimize, or at least improve, the amount of + branching that occurs by carefully choosing the order of the + selectors used for the next branch. For example, if a selector Sjn + can be chosen so that all the values for that selector in T are equal + to or a superset of the value of Sjn in Cj, then only a single branch + needs to be created (since the complement will be null). + + Branches of the tree do not have to proceed with the entire + decorrelation algorithm. For example, if a node represents an entry + that is decorrelated with all the entries in U, then there is no + reason to continue decorrelating that branch. Also, if a branch is + completely overridden by an entry in U, then there is no reason to + continue decorrelating the branch. + + An additional optimization is to check to see if a branch is + overridden by one of the CORRELATED entries in set C that has already + been decorrelated. That is, if the branch is part of decorrelating + Cj, then check to see if it was overridden by an entry Cm, m < j. + This is a valid check, since all the entries Cm are already expressed + in U. + + Along with checking if an entry is already decorrelated in step 2, + check if Cj is overridden by any entry in U. If it is, skip it since + it is not relevant. An entry x is overridden by another entry y if + every selector in x is equal to or a subset of the corresponding + selector in entry y. + + + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 81] + +RFC 4301 Security Architecture for IP December 2005 + + +Appendix C: ASN.1 for an SPD Entry + + This appendix is included as an additional way to describe SPD + entries, as defined in Section 4.4.1. It uses ASN.1 syntax that has + been successfully compiled. This syntax is merely illustrative and + need not be employed in an implementation to achieve compliance. The + SPD description in Section 4.4.1 is normative. + + SPDModule + + {iso(1) org (3) dod (6) internet (1) security (5) mechanisms (5) + ipsec (8) asn1-modules (3) spd-module (1) } + + DEFINITIONS IMPLICIT TAGS ::= + + BEGIN + + IMPORTS + RDNSequence FROM PKIX1Explicit88 + { iso(1) identified-organization(3) + dod(6) internet(1) security(5) mechanisms(5) pkix(7) + id-mod(0) id-pkix1-explicit(18) } ; + + -- An SPD is a list of policies in decreasing order of preference + SPD ::= SEQUENCE OF SPDEntry + + SPDEntry ::= CHOICE { + iPsecEntry IPsecEntry, -- PROTECT traffic + bypassOrDiscard [0] BypassOrDiscardEntry } -- DISCARD/BYPASS + + IPsecEntry ::= SEQUENCE { -- Each entry consists of + name NameSets OPTIONAL, + pFPs PacketFlags, -- Populate from packet flags + -- Applies to ALL of the corresponding + -- traffic selectors in the SelectorLists + condition SelectorLists, -- Policy "condition" + processing Processing -- Policy "action" + } + + BypassOrDiscardEntry ::= SEQUENCE { + bypass BOOLEAN, -- TRUE BYPASS, FALSE DISCARD + condition InOutBound } + + InOutBound ::= CHOICE { + outbound [0] SelectorLists, + inbound [1] SelectorLists, + bothways [2] BothWays } + + + + +Kent & Seo Standards Track [Page 82] + +RFC 4301 Security Architecture for IP December 2005 + + + BothWays ::= SEQUENCE { + inbound SelectorLists, + outbound SelectorLists } + + NameSets ::= SEQUENCE { + passed SET OF Names-R, -- Matched to IKE ID by + -- responder + local SET OF Names-I } -- Used internally by IKE + -- initiator + + Names-R ::= CHOICE { -- IKEv2 IDs + dName RDNSequence, -- ID_DER_ASN1_DN + fqdn FQDN, -- ID_FQDN + rfc822 [0] RFC822Name, -- ID_RFC822_ADDR + keyID OCTET STRING } -- KEY_ID + + Names-I ::= OCTET STRING -- Used internally by IKE + -- initiator + + FQDN ::= IA5String + + RFC822Name ::= IA5String + + PacketFlags ::= BIT STRING { + -- if set, take selector value from packet + -- establishing SA + -- else use value in SPD entry + localAddr (0), + remoteAddr (1), + protocol (2), + localPort (3), + remotePort (4) } + + SelectorLists ::= SET OF SelectorList + + SelectorList ::= SEQUENCE { + localAddr AddrList, + remoteAddr AddrList, + protocol ProtocolChoice } + + Processing ::= SEQUENCE { + extSeqNum BOOLEAN, -- TRUE 64 bit counter, FALSE 32 bit + seqOverflow BOOLEAN, -- TRUE rekey, FALSE terminate & audit + fragCheck BOOLEAN, -- TRUE stateful fragment checking, + -- FALSE no stateful fragment checking + lifetime SALifetime, + spi ManualSPI, + algorithms ProcessingAlgs, + + + +Kent & Seo Standards Track [Page 83] + +RFC 4301 Security Architecture for IP December 2005 + + + tunnel TunnelOptions OPTIONAL } -- if absent, use + -- transport mode + + SALifetime ::= SEQUENCE { + seconds [0] INTEGER OPTIONAL, + bytes [1] INTEGER OPTIONAL } + + ManualSPI ::= SEQUENCE { + spi INTEGER, + keys KeyIDs } + + KeyIDs ::= SEQUENCE OF OCTET STRING + + ProcessingAlgs ::= CHOICE { + ah [0] IntegrityAlgs, -- AH + esp [1] ESPAlgs} -- ESP + + ESPAlgs ::= CHOICE { + integrity [0] IntegrityAlgs, -- integrity only + confidentiality [1] ConfidentialityAlgs, -- confidentiality + -- only + both [2] IntegrityConfidentialityAlgs, + combined [3] CombinedModeAlgs } + + IntegrityConfidentialityAlgs ::= SEQUENCE { + integrity IntegrityAlgs, + confidentiality ConfidentialityAlgs } + + -- Integrity Algorithms, ordered by decreasing preference + IntegrityAlgs ::= SEQUENCE OF IntegrityAlg + + -- Confidentiality Algorithms, ordered by decreasing preference + ConfidentialityAlgs ::= SEQUENCE OF ConfidentialityAlg + + -- Integrity Algorithms + IntegrityAlg ::= SEQUENCE { + algorithm IntegrityAlgType, + parameters ANY -- DEFINED BY algorithm -- OPTIONAL } + + IntegrityAlgType ::= INTEGER { + none (0), + auth-HMAC-MD5-96 (1), + auth-HMAC-SHA1-96 (2), + auth-DES-MAC (3), + auth-KPDK-MD5 (4), + auth-AES-XCBC-96 (5) + -- tbd (6..65535) + } + + + +Kent & Seo Standards Track [Page 84] + +RFC 4301 Security Architecture for IP December 2005 + + + -- Confidentiality Algorithms + ConfidentialityAlg ::= SEQUENCE { + algorithm ConfidentialityAlgType, + parameters ANY -- DEFINED BY algorithm -- OPTIONAL } + + ConfidentialityAlgType ::= INTEGER { + encr-DES-IV64 (1), + encr-DES (2), + encr-3DES (3), + encr-RC5 (4), + encr-IDEA (5), + encr-CAST (6), + encr-BLOWFISH (7), + encr-3IDEA (8), + encr-DES-IV32 (9), + encr-RC4 (10), + encr-NULL (11), + encr-AES-CBC (12), + encr-AES-CTR (13) + -- tbd (14..65535) + } + + CombinedModeAlgs ::= SEQUENCE OF CombinedModeAlg + + CombinedModeAlg ::= SEQUENCE { + algorithm CombinedModeType, + parameters ANY -- DEFINED BY algorithm} -- defined outside + -- of this document for AES modes. + + CombinedModeType ::= INTEGER { + comb-AES-CCM (1), + comb-AES-GCM (2) + -- tbd (3..65535) + } + + TunnelOptions ::= SEQUENCE { + dscp DSCP, + ecn BOOLEAN, -- TRUE Copy CE to inner header + df DF, + addresses TunnelAddresses } + + TunnelAddresses ::= CHOICE { + ipv4 IPv4Pair, + ipv6 [0] IPv6Pair } + + IPv4Pair ::= SEQUENCE { + local OCTET STRING (SIZE(4)), + remote OCTET STRING (SIZE(4)) } + + + +Kent & Seo Standards Track [Page 85] + +RFC 4301 Security Architecture for IP December 2005 + + + IPv6Pair ::= SEQUENCE { + local OCTET STRING (SIZE(16)), + remote OCTET STRING (SIZE(16)) } + + DSCP ::= SEQUENCE { + copy BOOLEAN, -- TRUE copy from inner header + -- FALSE do not copy + mapping OCTET STRING OPTIONAL} -- points to table + -- if no copy + + DF ::= INTEGER { + clear (0), + set (1), + copy (2) } + + ProtocolChoice::= CHOICE { + anyProt AnyProtocol, -- for ANY protocol + noNext [0] NoNextLayerProtocol, -- has no next layer + -- items + oneNext [1] OneNextLayerProtocol, -- has one next layer + -- item + twoNext [2] TwoNextLayerProtocol, -- has two next layer + -- items + fragment FragmentNoNext } -- has no next layer + -- info + + AnyProtocol ::= SEQUENCE { + id INTEGER (0), -- ANY protocol + nextLayer AnyNextLayers } + + AnyNextLayers ::= SEQUENCE { -- with either + first AnyNextLayer, -- ANY next layer selector + second AnyNextLayer } -- ANY next layer selector + + NoNextLayerProtocol ::= INTEGER (2..254) + + FragmentNoNext ::= INTEGER (44) -- Fragment identifier + + OneNextLayerProtocol ::= SEQUENCE { + id INTEGER (1..254), -- ICMP, MH, ICMPv6 + nextLayer NextLayerChoice } -- ICMP Type*256+Code + -- MH Type*256 + + TwoNextLayerProtocol ::= SEQUENCE { + id INTEGER (2..254), -- Protocol + local NextLayerChoice, -- Local and + remote NextLayerChoice } -- Remote ports + + + + +Kent & Seo Standards Track [Page 86] + +RFC 4301 Security Architecture for IP December 2005 + + + NextLayerChoice ::= CHOICE { + any AnyNextLayer, + opaque [0] OpaqueNextLayer, + range [1] NextLayerRange } + + -- Representation of ANY in next layer field + AnyNextLayer ::= SEQUENCE { + start INTEGER (0), + end INTEGER (65535) } + + -- Representation of OPAQUE in next layer field. + -- Matches IKE convention + OpaqueNextLayer ::= SEQUENCE { + start INTEGER (65535), + end INTEGER (0) } + + -- Range for a next layer field + NextLayerRange ::= SEQUENCE { + start INTEGER (0..65535), + end INTEGER (0..65535) } + + -- List of IP addresses + AddrList ::= SEQUENCE { + v4List IPv4List OPTIONAL, + v6List [0] IPv6List OPTIONAL } + + -- IPv4 address representations + IPv4List ::= SEQUENCE OF IPv4Range + + IPv4Range ::= SEQUENCE { -- close, but not quite right ... + ipv4Start OCTET STRING (SIZE (4)), + ipv4End OCTET STRING (SIZE (4)) } + + -- IPv6 address representations + IPv6List ::= SEQUENCE OF IPv6Range + + IPv6Range ::= SEQUENCE { -- close, but not quite right ... + ipv6Start OCTET STRING (SIZE (16)), + ipv6End OCTET STRING (SIZE (16)) } + + END + + + + + + + + + + +Kent & Seo Standards Track [Page 87] + +RFC 4301 Security Architecture for IP December 2005 + + +Appendix D: Fragment Handling Rationale + + There are three issues that must be resolved regarding processing of + (plaintext) fragments in IPsec: + + - mapping a non-initial, outbound fragment to the right SA + (or finding the right SPD entry) + - verifying that a received, non-initial fragment is authorized + for the SA via which it is received + - mapping outbound and inbound non-initial fragments to the + right SPD/cache entry, for BYPASS/DISCARD traffic + + The first and third issues arise because we need a deterministic + algorithm for mapping traffic to SAs (and SPD/cache entries). All + three issues are important because we want to make sure that + non-initial fragments that cross the IPsec boundary do not cause the + access control policies in place at the receiver (or transmitter) to + be violated. + +D.1. Transport Mode and Fragments + + First, we note that transport mode SAs have been defined to not carry + fragments. This is a carryover from RFC 2401, where transport mode + SAs always terminated at endpoints. This is a fundamental + requirement because, in the worst case, an IPv4 fragment to which + IPsec was applied might then be fragmented (as a ciphertext packet), + en route to the destination. IP fragment reassembly procedures at + the IPsec receiver would not be able to distinguish between pre-IPsec + fragments and fragments created after IPsec processing. + + For IPv6, only the sender is allowed to fragment a packet. As for + IPv4, an IPsec implementation is allowed to fragment tunnel mode + packets after IPsec processing, because it is the sender relative to + the (outer) tunnel header. However, unlike IPv4, it would be + feasible to carry a plaintext fragment on a transport mode SA, + because the fragment header in IPv6 would appear after the AH or ESP + header, and thus would not cause confusion at the receiver with + respect to reassembly. Specifically, the receiver would not attempt + reassembly for the fragment until after IPsec processing. To keep + things simple, this specification prohibits carriage of fragments on + transport mode SAs for IPv6 traffic. + + When only end systems used transport mode SAs, the prohibition on + carriage of fragments was not a problem, since we assumed that the + end system could be configured to not offer a fragment to IPsec. For + a native host implementation, this seems reasonable, and, as someone + already noted, RFC 2401 warned that a BITS implementation might have + to reassemble fragments before performing an SA lookup. (It would + + + +Kent & Seo Standards Track [Page 88] + +RFC 4301 Security Architecture for IP December 2005 + + + then apply AH or ESP and could re-fragment the packet after IPsec + processing.) Because a BITS implementation is assumed to be able to + have access to all traffic emanating from its host, even if the host + has multiple interfaces, this was deemed a reasonable mandate. + + In this specification, it is acceptable to use transport mode in + cases where the IPsec implementation is not the ultimate destination, + e.g., between two SGs. In principle, this creates a new opportunity + for outbound, plaintext fragments to be mapped to a transport mode SA + for IPsec processing. However, in these new contexts in which a + transport mode SA is now approved for use, it seems likely that we + can continue to prohibit transmission of fragments, as seen by IPsec, + i.e., packets that have an "outer header" with a non-zero fragment + offset field. For example, in an IP overlay network, packets being + sent over transport mode SAs are IP-in-IP tunneled and thus have the + necessary inner header to accommodate fragmentation prior to IPsec + processing. When carried via a transport mode SA, IPsec would not + examine the inner IP header for such traffic, and thus would not + consider the packet to be a fragment. + +D.2. Tunnel Mode and Fragments + + For tunnel mode SAs, it has always been the case that outbound + fragments might arrive for processing at an IPsec implementation. + The need to accommodate fragmented outbound packets can pose a + problem because a non-initial fragment generally will not contain the + port fields associated with a next layer protocol such as TCP, UDP, + or SCTP. Thus, depending on the SPD configuration for a given IPsec + implementation, plaintext fragments might or might not pose a + problem. + + For example, if the SPD requires that all traffic between two address + ranges is offered IPsec protection (no BYPASS or DISCARD SPD entries + apply to this address range), then it should be easy to carry + non-initial fragments on the SA defined for this address range, since + the SPD entry implies an intent to carry ALL traffic between the + address ranges. But, if there are multiple SPD entries that could + match a fragment, and if these entries reference different subsets of + port fields (vs. ANY), then it is not possible to map an outbound + non-initial fragment to the right entry, unambiguously. (If we choose + to allow carriage of fragments on transport mode SAs for IPv6, the + problems arises in that context as well.) + + This problem largely, though not exclusively, motivated the + definition of OPAQUE as a selector value for port fields in RFC 2401. + The other motivation for OPAQUE is the observation that port fields + might not be accessible due to the prior application of IPsec. For + example, if a host applied IPsec to its traffic and that traffic + + + +Kent & Seo Standards Track [Page 89] + +RFC 4301 Security Architecture for IP December 2005 + + + arrived at an SG, these fields would be encrypted. The algorithm + specified for locating the "next layer protocol" described in RFC + 2401 also motivated use of OPAQUE to accommodate an encrypted next + layer protocol field in such circumstances. Nonetheless, the primary + use of the OPAQUE value was to match traffic selector fields in + packets that did not contain port fields (non-initial fragments), or + packets in which the port fields were already encrypted (as a result + of nested application of IPsec). RFC 2401 was ambiguous in + discussing the use of OPAQUE vs. ANY, suggesting in some places that + ANY might be an alternative to OPAQUE. + + We gain additional access control capability by defining both ANY and + OPAQUE values. OPAQUE can be defined to match only fields that are + not accessible. We could define ANY as the complement of OPAQUE, + i.e., it would match all values but only for accessible port fields. + We have therefore simplified the procedure employed to locate the + next layer protocol in this document, so that we treat ESP and AH as + next layer protocols. As a result, the notion of an encrypted next + layer protocol field has vanished, and there is also no need to worry + about encrypted port fields either. And accordingly, OPAQUE will be + applicable only to non-initial fragments. + + Since we have adopted the definitions above for ANY and OPAQUE, we + need to clarify how these values work when the specified protocol + does not have port fields, and when ANY is used for the protocol + selector. Accordingly, if a specific protocol value is used as a + selector, and if that protocol has no port fields, then the port + field selectors are to be ignored and ANY MUST be specified as the + value for the port fields. (In this context, ICMP TYPE and CODE + values are lumped together as a single port field (for IKEv2 + negotiation), as is the IPv6 Mobility Header TYPE value.) If the + protocol selector is ANY, then this should be treated as equivalent + to specifying a protocol for which no port fields are defined, and + thus the port selectors should be ignored, and MUST be set to ANY. + +D.3. The Problem of Non-Initial Fragments + + For an SG implementation, it is obvious that fragments might arrive + from end systems behind the SG. A BITW implementation also may + encounter fragments from a host or gateway behind it. (As noted + earlier, native host implementations and BITS implementations + probably can avoid the problems described below.) In the worst case, + fragments from a packet might arrive at distinct BITW or SG + instantiations and thus preclude reassembly as a solution option. + Hence, in RFC 2401 we adopted a general requirement that fragments + must be accommodated in tunnel mode for all implementations. However, + + + + + +Kent & Seo Standards Track [Page 90] + +RFC 4301 Security Architecture for IP December 2005 + + + RFC 2401 did not provide a perfect solution. The use of OPAQUE as a + selector value for port fields (a SHOULD in RFC 2401) allowed an SA + to carry non-initial fragments. + + Using the features defined in RFC 2401, if one defined an SA between + two IPsec (SG or BITW) implementations using the OPAQUE value for + both port fields, then all non-initial fragments matching the + source/destination (S/D) address and protocol values for the SA would + be mapped to that SA. Initial fragments would NOT map to this SA, if + we adopt a strict definition of OPAQUE. However, RFC 2401 did not + provide detailed guidance on this and thus it may not have been + apparent that use of this feature would essentially create a + "non-initial fragment only" SA. + + In the course of discussing the "fragment-only" SA approach, it was + noted that some subtle problems, problems not considered in RFC 2401, + would have to be avoided. For example, an SA of this sort must be + configured to offer the "highest quality" security services for any + traffic between the indicated S/D addresses (for the specified + protocol). This is necessary to ensure that any traffic captured by + the fragment-only SA is not offered degraded security relative to + what it would have been offered if the packet were not fragmented. A + possible problem here is that we may not be able to identify the + "highest quality" security services defined for use between two IPsec + implementation, since the choice of security protocols, options, and + algorithms is a lattice, not a totally ordered set. (We might safely + say that BYPASS < AH < ESP w/integrity, but it gets complicated if we + have multiple ESP encryption or integrity algorithm options.) So, one + has to impose a total ordering on these security parameters to make + this work, but this can be done locally. + + However, this conservative strategy has a possible performance + downside. If most traffic traversing an IPsec implementation for a + given S/D address pair (and specified protocol) is bypassed, then a + fragment-only SA for that address pair might cause a dramatic + increase in the volume of traffic afforded crypto processing. If the + crypto implementation cannot support high traffic rates, this could + cause problems. (An IPsec implementation that is capable of line rate + or near line rate crypto performance would not be adversely affected + by this SA configuration approach. Nonetheless, the performance + impact is a potential concern, specific to implementation + capabilities.) + + Another concern is that non-initial fragments sent over a dedicated + SA might be used to effect overlapping reassembly attacks, when + combined with an apparently acceptable initial fragment. (This sort + of attack assumes creation of bogus fragments and is not a side + effect of normal fragmentation.) This concern is easily addressed in + + + +Kent & Seo Standards Track [Page 91] + +RFC 4301 Security Architecture for IP December 2005 + + + IPv4, by checking the fragment offset value to ensure that no + non-initial fragments have a small enough offset to overlap port + fields that should be contained in the initial fragment. Recall that + the IPv4 MTU minimum is 576 bytes, and the max IP header length is 60 + bytes, so any ports should be present in the initial fragment. If we + require all non-initial fragments to have an offset of, say, 128 or + greater, just to be on the safe side, this should prevent successful + attacks of this sort. If the intent is only to protect against this + sort of reassembly attack, this check need be implemented only by a + receiver. + + IPv6 also has a fragment offset, carried in the fragmentation + extension header. However, IPv6 extension headers are variable in + length and there is no analogous max header length value that we can + use to check non-initial fragments, to reject ones that might be used + for an attack of the sort noted above. A receiver would need to + maintain state analogous to reassembly state, to provide equivalent + protection. So, only for IPv4 is it feasible to impose a fragment + offset check that would reject attacks designed to circumvent port + field checks by IPsec (or firewalls) when passing non-initial + fragments. + + Another possible concern is that in some topologies and SPD + configurations this approach might result in an access control + surprise. The notion is that if we create an SA to carry ALL + (non-initial) fragments, then that SA would carry some traffic that + might otherwise arrive as plaintext via a separate path, e.g., a path + monitored by a proxy firewall. But, this concern arises only if the + other path allows initial fragments to traverse it without requiring + reassembly, presumably a bad idea for a proxy firewall. Nonetheless, + this does represent a potential problem in some topologies and under + certain assumptions with respect to SPD and (other) firewall rule + sets, and administrators need to be warned of this possibility. + + A less serious concern is that non-initial fragments sent over a + non-initial fragment-only SA might represent a DoS opportunity, in + that they could be sent when no valid, initial fragment will ever + arrive. This might be used to attack hosts behind an SG or BITW + device. However, the incremental risk posed by this sort of attack, + which can be mounted only by hosts behind an SG or BITW device, seems + small. + + If we interpret the ANY selector value as encompassing OPAQUE, then a + single SA with ANY values for both port fields would be able to + accommodate all traffic matching the S/D address and protocol traffic + selectors, an alternative to using the OPAQUE value. But, using ANY + + + + + +Kent & Seo Standards Track [Page 92] + +RFC 4301 Security Architecture for IP December 2005 + + + here precludes multiple, distinct SAs between the same IPsec + implementations for the same address pairs and protocol. So, it is + not an exactly equivalent alternative. + + Fundamentally, fragment handling problems arise only when more than + one SA is defined with the same S/D address and protocol selector + values, but with different port field selector values. + +D.4. BYPASS/DISCARD Traffic + + We also have to address the non-initial fragment processing issue for + BYPASS/DISCARD entries, independent of SA processing. This is + largely a local matter for two reasons: + + 1) We have no means for coordinating SPD entries for such + traffic between IPsec implementations since IKE is not + invoked. + 2) Many of these entries refer to traffic that is NOT + directed to or received from a location that is using + IPsec. So there is no peer IPsec implementation with + which to coordinate via any means. + + However, this document should provide guidance here, consistent with + our goal of offering a well-defined, access control function for all + traffic, relative to the IPsec boundary. To that end, this document + says that implementations MUST support fragment reassembly for + BYPASS/DISCARD traffic when port fields are specified. An + implementation also MUST permit a user or administrator to accept + such traffic or reject such traffic using the SPD conventions + described in Section 4.4.1. The concern is that BYPASS of a + cleartext, non-initial fragment arriving at an IPsec implementation + could undermine the security afforded IPsec-protected traffic + directed to the same destination. For example, consider an IPsec + implementation configured with an SPD entry that calls for + IPsec-protection of traffic between a specific source/destination + address pair, and for a specific protocol and destination port, e.g., + TCP traffic on port 23 (Telnet). Assume that the implementation also + allows BYPASS of traffic from the same source/destination address + pair and protocol, but for a different destination port, e.g., port + 119 (NNTP). An attacker could send a non-initial fragment (with a + forged source address) that, if bypassed, could overlap with + IPsec-protected traffic from the same source and thus violate the + integrity of the IPsec-protected traffic. Requiring stateful + fragment checking for BYPASS entries with non-trivial port ranges + prevents attacks of this sort. + + + + + + +Kent & Seo Standards Track [Page 93] + +RFC 4301 Security Architecture for IP December 2005 + + +D.5. Just say no to ports? + + It has been suggested that we could avoid the problems described + above by not allowing port field selectors to be used in tunnel mode. + But the discussion above shows this to be an unnecessarily stringent + approach, i.e., since no problems arise for the native OS and BITS + implementations. Moreover, some WG members have described scenarios + where use of tunnel mode SAs with (non-trivial) port field selectors + is appropriate. So the challenge is defining a strategy that can + deal with this problem in BITW and SG contexts. Also note that + BYPASS/DISCARD entries in the SPD that make use of ports pose the + same problems, irrespective of tunnel vs. transport mode notions. + + Some folks have suggested that a firewall behind an SG or BITW should + be left to enforce port-level access controls and the effects of + fragmentation. However, this seems to be an incongruous suggestion + in that elsewhere in IPsec (e.g., in IKE payloads) we are concerned + about firewalls that always discard fragments. If many firewalls + don't pass fragments in general, why should we expect them to deal + with fragments in this case? So, this analysis rejects the suggestion + of disallowing use of port field selectors with tunnel mode SAs. + +D.6. Other Suggested Solutions + + One suggestion is to reassemble fragments at the sending IPsec + implementation, and thus avoid the problem entirely. This approach + is invisible to a receiver and thus could be adopted as a purely + local implementation option. + + A more sophisticated version of this suggestion calls for + establishing and maintaining minimal state from each initial fragment + encountered, to allow non-initial fragments to be matched to the + right SAs or SPD/cache entries. This implies an extension to the + current processing model (and the old one). The IPsec implementation + would intercept all fragments; capture Source/Destination IP + addresses, protocol, packet ID, and port fields from initial + fragments; and then use this data to map non-initial fragments to SAs + that require port fields. If this approach is employed, the receiver + needs to employ an equivalent scheme, as it too must verify that + received fragments are consistent with SA selector values. A + non-initial fragment that arrives prior to an initial fragment could + be cached or discarded, awaiting arrival of the corresponding initial + fragment. + + A downside of both approaches noted above is that they will not + always work. When a BITW device or SG is configured in a topology + that might allow some fragments for a packet to be processed at + different SGs or BITW devices, then there is no guarantee that all + + + +Kent & Seo Standards Track [Page 94] + +RFC 4301 Security Architecture for IP December 2005 + + + fragments will ever arrive at the same IPsec device. This approach + also raises possible processing problems. If the sender caches + non-initial fragments until the corresponding initial fragment + arrives, buffering problems might arise, especially at high speeds. + If the non-initial fragments are discarded rather than cached, there + is no guarantee that traffic will ever pass, e.g., retransmission + will result in different packet IDs that cannot be matched with prior + transmissions. In any case, housekeeping procedures will be needed + to decide when to delete the fragment state data, adding some + complexity to the system. Nonetheless, this is a viable solution in + some topologies, and these are likely to be common topologies. + + The Working Group rejected an earlier version of the convention of + creating an SA to carry only non-initial fragments, something that + was supported implicitly under the RFC 2401 model via use of OPAQUE + port fields, but never clearly articulated in RFC 2401. The + (rejected) text called for each non-initial fragment to be treated as + protocol 44 (the IPv6 fragment header protocol ID) by the sender and + receiver. This approach has the potential to make IPv4 and IPv6 + fragment handling more uniform, but it does not fundamentally change + the problem, nor does it address the issue of fragment handling for + BYPASS/DISCARD traffic. Given the fragment overlap attack problem + that IPv6 poses, it does not seem that it is worth the effort to + adopt this strategy. + +D.7. Consistency + + Earlier, the WG agreed to allow an IPsec BITS, BITW, or SG to perform + fragmentation prior to IPsec processing. If this fragmentation is + performed after SA lookup at the sender, there is no "mapping to the + right SA" problem. But, the receiver still needs to be able to + verify that the non-initial fragments are consistent with the SA via + which they are received. Since the initial fragment might be lost en + route, the receiver encounters all of the potential problems noted + above. Thus, if we are to be consistent in our decisions, we need to + say how a receiver will deal with the non-initial fragments that + arrive. + +D.8. Conclusions + + There is no simple, uniform way to handle fragments in all contexts. + Different approaches work better in different contexts. Thus, this + document offers 3 choices -- one MUST and two MAYs. At some point in + the future, if the community gains experience with the two MAYs, they + may become SHOULDs or MUSTs or other approaches may be proposed. + + + + + + +Kent & Seo Standards Track [Page 95] + +RFC 4301 Security Architecture for IP December 2005 + + +Appendix E: Example of Supporting Nested SAs via SPD and Forwarding + Table Entries + + This appendix provides an example of how to configure the SPD and + forwarding tables to support a nested pair of SAs, consistent with + the new processing model. For simplicity, this example assumes just + one SPD-I. + + The goal in this example is to support a transport mode SA from A to + C, carried over a tunnel mode SA from A to B. For example, A might + be a laptop connected to the public Internet, B might be a firewall + that protects a corporate network, and C might be a server on the + corporate network that demands end-to-end authentication of A's + traffic. + + +---+ +---+ +---+ + | A |=====| B | | C | + | |------------| | + | |=====| | | | + +---+ +---+ +---+ + + A's SPD contains entries of the form: + + Next Layer + Rule Local Remote Protocol Action + ---- ----- ------ ---------- ----------------------- + 1 C A ESP BYPASS + 2 A C ICMP,ESP PROTECT(ESP,tunnel,integr+conf) + 3 A C ANY PROTECT(ESP,transport,integr-only) + 4 A B ICMP,IKE BYPASS + + A's unprotected-side forwarding table is set so that outbound packets + destined for C are looped back to the protected side. A's + protected-side forwarding table is set so that inbound ESP packets + are looped back to the unprotected side. A's forwarding tables + contain entries of the form: + + Unprotected-side forwarding table + + Rule Local Remote Protocol Action + ---- ----- ------ -------- --------------------------- + 1 A C ANY loop back to protected side + 2 A B ANY forward to B + + + + + + + + +Kent & Seo Standards Track [Page 96] + +RFC 4301 Security Architecture for IP December 2005 + + + Protected-side forwarding table + + Rule Local Remote Protocol Action + ---- ----- ------ -------- ----------------------------- + 1 A C ESP loop back to unprotected side + + An outbound TCP packet from A to C would match SPD rule 3 and have + transport mode ESP applied to it. The unprotected-side forwarding + table would then loop back the packet. The packet is compared + against SPD-I (see Figure 2), matches SPD rule 1, and so it is + BYPASSed. The packet is treated as an outbound packet and compared + against the SPD for a third time. This time it matches SPD rule 2, + so ESP is applied in tunnel mode. This time the forwarding table + doesn't loop back the packet, because the outer destination address + is B, so the packet goes out onto the wire. + + An inbound TCP packet from C to A is wrapped in two ESP headers; the + outer header (ESP in tunnel mode) shows B as the source, whereas the + inner header (ESP transport mode) shows C as the source. Upon + arrival at A, the packet would be mapped to an SA based on the SPI, + have the outer header removed, and be decrypted and + integrity-checked. Then it would be matched against the SAD + selectors for this SA, which would specify C as the source and A as + the destination, derived from SPD rule 2. The protected-side + forwarding function would then send it back to the unprotected side + based on the addresses and the next layer protocol (ESP), indicative + of nesting. It is compared against SPD-O (see Figure 3) and found to + match SPD rule 1, so it is BYPASSed. The packet is mapped to an SA + based on the SPI, integrity-checked, and compared against the SAD + selectors derived from SPD rule 3. The forwarding function then + passes it up to the next layer, because it isn't an ESP packet. + + + + + + + + + + + + + + + + + + + + +Kent & Seo Standards Track [Page 97] + +RFC 4301 Security Architecture for IP December 2005 + + +References + +Normative References + + [BBCDWW98] Blake, S., Black, D., Carlson, M., Davies, E., Wang, + Z., and W. Weiss, "An Architecture for Differentiated + Service", RFC 2475, December 1998. + + [Bra97] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Level", BCP 14, RFC 2119, March 1997. + + [CD98] Conta, A. and S. Deering, "Internet Control Message + Protocol (ICMPv6) for the Internet Protocol Version 6 + (IPv6) Specification", RFC 2463, December 1998. + + [DH98] Deering, S., and R. Hinden, "Internet Protocol, + Version 6 (IPv6) Specification", RFC 2460, December + 1998. + + [Eas05] 3rd Eastlake, D., "Cryptographic Algorithm + Implementation Requirements For Encapsulating Security + Payload (ESP) and Authentication Header (AH)", RFC + 4305, December 2005. + + [HarCar98] Harkins, D. and D. Carrel, "The Internet Key Exchange + (IKE)", RFC 2409, November 1998. + + [Kau05] Kaufman, C., Ed., "The Internet Key Exchange (IKEv2) + Protocol", RFC 4306, December 2005. + + [Ken05a] Kent, S., "IP Encapsulating Security Payload (ESP)", + RFC 4303, December 2005. + + [Ken05b] Kent, S., "IP Authentication Header", RFC 4302, + December 2005. + + [MD90] Mogul, J. and S. Deering, "Path MTU discovery", RFC + 1191, November 1990. + + [Mobip] Johnson, D., Perkins, C., and J. Arkko, "Mobility + Support in IPv6", RFC 3775, June 2004. + + [Pos81a] Postel, J., "Internet Protocol", STD 5, RFC 791, + September 1981. + + [Pos81b] Postel, J., "Internet Control Message Protocol", RFC + 792, September 1981. + + + + +Kent & Seo Standards Track [Page 98] + +RFC 4301 Security Architecture for IP December 2005 + + + [Sch05] Schiller, J., "Cryptographic Algorithms for use in the + Internet Key Exchange Version 2 (IKEv2)", RFC 4307, + December 2005. + + [WaKiHo97] Wahl, M., Kille, S., and T. Howes, "Lightweight + Directory Access Protocol (v3): UTF-8 String + Representation of Distinguished Names", RFC 2253, + December 1997. + +Informative References + + [CoSa04] Condell, M., and L. Sanchez, "On the Deterministic + Enforcement of Un-ordered Security Policies", BBN + Technical Memo 1346, March 2004. + + [FaLiHaMeTr00] Farinacci, D., Li, T., Hanks, S., Meyer, D., and P. + Traina, "Generic Routing Encapsulation (GRE)", RFC + 2784, March 2000. + + [Gro02] Grossman, D., "New Terminology and Clarifications for + Diffserv", RFC 3260, April 2002. + [HC03] Holbrook, H. and B. Cain, "Source Specific Multicast + for IP", Work in Progress, November 3, 2002. + + [HA94] Haller, N. and R. Atkinson, "On Internet + Authentication", RFC 1704, October 1994. + + [NiBlBaBL98] Nichols, K., Blake, S., Baker, F., and D. Black, + "Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers", RFC 2474, + December 1998. + + [Per96] Perkins, C., "IP Encapsulation within IP", RFC 2003, + October 1996. + + [RaFlBl01] Ramakrishnan, K., Floyd, S., and D. Black, "The + Addition of Explicit Congestion Notification (ECN) to + IP", RFC 3168, September 2001. + + [RFC2401] Kent, S. and R. Atkinson, "Security Architecture for + the Internet Protocol", RFC 2401, November 1998. + + [RFC2983] Black, D., "Differentiated Services and Tunnels", RFC + 2983, October 2000. + + [RFC3547] Baugher, M., Weis, B., Hardjono, T., and H. Harney, + "The Group Domain of Interpretation", RFC 3547, July + 2003. + + + +Kent & Seo Standards Track [Page 99] + +RFC 4301 Security Architecture for IP December 2005 + + + [RFC3740] Hardjono, T. and B. Weis, "The Multicast Group + Security Architecture", RFC 3740, March 2004. + + [RaCoCaDe04] Rajahalme, J., Conta, A., Carpenter, B., and S. + Deering, "IPv6 Flow Label Specification", RFC 3697, + March 2004. + + [Sch94] Schneier, B., Applied Cryptography, Section 8.6, John + Wiley & Sons, New York, NY, 1994. + + [Shi00] Shirey, R., "Internet Security Glossary", RFC 2828, + May 2000. + + [SMPT01] Shacham, A., Monsour, B., Pereira, R., and M. Thomas, + "IP Payload Compression Protocol (IPComp)", RFC 3173, + September 2001. + + [ToEgWa04] Touch, J., Eggert, L., and Y. Wang, "Use of IPsec + Transport Mode for Dynamic Routing", RFC 3884, + September 2004. + + [VK83] V.L. Voydock & S.T. Kent, "Security Mechanisms in + High-level Networks", ACM Computing Surveys, Vol. 15, + No. 2, June 1983. + +Authors' Addresses + + Stephen Kent + BBN Technologies + 10 Moulton Street + Cambridge, MA 02138 + USA + + Phone: +1 (617) 873-3988 + EMail: kent@bbn.com + + + Karen Seo + BBN Technologies + 10 Moulton Street + Cambridge, MA 02138 + USA + + Phone: +1 (617) 873-3152 + EMail: kseo@bbn.com + + + + + + +Kent & Seo Standards Track [Page 100] + +RFC 4301 Security Architecture for IP December 2005 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2005). + + 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- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + +Kent & Seo Standards Track [Page 101] + |