[Docs] [txt|pdf] [Tracker] [Email] [Diff1] [Diff2] [Nits]

Versions: 00 01 02 03 04 05 06 07 08 09 10 RFC 5406

Network Working Group                                        S. Bellovin
Internet-Draft                                       Columbia University
Intended status: Best Current                           February 7, 2007
Practice
Expires: August 11, 2007


               Guidelines for Mandating the Use of IPsec
                     draft-bellovin-useipsec-06.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on August 11, 2007.

Copyright Notice

   Copyright (C) The IETF Trust (2007).

Abstract

   The Security Considerations sections of many Internet Drafts say, in
   effect, "just use IPsec".  While this is sometimes correct, more
   often it will leave users without real, interoperable security
   mechanisms.  This memo offers some guidance on when IPsec Version 2
   should and should not be specified.





Bellovin                 Expires August 11, 2007                [Page 1]

Internet-Draft                 IPsec Usage                 February 2007


1.  Introduction

   The Security Considerations sections of many Internet Drafts say, in
   effect, "just use IPsec".  While this is sometimes correct, more
   often it will leave users without real, interoperable security
   mechanisms.  IPsec is often unavailable in the likely endpoints.
   Even if it is available, it may not provide the proper granularity of
   protection.  Finally, if it is available and appropriate, the
   document mandating it needs to specify just how it is to be used.

   Recall that the goal is realistic, interoperable security.
   Specifying, as the only security mechanism, a configuration which is
   unavailable to -- and hence unusable by -- a majority of the user
   community is tantamount to saying "turn off security".

   This document describes how to specify the use of IPsec Version 2
   [RFC2401], including ESPv2 [RFC2406], AHv2 [RFC2402], and IKEv1
   [RFC2409].  A separate document will describe the IPsec Version3
   suite [RFC4301] [RFC4302] [RFC4303] [RFC4306].

   For further guidance on security considerations (including discussion
   of IPsec), see [RFC3552].

   NOTE: Many of the arguments below relate to the capabilities of
   current implementations of IPsec.  These may change over time; this
   advice based on the knowledge available to the IETF at publication
   time.


2.  WARNING

   The design of security protocols is a subtle and difficult art.  The
   cautions here about specifying use of IPsec should NOT be taken to
   mean that that you should invent your own new security protocol for
   each new application.  If IPsec is a bad choice, use another
   standardized, well-understood security protocol.  Don't roll your
   own.


3.  The Pieces of IPsec

   IPsec is composed of a number of different pieces.  These can be used
   to provide confidentiality, integrity, and replay protection; though
   some these can be configured manually, in general a key management
   component is used.  Additionally, the decision about whether and how
   to use IPsec is controlled by a policy database of some sort.





Bellovin                 Expires August 11, 2007                [Page 2]

Internet-Draft                 IPsec Usage                 February 2007


3.1.  AH and ESP

   The Authentication Header (AH) [RFC2402] and the Encapsulating
   Security Protocol (ESP) [RFC2406] are the over-the-wire security
   protocols.  Both provide (optional) replay protection.  ESP typically
   is used to provide confidentiality (encryption), integrity and
   authentication for traffic.  ESP also can provide integrity and
   authentication without confidentiality, which makes it a good
   alternative to AH in most cases where confidentiality is not a
   required or desired service.  Finally, ESP can be used to provide
   confidentiality alone, although this is not recommended [Bell96].

   The difference in integrity protection offered by AH is that AH
   protects portions of the preceding IP header, including the source
   and destination address.  However, when ESP is used in tunnel mode
   (see Section 3.2), and if integrity/authentication is enabled, the IP
   header seen by the source and destination hosts is completely
   protected anyway.

   AH can also protect those IP options that need to be seen by
   intermediate routers, but must be intact and authentic when delivered
   to the receiving system.  At this time, use (and existence) of such
   IP options is extremely rare.

   If an application requires such protection, and if the information to
   be protected cannot be inferred from the key management process, AH
   must be used.  (ESP is generally regarded as easier to implement;
   however, virtually all IPsec packages support both.)  If
   confidentiality is required, ESP must be used.  It is possible to use
   AH in conjunction with ESP, but this combination is rarely required.

   All variants of IPsec have problems with NAT boxes -- see [RFC3715]
   for details -- but AH is considerably more troublesome.  In
   environments where there is substantial likelihood that the two end-
   points will be separated by a NAT box, AH should be avoided.  Note
   that [RFC3948] is for ESP only, and cannot be used for AH.

