| |
| |
| |
| |
| |
| |
| 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] |
| |