One document matched: draft-ietf-rohc-ipsec-extensions-hcoipsec-05.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt'?>
<?rfc toc='yes'?>
<?rfc tocompact='yes'?>
<?rfc tocdepth='6'?>
<?rfc symrefs='yes'?>
<?rfc compact='yes'?>
<rfc ipr="pre5378Trust200902" docName="draft-ietf-rohc-ipsec-extensions-hcoipsec-05">
<front>
<title abbrev="IPsec Extensions to Support ROHCoIPsec">IPsec Extensions to Support Robust Header Compression over IPsec (ROHCoIPsec)</title>
<date month="August" year="2009"/>
<author initials="E." surname="Ertekin" fullname="Emre Ertekin">
<organization>Booz Allen Hamilton</organization>
<address>
<postal>
<street>13200 Woodland Park Dr.</street>
<city>Herndon</city>
<region>VA</region>
<code>20171</code>
<country>US</country>
</postal>
<email>ertekin_emre@bah.com</email>
</address>
</author>
<author initials="C." surname="Christou" fullname="Chris Christou">
<organization>Booz Allen Hamilton</organization>
<address>
<postal>
<street>13200 Woodland Park Dr.</street>
<city>Herndon</city>
<region>VA</region>
<code>20171</code>
<country>US</country>
</postal>
<email>christou_chris@bah.com</email>
</address>
</author>
<author initials="C." surname="Bormann" fullname="Carsten Bormann">
<organization>Universitaet Bremen TZI</organization>
<address>
<postal>
<street>Postfach 330440</street>
<city>Bremen D-28334</city>
<country>Germany</country>
</postal>
<email>cabo@tzi.org</email>
</address>
</author>
<abstract>
<t>
Integrating ROHC with IPsec (ROHCoIPsec) offers the combined benefits
of IP security services and efficient bandwidth utilization. However,
in order to integrate ROHC with IPsec, extensions to the SPD and SAD are required.
This document describes the IPsec extensions required to support ROHCoIPsec.
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>
Using IPsec ([IPSEC]) protection offers various security services for
IP traffic. However, these
benefits come at the cost of additional packet headers, which
increase packet overhead. As described in [ROHCOIPSEC], Robust
Header Compression (ROHC [ROHC]) can be used with IPsec to reduce the
overhead associated with IPsec-protected packets.
</t>
<t>
IPsec-protected traffic is carried over Security
Associations (SAs), whose parameters are negotiated on a case-by-case
basis. The Security Policy Database (SPD) specifies the services
that are to be offered to IP datagrams, and the parameters associated
with SAs that have been established are stored in the Security
Association Database (SAD). For ROHCoIPsec,
various extensions to the SPD and SAD that incorporate ROHC-relevant
parameters are required.
</t>
<t>
In addition, three extensions to IPsec processing are
required. First, a mechanism for identifying ROHC packets must be
defined. Second, a mechanism to ensure the integrity of the
decompressed packet is needed. Finally, the order of the inbound and outbound
processing must be enumerated when nesting IP Compression (IPComp [IPCOMP]), ROHC, and IPsec processing.
</t>
</section>
<section title="Extensions to IPsec Databases">
<t>
The following subsections specify extensions to the SPD and the SAD
to support ROHCoIPsec.
</t>
<section title="Security Policy Database (SPD)">
<t>
In general, the SPD is responsible for specifying the security
services that are offered to IP datagrams. Entries in the SPD
specify how to derive the corresponding values for SAD entries. To
support ROHC, the SPD must be extended to include per-channel ROHC
parameters. Together, the existing IPsec SPD parameters and the
ROHC parameters will dictate the security and header compression services that are provided to
packets.
</t>
<t>
The fields contained within each SPD entry are defined in [IPSEC],
Section 4.4.1.2. To support ROHC, several processing info fields
must be added to the SPD; these fields contain information regarding
the ROHC profiles and channel parameters supported by the local ROHC
instance. </t>
<t>
The following ROHC channel parameters must be
included if the processing info field in the SPD is set to PROTECT:
</t>
<t></t>
<list style="empty">
<t>
MAX_CID: The field indicates the highest context ID that will be decompressed by the local decompressor.
MAX_CID must be at least 0 and at most 16383 (The value 0 implies having one context).
</t>
</list>
<t></t>
<list style="empty">
<t>
MRRU: The MRRU parameter indicates the the size of the largest reconstructed unit (in octets) that
the local decompressor is expected to reassemble from ROHC segments. This size includes the CRC and the ROHC ICV.
NOTE: Since in-order delivery of ROHC packets cannot be guaranteed, the MRRU parameter is recommended
to be set to 0 (as stated in Section 5.2.5.1 of [ROHC] and Section 6.1 of [ROHCV2]), which indicates
that no segment headers are allowed on the ROHCoIPsec channel.
</t>
</list>
<t></t>
<list style="empty">
<t>
PROFILES: This field is a list of ROHC profiles supported by the local
decompressor. Possible values for this list
are contained in the [ROHCPROF] registry.
</t>
</list>
<t>
In addition to these ROHC channel parameters, a field within the SPD
is required to store a list of integrity algorithms supported
by the ROHCoIPsec instance:
</t>
<t><list style="empty">
<t>
INTEGRITY ALGORITHM: This field is a list of integrity algorithms supported
by the ROHCoIPsec instance. This will be used
by the ROHC process to ensure that packet headers are properly
decompressed (see Section 3.2). Algorithms that must be supported are specified in Section 3.2 of [CRYPTO-ALG]. More explicitly, the implementation conformance requirements for authentication algorithms are as follows:</t>
<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
Requirement Algorithm
----------- ----------------
Must AUTH_HMAC_SHA1_96
Should+ AUTH_AES_XCBC_MAC_96
May AUTH_HMAC_MD5_96
]]></artwork>
</list></t>
<t>
Several other ROHC channel parameters are omitted from the SPD,
because they are set implicitly. The omitted channel parameters are
LARGE_CIDS and FEEDBACK_FOR. The LARGE_CIDS channel parameter
is set implicitly, based on the value of MAX_CID (e.g. if MAX_CID is
<= 15, LARGE_CIDS is assumed to be 0). Finally, the ROHC FEEDBACK_FOR
channel parameter is set implicitly to the ROHC channel associated
with the SA in the reverse direction. If an SA in the reverse direction
does not exist, the FEEDBACK_FOR channel parameter is not set, and
ROHC must not operate in bidirectional Mode.
</t>
</section>
<section title="Security Association Database (SAD)">
<t>
Each entry within the SAD defines the parameters associated with each
established SA. Unless the "populate from packet" (PFP) flag is
asserted for a particular field, SAD entries are determined by the
corresponding SPD entries during the creation of the SA.
</t>
<t>
The data items contained within the SAD are defined in [IPSEC],
Section 4.4.2.1. To support ROHC, this list of data items is
augmented to include a "ROHC Data Item" that contains the parameters used by ROHC instance.
The ROHC Data Item exists for both inbound and outbound SAs.
</t>
<t>
The ROHC Data Item includes the ROHC channel parameters for the SA. These channel parameters
(i.e., MAX_CID, PROFILES, MRRU) are enumerated above in Section 2.1. For inbound SAs, the ROHC Data Item
includes ROHC channel parameters that are used by the local decompressor instance; conversely, for outbound SAs,
the ROHC Data Item includes ROHC channel parameters that are used by local compressor instance.
</t>
<t>
In addition to these ROHC channel parameters, the ROHC Data Item for both inbound and outbound SAs includes two
additional parameters. Specifically, these parameters store the integrity algorithm and respective key used by ROHC
(see Section 3.2). The integrity algorithm and its associated key are used to calculate a ROHC ICV; this ICV
is used to verify the packet headers post-decompression.
</t>
<t>
Finally, for inbound SAs, the ROHC Data Item includes a FEEDBACK_FOR parameter. The parameter is a
reference to a ROHC channel in the opposite direction (i.e., the outbound SA) between the same compression endpoints.
A ROHC channel associated with an inbound SA and a ROHC channel associated with an outbound SA may
be coupled to form a Bi-directional ROHC channel as defined in Section 6.1 and Section 6.2 in [ROHC-TERM].
</t>
<t>"ROHC Data Item" values
may be initialized manually (i.e., administratively configured for
manual SAs), or initialized via a key exchange protocol (e.g. IKEv2
[IKEV2]) that has been extended to support the signaling of ROHC
parameters [IKEV2EXT].</t>
</section>
</section>
<section title="Extensions to IPsec Processing">
<section title="Addition to the IANA Protocol Numbers Registry">
<t>
In order to demultiplex header-compressed from uncompressed traffic
on a ROHC-enabled SA, a "ROHC" value must be reserved in the IANA
Protocol Numbers registry. If an outbound packet has a compressed
header, the Next Header field of the security protocol header (e.g.,
AH [AH], ESP [ESP]) must be set to the "ROHC" protocol identifier. If
the packet header has not been compressed by ROHC, the Next Header
field does not contain the "ROHC" protocol identifier. Conversely,
for an inbound packet, the value of the security protocol Next
Header field is checked to determine if the packet includes a
ROHC header, in order to determine if it requires ROHC decompression.
</t>
<t>
Use of the "ROHC" protocol identifier for purposes other than
ROHCOIPsec is currently not defined. Future protocols
that make use of the allocation (e.g., other applications of ROHC in multi-hop environments)
require specification of the logical compression channel between the ROHC
compressor and decompressor. In addition, these specifications will require
the investigation of the security considerations associated
with use of the "ROHC" protocol identifier outside the context of the next-header
field of security protocol headers.
</t>
</section>
<section title="Verifying the Integrity of Decompressed Packet Headers">
<t>
Since ROHC is inherently a lossy compression algorithm, ROHCoIPsec may use an additional Integrity Algorithm (and respective
key) to compute a second Integrity Check Value (ICV) for the
uncompressed packet. This ICV is computed over the uncompressed IP header, as well at the higher-layer headers and the packet payload, and is appended to the ROHC-compressed packet. At the decompressor, the
decompressed packet (including the uncompressed IP header, higher-layer headers, and packet payload; but not including the authentication data) will be used with the integrity algorithm (and
its respective key) to compute a value that will be compared to the appended
ICV. If these values are not identical, the decompressed packet must
be dropped by the decompressor.
</t>
<t>Figure 1 illustrates the composition of a ROHCoIPsec-processed IPv4 packet. In the example, TCP/IP compression is applied, and the packet is processed with tunnel mode ESP.</t>
<figure>
<preamble> </preamble>
<artwork><![CDATA[
BEFORE COMPRESSION AND APPLICATION OF ESP
----------------------------
IPv4 |orig IP hdr | | |
|(any options)| TCP | Data |
----------------------------
AFTER ROHCOIPSEC COMPRESSION AND APPLICATION OF ESP
------------------------------------------------------
IPv4 | new IP hdr | | Cmpr. | | ROHC | ESP | ESP|
|(any options)| ESP | Hdr. |Data| ICV |Trailer| ICV|
------------------------------------------------------
]]></artwork>
<postamble>Figure 1. Example of a ROHCoIPsec-processed packet.</postamble>
</figure>
<t>
Note: The authentication data must not be included in the calculation of the ICV.</t>
<section title="ICV Computation and Integrity Verification">
<t>
In order to correctly verify the integrity of the decompressed packets, the processing steps for ROHCoIPsec must be implemented in a specific order, as given below.
</t>
<t>For outbound packets that are processed by ROHC and IPsec-protected:
<list style="symbols">
<t>
Compute an ICV for the uncompressed packet with the negotiated (ROHC) integrity algorithm and its respective key
</t>
<t>
Compress the packet headers (as specified by the ROHC process)
</t>
<t>
Append the ICV to the compressed packet
</t>
<t>
Apply AH or ESP processing to the packet, as specified in the appropriate SAD entry
</t>
</list>
</t>
<t>For inbound packets that are to be decompressed by ROHC:
<list style="symbols">
<t>
Apply AH or ESP processing, as specified in the appropriate SAD entry
</t>
<t>
Remove the ICV from the packet
</t>
<t>
Decompress the packet header(s)
</t>
<t>
Compute an ICV for the decompressed packet with the negotiated (ROHC) integrity algorithm and its respective key
</t>
<t>
Compare the computed ICV to the original ICV calculated at the compressor: if these two values differ, the packet must be dropped; otherwise resume IPsec processing
</t>
</list>
</t>
</section>
</section>
<section title="ROHC Segmentation and IPsec Tunnel MTU">
<t>In certain scenarios, a ROHCoIPsec-processed packet may exceed the size of the IPsec tunnel MTU. [IPSEC] currently stipulates the following for outbound
traffic that exceeds the SA PMTU:</t>
<t><artwork><![CDATA[ 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.
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.
]]></artwork></t>
<t>For ROHCOIPsec, Cases 1 and 3, and the post-encryption fragmentation for Case 2 are employed. However, since current
ROHC compression profiles do not support the compression of IP packet fragments, pre-encryption fragmentation is not compatible
with the current set of ROHC profiles. In place of pre-encryption fragmentation, ROHC segmentation may be used at the compressor to
divide the packet, where each segment conforms to the tunnel MTU. However, because in-order delivery of ROHC segments is
not guaranteed, the use of ROHC segmentation is not recommended.</t>
<t>If the compressor determines that the compressed packet exceeds the tunnel MTU, ROHC segmentation may be applied to the compressed packet
before AH or ESP processing. This determination can be made by comparing the anticipated ROHCoIPsec packet size to the Path MTU data item
specified in the SAD entry. If the MRRU for the channel is non-zero, the compressor applies ROHC segmentation. The segmentation process should account for the additional overhead imposed by IPsec
process (e.g., AH or ESP overhead, crypto synchronization data, the additional IP header, etc.) such that the final IPsec-processed segments are
less than the tunnel MTU. After segmentation, each ROHC segment receives AH or ESP processing. </t>
<t>For channels where the MRRU is non-zero, the ROHCoIPsec decompressor must re-assemble the ROHC segments that are received. To accomplish
this, the decompressor must identify the ROHC segments (as documented in Section 5.2.6 of [ROHC]), and attempt reconstruction using the ROHC segmentation
protocol (Section 5.2.5 of [ROHC]). If reconstruction fails, the packet must be discarded.</t>
<t>As stated in Section 3.2.1, if the ROHC integrity algorithm is used to verify the decompression of packet headers, this ICV is appended to the compressed packet.
If ROHC segmentation is performed, the segmentation algorithm is executed on the compressed packet and the appended ICV. Note that the ICV is not appended to each ROHC segment.</t>
</section>
<section title="Nested IPComp and ROHCoIPsec Processing">
<t>
IPComp ([IPCOMP]) is another mechanism that can be implemented to
reduce the size of an IP datagram. If IPComp and ROHCoIPsec are
implemented in a nested fashion, the following steps must be followed for outbound and inbound packets.
</t>
<t>
For outbound packets that are to be processed by IPcomp and ROHC:
<list style="symbols">
<t>
The ICV is computed for the uncompressed packet, and the appropriate ROHC compression profile is applied to the packet
</t>
<t>
IPComp is applied, and the packet is sent to the IPsec process
</t>
<t>
The security protocol is applied to the packet
</t>
</list>
</t>
<t>
Conversely, for inbound packets that are to be both ROHC- and IPcomp-decompressed:
<list style="symbols">
<t>
A packet received on a ROHC-enabled SA is IPsec-processed
</t>
<t>
The datagram is decompressed based on the appropriate IPComp algorithm
</t>
<t>
The packet is sent to the ROHC module for header decompression and integrity verification
</t>
</list>
</t>
</section>
</section>
<section title="Security Considerations">
<t>
A ROHCoIPsec implementer should consider the strength of protection
provided by the integrity check algorithm used to verify the valid
decompression of ROHC-compressed packets. Failure to implement a
strong integrity check algorithm increases the probability of an
invalidly decompressed packet to be forwarded by a ROHCoIPsec device
into a protected domain.
</t>
<t>
The implementation of ROHCoIPsec may increase the susceptibility for traffic
flow analysis, where an attacker can
identify new traffic flows by monitoring the relative size of the
encrypted packets (i.e. a group of "long" packets, followed by a long
series of "short" packets may indicate a new flow for some ROHCoIPsec
implementations). To mitigate this concern, ROHC padding mechanisms
may be used to arbitrarily add padding to transmitted packets to
randomize packet sizes. This technique, however, reduces the overall
efficiency benefit offered by header compression.
</t>
</section>
<section title="IANA Considerations">
<t>
IANA is requested to allocate one value within the "Protocol Numbers"
registry [PROTOCOL] for "ROHC". This value will be used to indicate
that the next level protocol header is a ROHC header.
</t>
</section>
<section title="Acknowledgments">
<t>
The authors would like to thank Mr. Sean O'Keeffe, Mr. James Kohler,
Ms. Linda Noone of the Department of Defense, and Mr. A. Rich Espy of
OPnet for their contributions and support for developing this
document. </t>
<t>The authors would also like to thank Mr. Yoav Nir, and Mr.
Robert A Stangarone Jr.: both served as committed document reviewers
for this specification.</t>
<t>Finally, the authors would like to thank the following for their numerous reviews and comments to
this document:</t>
<t>
<list style="symbols">
<t>Mr. Magnus Westerlund</t>
<t>Dr. Stephen Kent</t>
<t>Mr. Lars-Erik Jonsson</t>
<t>Mr. Carl Knutsson</t>
<t>Mr. Pasi Eronen</t>
<t>Dr. Jonah Pezeshki</t>
<t>Mr. Tero Kivinen</t>
<t>Dr. Joseph Touch</t>
<t>Mr. Rohan Jasani</t>
</list>
</t>
</section>
</middle>
<back>
<references title="Normative References">
<reference anchor="IPSEC">
<front>
<title>Security Architecture for the Internet Protocol</title>
<author initials="S." surname="Kent" fullname="S. Kent">
<organization/>
</author>
<author initials="K." surname="Seo" fullname="K. Seo">
<organization/>
</author>
<date month="December" year="2005"/>
</front>
<seriesInfo name="RFC" value="4301"/>
</reference>
<reference anchor="ROHC">
<front>
<title> The RObust Header Compression (ROHC) Framework</title>
<author initials="L-E." surname="Jonsson" fullname="L-E. Jonsson">
<organization/>
</author>
<author initials="G." surname="Pelletier" fullname="G. Pelletier">
<organization/>
</author>
<author initials="K." surname="Sandlund" fullname="K. Sandlund">
<organization/>
</author>
<date month="July" year="2007"/>
</front>
<seriesInfo name="RFC" value="4995"/>
</reference>
<reference anchor="ROHCV2">
<front>
<title>RObust Header Compression Version 2 (ROHCv2): Profiles for RTP, UDP, IP, ESP and UDP-Lite</title>
<author initials="G." surname="Pelletier" fullname="G. Pelletier">
<organization/>
</author>
<author initials="K." surname="Sandlund" fullname="K. Sandlund">
<organization/>
</author>
</front>
<seriesInfo name="RFC" value="5225"/>
</reference>
<reference anchor="IPCOMP">
<front>
<title>IP Payload Compression Protocol (IPComp)</title>
<author initials="A." surname="Shacham" fullname="A. Shacham">
<organization/>
</author>
<author initials="R." surname="Monsour" fullname="R. Monsour">
<organization/>
</author>
<author intials="R." surname="Pereira" fullname="R. Pereira">
<organization/>
</author>
<author intials="M." surname="Thomas" fullname="M. Thomas">
<organization/>
</author>
<date month="September" year="2001"/>
</front>
<seriesInfo name="RFC" value="3173"/>
</reference>
<reference anchor="IKEV2">
<front>
<title>Internet Key Exchange (IKEv2) Protocol</title>
<author initials="C." surname="Kaufman">
<organization/>
</author>
<date month="December" year="2005"/>
</front>
<seriesInfo name="RFC" value="4306"/>
</reference>
<reference anchor="IKEV2EXT">
<front>
<title>Extensions to IKEv2 to Support Robust Header Compression over IPsec (ROHCoIPsec)</title>
<author initials="et al" surname="Ertekin">
<organization/>
</author>
<date month="August" year="2009"/>
</front>
<seriesInfo name="work in progress" value=""/>
</reference>
<reference anchor="AH">
<front>
<title>IP Authentication Header</title>
<author initials="S." surname="Kent">
<organization/>
</author>
<date month="December" year="2005"/>
</front>
<seriesInfo name="RFC" value="4302"/>
</reference>
<reference anchor="ESP">
<front>
<title>IP Encapsulating Security Payload (ESP)</title>
<author initials="S." surname="Kent">
<organization/>
</author>
<date month="December" year="2005"/>
</front>
<seriesInfo name="RFC" value="4303"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="ROHCOIPSEC">
<front>
<title>Integration of Header Compression over IPsec Security Associations</title>
<author initials="E." surname="Ertekin">
<organization/>
</author>
<author initials="R." surname="Jasani">
<organization/>
</author>
<author initials="C." surname="Christou">
<organization/>
</author>
<author initials="C." surname="Bormann">
<organization/>
</author>
<date month="August" year="2009"/>
</front>
<seriesInfo name="work in progress" value=""/>
</reference>
<reference anchor="ROHCPROF">
<front>
<title>RObust Header Compression (ROHC) Profile Identifiers</title>
<author><organization/></author>
<date month="October" year="2005"/>
</front>
<seriesInfo name="www.iana.org/assignments/rohc-pro-ids" value=""/>
</reference>
<reference anchor="CRYPTO-ALG">
<front>
<title>Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH)</title>
<author initials="V." surname="Manral">
<organization/>
</author>
<date month="April" year="2007"/>
</front>
<seriesInfo name="RFC" value="4835"/>
</reference>
<reference anchor="ROHC-TERM">
<front>
<title>Robust Header Compression (ROHC): Terminology and Channel Mapping Examples</title>
<author initials="L-E." surname="Jonsson" fullname="L-E. Jonsson">
<organization />
</author>
<date month="April" year="2004" />
</front>
<seriesInfo name="RFC" value="3759" />
</reference>
<reference anchor="PROTOCOL">
<front>
<title>"Assigned Internet Protocol Numbers", IANA registry at: http://www.iana.org/assignments/protocol-numbers</title>
<author surname="IANA">
<organization/>
</author>
</front>
</reference>
</references>
</back>
</rfc>| PAFTECH AB 2003-2026 | 2026-04-24 10:39:41 |