3.2.  Transport and Tunnel Mode

   AH and ESP can both be used in either transport mode or tunnel mode.
   In tunnel mode, the IPsec header is followed by an inner IP header;
   this is the normal usage for Virtual Private Networks (VPN), and it
   is generally required whenever either end of the IPsec-protected path
   is not the ultimate IP destination, e.g., when IPsec is implemented
   in a firewall, router, etc.

   Transport mode is preferred for point-to-point communication, though
   tunnel mode can be used for this purpose.



Bellovin                 Expires August 11, 2007                [Page 3]

Internet-Draft                 IPsec Usage                 February 2007


3.3.  Key Management

   Any cryptographic system requires key management.  IPsec provides for
   both manual and automatic key management schemes.  Manual key
   management is easy; however, it doesn't scale very well.  Also,
   IPsec's replay protection mechanisms are not available if manual key
   management is used.  The need for automatic key exchange is discussed
   in more detail in [RFC4107].

   One automated key exchange mechanism is available, Internet Key
   Exchange (IKE) [RFC2409].  A new, simpler version of IKE has been
   approved, but there are few if any deployments [RFC4306].  A second
   mechanism, Kerberized Internet Negotiation of Keys (KINK) [RFC4430],
   is being defined.  It, of course, uses Kerberos, and is suitable if
   and only if a Kerberos infrastructure is available.

   If a decision to use IKE is made, the precise mode of operation must
   be specified as well.  IKE can be used in main mode or aggressive
   mode; both support digital signatures, two different ways of using
   public key encryption, and shared secrets for authentication.

   Shared secret authentication is simpler; however, it doesn't scale as
   well in many-to-many communication scenarios, since each endpoint
   must share a unique secret with every peer with which it can
   communicate.  Note, though, that using shared secrets in IKE is far
   preferable to manual keying.

   In most real-world situations where public key modes of IKE are used,
   locally-issued certificates are employed.  That is, the administrator
   of the system or network concerned will issue certificates to all
   authorized users.  These certificates are useful only for IPsec.

   It is sometimes possible to use certificates [RFC3280] from an
   existing public key infrastructure (PKI) with IKE.  In practice, this
   is rare.  Furthermore, there not only is no global PKI for the
   Internet, there probably never will be one.  Designing a structure
   which assumes such a PKI is a mistake.  In particular, assuming that
   an arbitrary node will have an "authentic" certificate, issued by a
   mutually trusted third party and vouching for that node's identity,
   is wrong.  Again, such a PKI does not and probably will not exist.
   Public key IKE is generally a good idea, but almost always with
   locally-issued certificates.

   Note that public key schemes require a substantial amount of
   computation.  Protocol designers should consider whether or not such
   computations are feasible on devices of interest to their clientele.
   Using certificates roughly doubles the number of large
   exponentiations that must be performed, compared with shared secret



Bellovin                 Expires August 11, 2007                [Page 4]

Internet-Draft                 IPsec Usage                 February 2007


   versions of IKE.

   Today, even low-powered devices can generally perform enough
   computation to set up a limited number of security associations;
   concentration points, such as firewalls or VoIP servers, may require
   hardware assists, especially if many peers are expected to create
   security associations at about the same time.

3.4.  Applications Program Interface (API)

   It is, in some sense, a misnomer to speak of the API as a part of
   IPsec, since that piece is missing on many systems.  To the extent
   that it does exist, it isn't standardized.  The problem is simple: it
   is difficult or impossible to request IPsec protection, or to tell if
   was used for given inbound packets or connections.

   There is an additional problem: applications generally are not built
   directly on IP or IPsec.  Rather, they are layered on top of some
   transport protocol, which in turn is layered on IP or IPsec.

   Router- or firewall-based IPsec implementations pose even greater
   problems, since there is no standardized over-the-wire protocol for
   communicating this information from outboard encryptors to hosts.


4.  Availability of IPsec in Target Devices

   Although IPsec is now widely implemented, and is available for
   current releases of most host operating systems, it is less available
   for embedded systems.  Few hubs, network address translators, etc.,
   implement it, especially at the low end.  It is generally
   inappropriate to rely on IPsec when many of the endpoints are in this
   category.

   Even for host-to-host use, IPsec availability (and experience, and
   ease of use) has generally been for VPNs.  Hosts that support IPsec
   for VPN use do not always support it on a point-to-point basis,
   especially via a stable, well-defined API or user interface.

   Finally, few implementations support multiple layers of IPsec.  If a
   telecommuter is using IPsec in VPN mode to access an organizational
   network, he or she may not be able to employ a second level of IPsec
   to protect an application connection to a host within the
   organization.  (We note that such support is, in fact, mandated by
   Case 4 of Section 4.5 of [RFC2401].  Nevertheless, it is not widely
   available.)  The likelihood of such deployment scenarios should be
   taken into account when deciding whether or not to mandate IPsec.




Bellovin                 Expires August 11, 2007                [Page 5]

Internet-Draft                 IPsec Usage                 February 2007


5.  Endpoints

   [RFC2401] describes many different forms of endpoint identifier.
   These include source addresses (both IPv4 and IPv6), host names
   (possibly as embedded in X.500 certificates), and user IDs (again,
   possibly as embedded in a certificate).  Not all forms of identifier
   are available on all implementations; in particular, user-granularity
   identification is not common.  This is especially a concern for
   multi-users systems, where it may not be possible to use different
   certificates to distinguish between traffic from two different users.

   Again, we note that the ability to provide fine-grained protection,
   such as keying each connection separately, and with per-user
   credentials, was one of the original design goals of IPsec.
   Nevertheless, only a few platforms support it.  Indeed, some
   implementations do not even support using port numbers when deciding
   whether or not to apply IPsec protection.


6.  Selectors and the SPD

   Section 4.4 of [RFC2401] describes the Security Policy Database (SPD)
   and "selectors" used to decide what traffic should be protected by
   IPsec.  Choices include source and destination addresses (or address
   ranges), protocol numbers (i.e., 6 for TCP and 17 for UDP), and port
   numbers for TCP and UDP.  Protocols whose protection requirements
   cannot be described in such terms are poorer candidates for IPsec in
   particular, it becomes impossible to apply protection at any finer
   grain than "destination host".  Thus, traffic embedded in an L2TP
   [RFC2661] session cannot be protected selectively by IPsec above the
   L2TP layer, because IPsec has no selectors defined that let it peer
   into the L2TP packet to find the TCP port numbers.  Similarly, SCTP
   [RFC2960] did not exist when [RFC2401] was written; thus, protecting
   individual SCTP applications on the basis of port number could not be
   done until a new document was written [RFC3554] that defined new
   selectors for IPsec, and implementations appeared.

   The granularity of protection available may have side-effects.  If
   certain traffic between a pair of machines is protected by IPsec,
   does the implementation permit other traffic to be unprotected, or
   protected by different policies?  Alternatively, if the
   implementation is such that it is only capable of protecting all
   traffic or none, does the device have sufficient CPU capacity to
   encrypt everything?  Note that some low-end devices may have limited
   secure storage capacity for keys, etc.

   Implementation issues are also a concern here.  As before, too many
   vendors have not implemented the full specifications; too many IPsec



Bellovin                 Expires August 11, 2007                [Page 6]

Internet-Draft                 IPsec Usage                 February 2007


   implementations are not capable of using port numbers in their
   selectors.  Protection of traffic between two hosts is thus on an all
   or nothing basis when these non-compliant implementations are
   employed.


7.  Broadcast and Multicast

   Although the designers of IPsec tried to leave room for protection of
   multicast traffic, a complete design wasn't finished until much
   later.  As such, many IPsec implementations do not support multicast.
   [I-D.ietf-msec-ipsec-extensions] describes extensions to IPsec to
   support it.  Other relevant documents include [RFC3830], [RFC3547],
   and [RFC4535],

   Because of the delay, protocol designers who use multicast should
   consider the availability of these extensions in target platforms of
   interest.


8.  Mandating IPsec

   Despite all of the caveats given above, it may still be appropriate
   to use IPsec in particular situations.  The range of choices make it
   mandatory to define precisely how IPsec is to be used.  Authors of
   standards documents that rely on IPsec must specify the following:

   a.  What selectors the initiator of the conversation (the client, in
       client-server architectures) should use?  What addresses, port
       numbers, etc., are to be used?
   b.  What IPsec protocol is to be used: AH or ESP?  What mode is to be
       employed: transport mode or tunnel mode?
   c.  What form of key management is appropriate?
   d.  What security policy database entry types should be used by the
       responder (i.e., the server) when deciding whether or not to
       accept the IPsec connection request?
   e.  What form of identification should be used?  Choices include IP
       address, DNS name, and X.500 distinguished name.
   f.  What form of authentication should be used?  Choices include pre-
       shared secrets, certificates, and (for IKEv2) an EAP exchange
       [RFC3748].
   g.  Which of the many variants of IKE must be supported?  Main mode?
       Aggressive mode?

       Note that the are two different versions of IKE, IKE and IKEv2.
       IKEv2 is simpler and cleaner, but is not yet widely available.
       You must specify which version of IKE you require.




Bellovin                 Expires August 11, 2007                [Page 7]

Internet-Draft                 IPsec Usage                 February 2007


   h.  Is suitable IPsec support available in likely configurations of
       the products that would have to employ IPsec?


9.  Example

   Suppose that the designers of the Border Gateway Protocl (BGP)
   [RFC4271] wished to use IPsec for security, rather than the mechanism
   described in [RFC2385].  Does it meet these criteria?  (Note that the
   deeper security issues raised by BGP are not addressed by IPsec or
   any other transmission security mechanism.  See [Kent00a] and
   [Kent00b] for more details.)

   Selectors        The issue of selectors is easy.  BGP already runs
                    between manually-configured pairs of hosts on TCP
                    port 179.  The appropriate selector would be the
                    pair of BGP speakers, for that port only.  Note that
                    the router's "loopback address" is almost certainly
                    the address to use.
   Mode             Clearly, transport mode is the proper choice.  The
                    information being communicated is generally not
                    confidential, so encryption need not be used.
                    Either AH or ESP can be used; if ESP is used, the
                    sender's IP address would need to be checked against
                    the IP address asserted in the key management
                    exchange.  (This check is mandated by [RFC2401].)
                    For the sake of interoperability, the RFC author
                    should pick one.
   Key Management   To permit replay detection, an automated key
                    management system should be used, most likely IKE.
                    Again, the RFC author should pick one.
   Security Policy  Connections should be accepted only from the
                    designated peer.
   Authentication   Given the number of BGP-speaking routers used
                    internally by large ISPs, it is likely that shared
                    key mechanisms are inadequate.  Consequently,
                    certificate-based IKE must be supported.  However,
                    shared secret mode is reasonable on peering links,
                    or (perhaps) on links between ISPs and customers.
                    Whatever scheme is used, it must tie back to a
                    source IP address or AS number in some fashion,
                    since other BGP policies are expressed in these
                    terms.  If certficates are used, would they use IP
                    addresses or AS numbers?  Which?







Bellovin                 Expires August 11, 2007                [Page 8]

Internet-Draft                 IPsec Usage                 February 2007


   Availability     For this scenario, availability is the crucial
                    question.  Do likely BGP speakers -- both backbone
                    routers and access routers -- support the profile of
                    IPsec described above?  Will use of IPsec, with its
                    attendant expensive cryptographic operations, raise
                    the issue of new denial of service attacks?  The
                    working group and the IESG must make these
                    determinations before deciding to use IPsec to
                    protect BGP.


10.  Security Considerations

   IPsec provides transmission security and simple access control only.
   There are many other dimensions to protocol security that are beyond
   the scope of this memo.  Within its scope, the security of any
   resulting protocol depends heavily on the accuracy of the analysis
   that resulted in a decision to use IPsec.


11.  Acknowledgments

   Ran Atkinson, Lakshminath Dondeti, Barbara Fraser, Paul Hoffman, Russ
   Housley, Stephen Kent, Eric Fleischman, and others have made many
   useful suggestions.


12.  References

12.1.  Normative References

   [I-D.ietf-msec-ipsec-extensions]
              Weis, B., "Multicast Extensions to the Security
              Architecture for the Internet  Protocol",
              draft-ietf-msec-ipsec-extensions-04 (work in progress),
              October 2006.

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

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

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

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



Bellovin                 Expires August 11, 2007                [Page 9]

Internet-Draft                 IPsec Usage                 February 2007


   [RFC3280]  Housley, R., Polk, W., Ford, W., and D. Solo, "Internet
              X.509 Public Key Infrastructure Certificate and
              Certificate Revocation List (CRL) Profile", RFC 3280,
              April 2002.

   [RFC3554]  Bellovin, S., Ioannidis, J., Keromytis, A., and R.
              Stewart, "On the Use of Stream Control Transmission
              Protocol (SCTP) with IPsec", RFC 3554, July 2003.

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

   [RFC3948]  Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M.
              Stenberg, "UDP Encapsulation of IPsec ESP Packets",
              RFC 3948, January 2005.

   [RFC4107]  Bellovin, S. and R. Housley, "Guidelines for Cryptographic
              Key Management", BCP 107, RFC 4107, June 2005.

12.2.  Informative References

   [Bell96]   Bellovin, S., "Problem Areas for the IP Security
              Protocols", Proc. Sixth Usenix Security Symposium pp. 205-
              214, 1996.

   [Kent00a]  Kent, S., Lynn, C., and K. Seo, "Secure Border Gateway
              Protocol (Secure-BGP)", IEEE Journal on Selected Areas in
              Communications 18:4 pp. 582-592, 2000.

   [Kent00b]  Kent, S., Lynn, C., Mikkelson, J., and K. Seo, "Secure
              Border Gateway Protocol (Secure-BGP) -- Real World
              Performance and Deployment Issues", Proc. Network and
              Distributed System Security Symposium (NDSS), 2000.

   [RFC2385]  Heffernan, A., "Protection of BGP Sessions via the TCP MD5
              Signature Option", RFC 2385, August 1998.

   [RFC2661]  Townsley, W., Valencia, A., Rubens, A., Pall, G., Zorn,
              G., and B. Palter, "Layer Two Tunneling Protocol "L2TP"",
              RFC 2661, August 1999.

   [RFC2960]  Stewart, R., Xie, Q., Morneault, K., Sharp, C.,
              Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M.,
              Zhang, L., and V. Paxson, "Stream Control Transmission
              Protocol", RFC 2960, October 2000.

   [RFC3547]  Baugher, M., Weis, B., Hardjono, T., and H. Harney, "The
              Group Domain of Interpretation", RFC 3547, July 2003.



Bellovin                 Expires August 11, 2007               [Page 10]

Internet-Draft                 IPsec Usage                 February 2007


   [RFC3552]  Rescorla, E. and B. Korver, "Guidelines for Writing RFC
              Text on Security Considerations", BCP 72, RFC 3552,
              July 2003.

   [RFC3748]  Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H.
              Levkowetz, "Extensible Authentication Protocol (EAP)",
              RFC 3748, June 2004.

   [RFC3830]  Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K.
              Norrman, "MIKEY: Multimedia Internet KEYing", RFC 3830,
              August 2004.

   [RFC4271]  Rekhter, Y., Li, T., and S. Hares, "A Border Gateway
              Protocol 4 (BGP-4)", RFC 4271, January 2006.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, December 2005.

   [RFC4302]  Kent, S., "IP Authentication Header", RFC 4302,
              December 2005.

   [RFC4303]  Kent, S., "IP Encapsulating Security Payload (ESP)",
              RFC 4303, December 2005.

   [RFC4306]  Kaufman, C., "Internet Key Exchange (IKEv2) Protocol",
              RFC 4306, December 2005.

   [RFC4430]  Sakane, S., Kamada, K., Thomas, M., and J. Vilhuber,
              "Kerberized Internet Negotiation of Keys (KINK)",
              RFC 4430, March 2006.

   [RFC4535]  Harney, H., Meth, U., Colegrove, A., and G. Gross,
              "GSAKMP: Group Secure Association Key Management
              Protocol", RFC 4535, June 2006.


Author's Address

   Steven M. Bellovin
   Columbia University
   1214 Amsterdam Avenue
   MC 0401
   New York, NY  10027
   US

   Phone: +1 212 939 7149
   Email: bellovin@acm.org




Bellovin                 Expires August 11, 2007               [Page 11]

Internet-Draft                 IPsec Usage                 February 2007


Full Copyright Statement

   Copyright (C) The IETF Trust (2007).

   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, THE IETF TRUST 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.


Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).





Bellovin                 Expires August 11, 2007               [Page 12]


Html markup produced by rfcmarkup 1.107, available from http://tools.ietf.org/tools/rfcmarkup/