RFC 6496 EXPERIMENTAL SECURITY · NEIGHBOR DISCOVERY · IPV6

Secure Proxy ND Support for SEcure Neighbor Discovery (SEND)

Letting a router answer neighbour discovery for another node, with a signature that proves it was allowed to.

On rfc-editor.org ↗
PUBLISHED
February 2012
AUTHORS
S. Krishnan, J. Laganier, M. Bonola, A. Garcia-Martinez
STREAM
IETF
DOCUMENT STATUS
Experimental
PS OPTION TYPE
32
KEY HASH FIELD
128 bits
HASH USED FOR THE KEY HASH
SHA-1
CGA MESSAGE TYPE TAG
0x09F5 2BE5 3B62 4C76 CB96 4E7F CDC9 2804
DOI
10.17487/RFC6496

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                       S. Krishnan
Request for Comments: 6496                                      Ericsson
Category: Experimental                                       J. Laganier
ISSN: 2070-1721                                         Juniper Networks
                                                               M. Bonola
                                             Rome Tor Vergata University
                                                      A. Garcia-Martinez
                                                                    UC3M
                                                           February 2012


      Secure Proxy ND Support for SEcure Neighbor Discovery (SEND)

Abstract

   SEcure Neighbor Discovery (SEND) specifies a method for securing
   Neighbor Discovery (ND) signaling against specific threats.  As
   defined today, SEND assumes that the node sending an ND message is
   the owner of the address from which the message is sent and/or
   possesses a key that authorizes the node to act as a router, so that
   it is in possession of the private key or keys used to generate the
   digital signature on each message.  This means that the Proxy ND
   signaling performed by nodes that do not possess knowledge of the
   address owner's private key and/or knowledge of a router's key cannot
   be secured using SEND.  This document extends the current SEND
   specification in order to secure Proxy ND operation.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This document is a product of the Internet Engineering
   Task Force (IETF).  It represents the consensus of the IETF
   community.  It has received public review and has been approved for
   publication by the Internet Engineering Steering Group (IESG).  Not
   all documents approved by the IESG are a candidate for any level of
   Internet Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6496.

Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................2
   2. Requirements Notation ...........................................3
   3. Terminology .....................................................3
   4. Secure Proxy ND Overview ........................................4
   5. Secure Proxy ND Specification ...................................5
      5.1. Proxy Signature Option .....................................6
      5.2. Modified SEND Processing Rules .............................8
           5.2.1. Processing Rules for Senders ........................8
           5.2.2. Processing Rules for Receivers ......................9
      5.3. Proxying Link-Local Addresses .............................11
   6. Application Scenarios ..........................................11
      6.1. Scenario 1: Mobile IPv6 ...................................11
      6.2. Scenario 2: Proxy Mobile IPv6 .............................13
      6.3. Scenario 3: RFC 4389 Neighbor Discovery Proxy .............16
   7. Backward Compatibility with RFC 3971 Nodes and Non-SEND Nodes ..17
      7.1. Backward Compatibility with RFC 3971 Nodes ................17
      7.2. Backward Compatibility with Non-SEND Nodes ................18
   8. Security Considerations ........................................20
   9. IANA Considerations ............................................22
   10. Acknowledgements ..............................................22
   11. References ....................................................22
      11.1. Normative References .....................................22
      11.2. Informative References ...................................23

1.  Introduction

   SEcure Neighbor Discovery (SEND) [RFC3971] specifies a method for
   securing Neighbor Discovery (ND) signaling [RFC4861] against specific
   threats [RFC3756].  As defined today, SEND assumes that the node
   sending an ND message is the owner of the address from which the
   message is sent and/or possesses a key that authorizes the node to
   act as a router, so that it is in possession of the private key or
   keys used to generate the digital signature on each message.  This
   means that the Proxy ND signaling performed by nodes that do not
   possess knowledge of the address owner's private key and/or knowledge
   of a router's key cannot be secured using SEND.

   This document extends the current SEND specification with support for
   Proxy ND.  From this point on, we refer to such an extension as
   "Secure Proxy ND Support for SEND".

2.  Requirements Notation

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

3.  Terminology

   Secure ND Proxy

      A node acting on behalf of another node and authorized to secure a
      Neighbor Discovery Protocol (NDP) message without knowing the
      private key related to the source address of the other node or the
      key related to the router authorization.

   Proxied IPv6 address

      An IPv6 address that does not belong to the Secure ND Proxy and
      for which the Secure ND Proxy is performing advertisements.

   Non-SEND node

      An IPv6 node that does not implement the SEND [RFC3971]
      specification but uses the ND protocol defined in [RFC4861] and
      [RFC4862], without additional security.

   RFC 3971 node

      An IPv6 node that does not implement the specification defined in
      this document for Secure Proxy ND support but uses the SEND
      specification as defined in [RFC3971].

   Secure Proxy ND (SPND) node

      An IPv6 node that receives and validates messages according to the
      specification defined in this document for Secure Proxy ND
      support.

   Translated NDP message

      An NDP message issued by a Secure ND Proxy as a result of a
      received NDP message originated by the owner of the address or
      originated by another node acting on behalf of the owner of the
      address.

   Synthetic NDP message

      An NDP message issued by a Secure ND Proxy that is not the result
      of a received NDP message.

4.  Secure Proxy ND Overview

   The original SEND specification [RFC3971] has implicitly assumed that
   only the node sending an ND message is the owner of the address from
   which the message is sent.  This assumption does not allow proxying
   of ND messages, since the advertiser is required to generate a valid
   RSA Signature option, which in turn requires possession of the
   public-private key pair that was used to generate a Cryptographically
   Generated Address (CGA), or that was associated to a router
   certificate.

   To be able to separate the roles of owner and advertiser, the
   following extensions to the SEND protocol are defined:

   o  A Secure Proxy ND certificate, which is a certificate authorizing
      an entity to act as an ND proxy.  It is an X.509v3 certificate in
      which the purpose for which the certificate is issued has been
      specified explicitly, as described in a companion document
      [RFC6494].  Briefly, Secure Proxy ND certificates include one or
      more KeyPurposeId values that can be used for authorizing proxies
      to sign Router Advertisement (RA) and Redirect messages, or to
      sign Neighbor Advertisement (NA), Neighbor Solicitation (NS), or
      Router Solicitation (RS) messages on behalf of other nodes.  The
      inclusion of this value allows the certificate owner to perform
      proxying of SEND messages for a range of addresses indicated in
      the same certificate.  This certificate can be exchanged through
      the Authorization Delegation Discovery process defined in
      [RFC3971].

   o  A new Neighbor Discovery option called the Proxy Signature (PS)
      option.  This option contains the hash value of the public key of
      the proxy, and the digital signature of the SEND message computed
      with the private key of the proxy.  The hash of the public key of
      the proxy is computed over the public key contained in the Secure
      Proxy ND certificate.  When an ND message contains a PS option, it
      MUST NOT contain CGA or RSA Signature options.  The PS option MUST
      be appended to any NDP message (NA, NS, RS, RA, and Redirect) to
      secure it.

   o  A modification of the SEND processing rules for all ND messages:
      NA, NS, RS, RA, and Redirect.  When any of these messages
      containing a PS option is validated, it is considered secure.

   These extensions are applied in the following way:

   o  A Secure ND Proxy that proxies ND messages on behalf of a node can
      use the PS option to protect the proxied messages.  This Secure ND
      Proxy becomes part of the trusted infrastructure just like a SEND
      router.

   o  The messages to be secured with the PS option are built according
      to [RFC4861] if they are synthesized by the Secure ND Proxy, or
      they result from the processing rules defined in [RFC4389] if they
      are translated ND messages.

   o  In order to allow nodes to successfully validate secured proxied
      messages, the nodes MUST be aware of the Secure Proxy ND
      certificate (in the format described in [RFC6494]) and MUST apply
      the modified processing rules specified in this document.  We call
      these nodes 'SPND nodes'.  Note that the rules for generating ND
      messages in SPND nodes do not change, so these nodes behave as
      defined in [RFC3971] when they send ND messages.

   o  To allow SPND nodes to know the certification path required to
      validate the public key of the proxy, devices responding to CPS
      (Certification Path Solicitation) messages with CPA (Certification
      Path Advertisement) messages as defined in Section 6 of the SEND
      specification [RFC3971] are extended to support the certificate
      format specified in [RFC6494], and are configured with the
      appropriate certification path.

5.  Secure Proxy ND Specification

   A Secure ND Proxy performs all the operations described in the SEND
   specification [RFC3971] with the addition of new processing rules to
   ensure that the receiving node can identify an authorized proxy
   generating a translated or synthetic SEND message for a proxied
   address.

   This is accomplished by signing the message with a private key of the
   authorized Secure ND Proxy.  The signature of the Secure ND Proxy is
   included in a new option called the PS option.  The signature is
   performed over all the Neighbor Discovery Protocol (NDP) options
   present in the message, and the PS option is appended as the last
   option in the message.

5.1.  Proxy Signature Option

   The Proxy Signature option allows signatures based on public keys to
   be attached to NDP messages.  The format of the PS option is
   described in the following diagram:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |    Length     |          Reserved             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      |                          Key Hash                             |
      |                                                               |
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                       Digital Signature                       .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      .                                                               .
      .                           Padding                             .
      .                                                               .
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Figure 1: PS Option Layout

   Type

      32

   Length

      The length of the option (including the Type, Length, Reserved,
      Key Hash, Digital Signature, and Padding fields) in units of
      8 octets.

   Reserved

      A 16-bit field reserved for future use.  The value MUST be
      initialized to zero by the sender, and MUST be ignored by the
      receiver.

   Key Hash

      A 128-bit field containing the most significant (leftmost)
      128 bits of a SHA-1 [SHA1] hash of the public key used for
      constructing the signature.  Its purpose is to associate the
      signature to a particular key known by the receiver.  Such a key
      MUST be the same one within the corresponding Secure Proxy ND
      certificate.

   Digital Signature

      A variable-length field containing a PKCS#1 v1.5 signature,
      constructed by using the sender's private key over the following
      sequence of octets:

      1.  The 128-bit CGA Message Type tag [RFC3972] value for Secure
          Proxy ND, 0x09F5 2BE5 3B62 4C76 CB96 4E7F CDC9 2804.  (The tag
          value has been generated randomly by the editor of this
          specification.)

      2.  The 128-bit Source Address field from the IP header.

      3.  The 128-bit Destination Address field from the IP header.

      4.  The 8-bit Type, 8-bit Code, and 16-bit Checksum fields from
          the ICMP header.

      5.  The NDP message header, starting from the octet after the ICMP
          Checksum field and continuing up to, but not including, NDP
          options.

      6.  All NDP options preceding the Proxy Signature option.

      The signature value is computed with the RSASSA-PKCS1-v1_5
      algorithm and SHA-1 hash, as defined in [RSA].  This field starts
      after the Key Hash field.  The length of the Digital Signature
      field is determined by the ASN.1 BER coding of the PKCS#1 v1.5
      signature.

   Padding

      This variable-length field contains padding.  The length of the
      padding field is determined by the length of the Proxy Signature
      option minus the length of the other fields.

5.2.  Modified SEND Processing Rules

   This specification modifies the sender and receiver processing rules
   defined in the SEND specification [RFC3971].

5.2.1.  Processing Rules for Senders

   A Secure ND Proxy MUST NOT use a key to sign NDP message types that
   do not correspond to the authorization granted to the considered key.
   NA, NS, and RS messages MUST be signed with a key corresponding to a
   Secure Proxy ND certificate with a KeyPurposeId value [RFC6494] of
   id-kp-sendProxiedOwner, and the source addresses of the messages MUST
   be encompassed in the prefix associated to the certificate.  RA and
   Redirect messages MUST be signed with a key corresponding to a Secure
   Proxy ND certificate with a KeyPurposeId value of
   id-kp-sendProxiedRouter.  The prefix included in the RA message for
   on-link determination and/or stateless address autoconfiguration, and
   the Target Address of the Redirect message, MUST be encompassed in
   the prefix associated to that certificate.

   A secured NDP message sent by a Secure ND Proxy for a proxied address
   MUST contain a PS option and MUST NOT contain either CGA or RSA
   Signature options.  Section 7 discusses in which cases an NDP message
   has to be secured in a scenario including non-SEND nodes.

   The input of this process is a message obtained in either of the
   following ways:

   a.  If the Secure ND Proxy generates synthetic SEND messages for a
       proxied address, the message MUST be constructed as described in
       the Neighbor Discovery for IP version 6 specification [RFC4861].

   b.  If the Secure ND Proxy translates secured messages, first the
       authenticity of the intercepted message MUST be verified.  If the
       intercepted message is a SEND message, it MUST be validated as
       specified in Section 5 of the SEND specification [RFC3971].  If
       the intercepted message contains a PS option, the authenticity of
       the message MUST be verified as detailed in Section 5.2.2 of this
       specification.  After validation, the CGA, RSA, or PS options of
       the original message MUST be removed.  Then, the message to be
       translated MUST be processed according to the ND Proxy
       specification [RFC4389].  In this way, it is determined whether
       the message received should be proxied or not; the proxy
       interface status is updated if needed, the outgoing interface is
       determined, the link-layer header and the link-layer address
       within the payload are modified if required, etc.

   A Secure ND Proxy then modifies the input message as follows:

   1.  Timestamp and Nonce options MUST be included according to the
       rules specified in SEND [RFC3971].  The value in the Timestamp
       option MUST be generated by the proxy.  If the proxy is
       translating a message that includes a nonce, the Nonce value in
       the proxied message MUST be the same as in the intercepted
       message.  If the proxy is synthesizing a solicitation message,
       the Nonce value MUST be generated by the proxy.  If the proxy is
       synthesizing an advertisement message, the Nonce value MUST
       correspond to the solicitation message to which the proxy is
       responding.

   2.  The Proxy Signature option MUST be added as the last option in
       the message.

   3.  The data MUST be signed as explained in Section 5.1.

5.2.2.  Processing Rules for Receivers

   Any SEND message without a Proxy Signature option MUST be treated as
   specified in the SEND specification [RFC3971].

   A SEND message including a Proxy Signature option MUST be processed
   as specified below:

   1.  The receiver MUST ignore any RSA and CGA options, as well as any
       options that might come after the first PS option.  The options
       are ignored for both signature verification and NDP processing
       purposes.

   2.  The Key Hash field MUST indicate the use of a known public key.
       A valid certification path (see [RFC6494] Section 9) between the
       receiver's trust anchor and the sender's public key MUST be
       known.  The Secure Proxy ND X.509v3 certificate MUST contain an
       extended key usage extension including the appropriate
       KeyPurposeId value and prefix for the message to validate:

       *  For RA messages, a KeyPurposeId value of
          id-kp-sendProxiedRouter MUST exist for the certificate, and
          the prefix included in the RA message for on-link
          determination and/or stateless address autoconfiguration MUST
          be encompassed in the prefix associated to that certificate.

       *  For Redirect messages, a KeyPurposeId value of
          id-kp-sendProxiedRouter MUST exist for the certificate, and
          the prefix included in the Target Address of the Redirect
          message MUST be encompassed in the prefix associated to that
          certificate.

       *  For NA, NS, and RS messages, a KeyPurposeId value of
          id-kp-sendProxiedOwner MUST exist for the certificate, and the
          source addresses of the messages MUST be encompassed in the
          prefix associated to the certificate.

       If any of these tests fail, the verification fails.

   3.  The Digital Signature field MUST have correct encoding;
       otherwise, the verification of the message including the PS
       option fails.

   4.  The Digital Signature verification MUST show that the signature
       has been calculated as specified in Section 5.1; otherwise, the
       verification of the message including the PS option fails.

   5.  The Nonce option MUST be processed as specified in [RFC3971]
       Section 5.3.4, except for replacing 'RSA Signature option' with
       'PS option'; if these tests fail, the verification of the message
       including the PS option fails.

   6.  The Timestamp option MUST be processed as specified in [RFC3971]
       Section 5.3.4, except for replacing 'RSA Signature option' with
       'PS option'.  If these tests fail, the verification of the
       message including the PS option fails.  The receiver SHOULD store
       the peer-related timing information specified in [RFC3971]
       Sections 5.3.4.1 and 5.3.4.2 (RDlast, TSlast) separately for each
       different proxy (which could be identified by the different Key
       Hash values of the proxied message) and separately from the
       timing information associated to the IP address of a node for
       which the message is proxied.  In this way, a message received
       for the first time from a proxy (i.e., for which there is no
       information stored in the cache) for which the Timestamp option
       is checked SHOULD be checked as a message received from a new
       peer (as in [RFC3971] Section 5.3.4.2).

   7.  Messages with the Override bit [RFC4861] set MUST override an
       existing cache entry regardless of whether it was created as a
       result of an RSA Signature option or a PS option validation.
       When the Override bit is not set, the advertisement MUST NOT
       update a cached link-layer address created securely by means of
       RSA Signature option or PS option validation.

   Messages for which the verification fails MUST be silently discarded
   if the node has been configured to accept only secured ND messages.
   The messages MAY be accepted if the host has been configured to
   accept both secured and unsecured messages but MUST be treated as an
   unsecured message.

5.3.  Proxying Link-Local Addresses

   SEND [RFC3971] relies on certificates to prove that routers are
   authorized to announce a certain prefix.  However, Neighbor Discovery
   [RFC4861] states that routers do not announce the link-local prefix
   (fe80::/64).  Hence, it is not required for a SEND certificate to
   hold an X.509 extension for IP addresses that authorizes the
   fe80::/64 prefix.  However, some Secure Proxy ND scenarios
   ([RFC4389], [RFC5213]) impose providing the proxying function for the
   link-local address of a node.  When Secure ND Proxy functionality for
   a link-local address is required, either a list of link-local
   addresses, or the fe80::/64 prefix MUST be explicitly authorized to
   be proxied in the corresponding certificate.

6.  Application Scenarios

   In this section, we describe three different application scenarios
   for which Secure Proxy ND support for SEND can be applied.  Note that
   the particular way in which Secure Proxy ND support is applied (which
   ND messages are proxied, in which direction, how the interaction with
   non-SEND hosts and RFC 3971 hosts is handled, etc.) largely depends
   on the particular scenario considered.  In the first two scenarios
   presented below, ND messages are synthesized on behalf of off-link
   nodes.  In the third one, ND messages are translated from the
   messages received in other interfaces of the proxy.

6.1.  Scenario 1: Mobile IPv6

   The description of the problems for deploying SEND in this scenario
   is presented in [RFC5909].

   The Mobile IPv6 (MIPv6) protocol [RFC6275] allows a Mobile Node (MN)
   to move from one link to another while maintaining reachability at a
   stable address, the so-called MN's Home Address (HoA).  When an MN
   attaches to a foreign network, all the packets sent to the MN's HoA
   by a Correspondent Node (CN) on the home link or a router are
   intercepted by the Home Agent (HA) on that home link, encapsulated,
   and tunneled to the MN's registered Care-of Address (CoA).

   To deploy Secure Proxy ND in this scenario, i.e., to secure the HA
   operation, a Secure Proxy ND certificate with a KeyPurposeId value of
   id-kp-sendProxiedOwner for the prefix of the home link is required.

   The Secure ND Proxy is configured with the private key associated to
   this certificate.  When a NS is intercepted by the HA on the home
   link, the HA checks whether the Target Address within the NS matches
   with any of the MN's Home Addresses in the binding cache, and if so,
   it replies with a Neighbor Advertisement (NA) constructed as
   described in [RFC4861], containing its own link-layer address (HA_LL)
   as the Target Link-Layer Address Option (TLLAO).  Then, a timestamp
   (generated by the proxy) and nonce (if appropriate, according to
   [RFC3971]) MUST be included.  Finally, a PS option signing the
   message MUST be included as the last option of the message.

      Node (N)                Home Agent (HA)          Mobile Node (MN)
      on Home Link             on Home Link            on Foreign Link
        |                           |                          |
        | SRC = N                   |                          |
        | DST = solicited_node (MN) |                          |
        | ICMPv6 NS                 |                          |
        | TARGET = MN               |                          |
        | SLLAO = N_LL              |                          |
        | [CGA]                     |                          |
        | RSA signature             |                          |
        |-------------------------->|                          |
        |                           |                          |
        | SRC = HA                  |                          |
        | DST = N                   |                          |
        | ICMPv6 NA                 |                          |
        | TARGET = MN               |                          |
        | TLLAO = HA_LL             |                          |
        | PS signature              |                          |
        |<--------------------------|                          |
        |                           |                          |
        | traffic                   |                          |
        | dest = MN HoA             |                          |
        |-------------------------->|                          |
        |                           |                          |
        |                           | tunneled traffic         |
        |                           | dest = MN CoA            |
        |                           |------------------------->|
        |                           |                          |

            Figure 2: Proxy ND Role of the Home Agent in MIPv6

   A node receiving the NA containing the PS option (e.g., the CN in the
   home link, or a router) MUST apply the rules defined in
   Section 5.2.2.  Note that in this case the Override bit of the NA
   message is used to control which messages should prevail on each
   case: the message generated by the proxy when the MN moves from the
   home network, or the MN if it comes back to the home link, as defined
   in the MIPv6 specification [RFC6275].

6.2.  Scenario 2: Proxy Mobile IPv6

   Proxy Mobile IPv6 [RFC5213] is a network-based mobility management
   protocol that provides IP mobility management support for MNs without
   requiring that MNs be involved in the mobility-related signaling.
   The IP mobility management is totally hidden to the MN in a Proxy
   Mobile IPv6 domain, and it is performed by two functional entities:
   the Local Mobility Anchor (LMA) and the Mobile Access Gateway (MAG).

   When the MN connects to a new access link, it sends a multicast
   Router Solicitation (RS).  The MAG on the new access link, upon
   detecting the MN's attachment, signals the LMA requesting an update
   of the binding state of the MN (by means of a Proxy Binding Update
   (PBU)).  Once the signaling is completed (it receives a Proxy Binding
   Ack (PBA)), the MAG replies to the MN with a Router Advertisement
   (RA) containing the home network prefix(es) that were assigned to
   that mobility session, making the MN believe it is still on the same
   link, so the IPv6 address reconfiguration procedure is not triggered
   (Figure 3).

             MN                   new MAG                  LMA
              |                      |                      |
          MN Attached                |                      |
              |                      |                      |
              |       MN Attached Event from MN/Network     |
              |                      |                      |
              | SRC = MN             |                      |
              | DST = all routers    |                      |
              | ICMPv6 RS            |                      |
              | [CGA]                |                      |
              | RSA signature        |                      |
              |--------------------->|                      |
              |                      |                      |
              |                      |--- PBU ------------->|
              |                      |                      |
              |                      |                  Accept PBU
              |                      |                      |
              |                      |<------------- PBA ---|
              |                      |                      |
              |                 Accept PBA                  |
              |                      |                      |
              |                      |==== Bi-Dir Tunnel ===|
              |                      |                      |
              |        SRC = MAG4MN  |                      |
              |            DST = MN  |                      |
              |           ICMPv6 RA  |                      |
              |        SLL = MAG_LL  |                      |
              |            PS        |                      |
              |<---------------------|                      |
              |                      |                      |
              |                      |                      |
              |                      |                      |

                Figure 3: Mobile Node's Handover in PMIPv6

   To avoid potential link-local address collisions between the MAG and
   the MN after a handoff to a new link, the Proxy Mobile IPv6
   specification [RFC5213] requires that the MAG's link-local address on
   the link to which the MN is attached be generated by the LMA when the
   MN first attaches to a PMIPv6 domain, and be provided to the new MN's
   serving MAG after each handoff.  Thus, from the MN's point of view,
   the MAG's link-local address remains constant for the duration of
   that MN's session.

   The approach described above and the current SEND specification are
   incompatible, since sharing the same link-local address on different
   MAGs would require all MAGs of a PMIPv6 domain to construct the CGA
   and the RSA Signature option with the same public-private key pair,
   which is not an acceptable security policy.

   Using different public-private key pairs on different MAGs would mean
   that different MAGs use different CGAs as link-local addresses.
   Thus, the serving MAG's link-local address would change after each
   handoff of the MN, which is in contradiction with the way MAG link-
   local address assignment occurs in a PMIPv6 domain.

   To provide SEND protection, each MAG MUST be configured to act as a
   proxy by means of a certificate associated to the PMIPv6 domain,
   authorizing each MAG to securely proxy NA and RS messages by means of
   a KeyPurposeId value of id-kp-sendProxiedOwner.  In addition, the
   certificate MUST also authorize the MAG to advertise prefixes by
   associating to the same certificate a KeyPurposeId value of
   id-kp-sendProxiedRouter.  Note that the inclusion of multiple
   KeyPurposeId values is supported by [RFC6494].

   When a MAG replies to an RS with an RA, the source address MUST be
   equal to the MAG link-local address associated to the MN in this
   PMIPv6 domain, with its own link-layer address as the source link-
   layer address.  Then, a timestamp (generated by the proxy) and nonce
   (if appropriate, according to [RFC3971]) MUST be included.  Finally,
   a PS option signing the message MUST be included as the last option
   of the message.  This procedure is followed for any other ND message
   that could be generated by the MAG to the MN.

   A node receiving a message from the MAG containing the PS option MUST
   apply the processing rules defined in Section 5.2.2.  Note that
   unsolicited messages sent by the MAG should be validated by the host
   according to timestamp values specific to the MAG serving the link,
   not to any other MAG to which the host has been connected before in
   other links, according to processing step number 6 of Section 5.2.2.

6.3.  Scenario 3: RFC 4389 Neighbor Discovery Proxy

   The problems for deploying SEND in this scenario are presented in
   [RFC5909].

         Link 1                                               Link 2

         Host A                   ND Proxy (P)                Host B
           |                          |                          |
           | SRC = A                  |                          |
           | DST = solicited_node (B) |                          |
           | ICMPv6 NS                |                          |
           | TARGET = B               |                          |
           | SLLAO = A_LL             |                          |
           |------------------------->|                          |
           |                          | SRC = A                  |
           |                          | DST = solicited_node (B) |
           |                          | ICMPv6 NS                |
           |                          | TARGET = B               |
           |                          | SLLAO = P_LL             |
           |                          |------------------------->|
           |                          |                          |
           |                          | SRC = B                  |
           |                          | DST = A                  |
           |                          | ICMPv6 NA                |
           |                          | TARGET = B               |
           |                          | TLLAO = B_LL             |
           |                          |<-------------------------|
           | SRC = B                  |                          |
           | DST = A                  |                          |
           | ICMPv6 NA                |                          |
           | TARGET = B               |                          |
           | TLLAO = P_LL             |                          |
           |<-------------------------|                          |
           |                          |                          |

           Figure 4: RFC 4389 Neighbor Discovery Proxy Operation

   The Neighbor Discovery (ND) Proxy specification [RFC4389] provides a
   method by which multiple link-layer segments are bridged into a
   single segment and specifies the IP-layer support that enables
   bridging under these circumstances.

   A Secure ND Proxy MUST parse any IPv6 packet it receives on a proxy
   interface to check whether it contains one of the following NDP
   messages: NS, NA, RS, RA, or Redirect.  The Secure ND Proxy MUST
   verify the authenticity of the received ND message, according to
   [RFC3971], or according to Section 5.2.2 if it contains a PS option.

   Then, after removing the CGA, RSA, or PS options, the message to be
   translated MUST be processed according to the ND Proxy specification
   [RFC4389].  This includes performing loop prevention checks,
   determining the outgoing interface for the proxied message, changing
   the source link-layer address to the address of the outgoing
   interface, changing source link-layer addresses contained in the
   payload (that is, in a Source Link-Layer Address Option (SLLAO) or a
   Target Link-Layer Address Option (TLLAO)), maintaining the
   destination link-layer address as the address in the neighbor entry
   corresponding to the destination IPv6 address, setting the P bit for
   proxied RA messages, etc.  Note that besides link-layer addresses and
   the P bit of a RA, no other field of the received message is changed
   when proxied by an [RFC4389] proxy.

   When any other IPv6 unicast packet is received on a proxy interface,
   if it is not locally destined, then it is forwarded unchanged (other
   than using a new link-layer header) to the proxy interface for which
   the next-hop address appears in the neighbor cache.  If no neighbor
   cache entry is present, the Secure ND Proxy SHOULD queue the packet
   and initiate a Neighbor Discovery signaling as if the NS message were
   locally generated.

   Note that to be able to sign any NS, NA, RS, RA, or Redirect message,
   the key used MUST correspond to a certificate with KeyPurposeId
   values of id-kp-sendProxiedOwner and id-kp-sendProxiedRouter.

   In order to deploy this scenario, nodes in proxied segments MUST know
   the certificate-authorizing proxy operation.  To do so, it could be
   required that at least one device per proxied segment (maybe the
   proxy itself) be configured to propagate the required certification
   path to authorize proxy operation by means of a CPS/CPA exchange.

7.  Backward Compatibility with RFC 3971 Nodes and Non-SEND Nodes

   In this section, we discuss the interaction of Secure ND Proxies and
   SPND nodes with RFC 3971 nodes and non-SEND nodes.  As stated in
   [RFC3971], network operators may want to run a mixture of nodes
   accepting secured and unsecured NDP messages at the same time.
   Secure ND Proxies and SPND nodes SHOULD support the use of secured
   and unsecured NDP messages at the same time.

7.1.  Backward Compatibility with RFC 3971 Nodes

   RFC 3971 nodes, i.e., SEND nodes not compliant with the modifications
   required in Section 5, cannot correctly interpret a PS option
   received in a proxied ND message.  These SEND nodes silently discard
   the PS option, as specified in [RFC4861] for any unknown option.  As
   a result, these messages will be treated as unsecured, as described
   in Section 8 ("Transitions Issues") of the SEND specification
   [RFC3971].

   When RFC 3971 nodes and SPND nodes exchange ND messages (without
   proxy intervention), in either direction, messages are generated
   according to the SEND specification [RFC3971], so these nodes
   interoperate seamlessly.

   In the scenarios in which the proxy translates ND messages, the
   messages to translate can either be originated in an RFC 3971 node or
   in an SPND node, without interoperability issues (note that the
   difference between RFC 3971 nodes and SPND nodes only affects the
   ability to process received NDP messages containing a PS option, not
   the way they generate messages secured by SEND).

   A configuration option MAY exist in a Secure ND Proxy to specify the
   RFC 3971 nodes to which it is connected, so that the proxied messages
   sent to these nodes are not processed according to the Secure Proxy
   ND specification, for performance reasons.

7.2.  Backward Compatibility with Non-SEND Nodes

   Non-SEND nodes receiving NDP packets silently discard PS options, as
   specified in [RFC4861] for any unknown option.  Therefore, these
   nodes interpret messages proxied by a Secure ND Proxy as any other ND
   message.

   When non-SEND nodes and SPND nodes exchange ND messages (without
   proxy intervention), in either direction, the rules specified in
   Section 8 of [RFC3971] apply.

   A Secure ND Proxy SHOULD support the use of secured and unsecured NDP
   messages at the same time, although it MAY have a configuration that
   causes proxying to not be performed for unsecured NDP messages.  A
   Secure ND Proxy MAY also have a configuration option whereby it
   disables secure ND proxying completely.  This configuration SHOULD be
   switched off by default; that is, security is provided by default.
   In the following paragraphs, we discuss the recommended behavior of
   the Secure ND Proxy regarding the protection level to provide to
   proxied messages in a mixed scenario involving SPND/RFC 3971 nodes
   and non-SEND nodes.  In particular, two different situations occur,
   depending on whether the proxied nodes are RFC 3971 or SPND nodes, or
   non-SEND nodes.

   As a rule of thumb, if the proxied nodes can return to the link in
   which the proxy operates, the Secure ND Proxy MUST only generate PS
   options on behalf of nodes with SEND capabilities (i.e., those nodes
   that could use SEND to defend their messages if present on the same
   link as the proxy -- in other words, either RFC 3971 nodes or SPND
   nodes).  This is relevant to allow nodes to prefer secured
   information over an unsecured one, and to properly execute the
   Duplicate Address Detection (DAD) procedure, as specified in
   [RFC3971].  Therefore, in this case, the Secure ND Proxy MUST
   synthesize/translate messages containing the PS option for SPND and
   RFC 3971 hosts, and MUST NOT synthesize/translate messages containing
   the PS option for non-SEND nodes.  Note that ND advertisements in
   response to solicitations generated by a Secure ND Proxy must either
   be secured or not secured, according to the previous considerations
   (i.e., according to the nature of the proxied node), and not
   according to the secure or unsecure nature of the solicitation
   message.

   In order to apply this rule, the Secure ND Proxy needs to know the
   security capabilities of the proxied node.  The way this information
   is acquired depends on the application scenario, and it is discussed
   next:

   o  For scenarios in which ND messages are translated for nodes that
      can arrive to the link in which the proxy operates, the rule can
      be easily applied: only for messages validated in the Secure ND
      Proxy according to the SEND specification [RFC3971], or according
      to Section 5.2.2 of this specification for messages containing a
      PS option (which means that another proxy previously checked that
      the original message was secured), the message MUST be proxied
      securely by the inclusion of a PS option.  Unsecured ND messages
      could be proxied if unsecured operation is enabled in the proxy,
      but the message generated by the Secure ND Proxy for the received
      message MUST NOT include a PS option.

   o  For scenarios in which ND messages are synthesized on behalf of
      remote nodes, different considerations should be made according to
      the particular application scenario.

      *  For MIPv6, if the MN can return to the home link, it is
         required that the proxy know whether the node could use SEND to
         defend its address or not.  A HA including the PS option for
         proxying a non-SEND MN would make ND messages sent by the proxy
         be more preferred than an ND message of the non-SEND MN when
         the MN returns to the home link (even if the proxied messages
         have the Override bit set to 1).  Not using the PS option for
         an RFC 3971 or SPND MN would make the address in the home link
         more vulnerable when the MN is away than when it is in the home
         link, defeating the purpose of the Secure Proxy ND mechanism.
         Therefore, in this case, the HA MUST know the SEND capabilities
         of the MN, MUST use the PS option if the MN is an SPND or
         RFC 3971 host, and MUST NOT use the PS option for non-SEND
         hosts.

      *  For the Proxy Mobile IPv6 scenario, a node moving from a link
         in which the PS option has been used to protect a link-layer
         address to a link in which ND messages are not protected by
         SEND would prevent the MN from acquiring the new information
         until the cached information expires.  However, in this case,
         it is reasonable to consider that all MAGs provide the same
         security for protecting ND messages, and that either all MAGs
         or no MAGs will behave as a Secure ND Proxy, so configuration
         is expected to be easier.

   A configuration option MAY exist in a Secure ND Proxy to specify the
   non-SEND nodes to which it is connected, so that the proxied messages
   sent to these nodes are not processed according to the Secure Proxy
   ND specification, for performance reasons.

8.  Security Considerations

   The mechanism described in this document introduces a new PS option
   allowing a Secure ND Proxy to synthesize or translate a SEND message
   for a proxied address, to redirect traffic for given target
   addresses, or to advertise prefix information by means of RA
   messages.  An SPND node only accepts such a message if it includes a
   valid PS option generated by a properly authorized Secure ND Proxy
   (with a certificate containing a KeyPurposeId with value
   id-kp-sendProxiedOwner for protecting NA, NS, and RS messages, or
   containing a KeyPurposeId value of id-kp-sendProxiedRouter for
   protecting RA and Redirect messages).  Such a message has protection
   against the threats presented in Section 9 of [RFC3971] equivalent to
   a message signed with an RSA Signature option.

   The security of proxied ND messages not including a PS option is the
   same as an unsecured ND message.  The security of a proxied ND
   message received by a non-SEND host or RFC 3971 host is the same as
   an unsecured ND message.

   When a message including a PS option is received by an SPND node, any
   CGA or RSA options also included in the message are removed and the
   remaining message further processed.  Although properly formed
   proxied messages MUST NOT include PS and CGA/RSA options at the same
   time, discarding them if they appear does not affect security.  If
   the PS option is validated, then the information included in the
   message has been validly generated by a proxy, and should be honored
   (remember that anti-replay protection is provided by means of Nonce
   and Timestamp options).  If the PS option is not validated, then it
   is treated as an unsecured message.  In any case, there is no gain
   for an attacker from appending false or old CGA/RSA information to a
   message secured by a Secure ND Proxy.

   A compromised Secure ND Proxy provisioned with an authorization
   certificate with a KeyPurposeId value of id-kp-sendProxiedRouter is
   able, like a compromised router, to siphon off traffic from the host,
   or mount a man-in-the-middle attack, for hosts communicating to off-
   link hosts.  A compromised Secure ND Proxy provisioned with an
   authorization certificate with a KeyPurposeId value of
   id-kp-sendProxiedOwner can siphon off traffic or mount a man-in-the-
   middle attack for communication between on-link hosts, even if the
   hosts use SEND.  Note that different application scenarios may
   require one type of authorization, the other, or both.  To minimize
   security risks, authorization capabilities MUST NOT exceed the ones
   strictly required by the application scenario to be deployed.

   The messages for which a Secure ND Proxy performs its function and
   the link for which this function is performed MUST be configured
   appropriately for each proxy and scenario.  This configuration is
   especially relevant if Secure Proxy ND is used for translating ND
   messages from one link to another.

   Section 7 discusses the security considerations resulting from the
   decision to append or omit the PS option, depending on the SEND-
   awareness of the proxied nodes.

   Protection against replay attacks from unsolicited messages such as
   NA, RA, and Redirects is provided by means of the Timestamp option.
   When Secure ND Proxy is used, each host, and each proxy acting on
   behalf of that host, are considered to be different peers in terms of
   timestamp verification.  Since the information provided by the host
   and a proxy, including different link-layer addresses, may be
   different, a replay attack could affect the operation of a third
   node: replaying messages issued by a host that is no longer in the
   link can prevent the use of a proxy, and replaying messages of a
   proxy when the host is back in the link can prevent communication
   with the host.  This kind of attack can be performed until the
   timestamp of the peer (either the host or a proxy) is no longer valid
   for the receiver.  The window of vulnerability is in general larger
   for the first message received from a new peer than for subsequent
   messages received from the same peer (see [RFC3971]).  A more
   detailed analysis of the possible attacks related to the Timestamp
   option is described in Section 6.3 of [RFC5909].

9.  IANA Considerations

   IANA has allocated the following a new IPv6 Neighbor Discovery Option
   type for the PS option, as 32.  The value has been allocated from the
   namespace specified in the IANA "IPv6 Neighbor Discovery Option
   Formats" registry located at
   http://www.iana.org/assignments/icmpv6-parameters.

   IANA has also allocated the following new 128-bit value under the
   "Cryptographically Generated Addresses (CGA) Message Type Name Space"
   registry [RFC3972]:

      0x09F5 2BE5 3B62 4C76 CB96 4E7F CDC9 2804.

10.  Acknowledgements

   The text has benefited from feedback provided by Jari Arkko, Jean-
   Michel Combes, Roque Gagliano, Tony Cheneau, Marcelo Bagnulo, Alexey
   Melnikov, Sandra Murphy, and Sean Turner.

   The work of Alberto Garcia-Martinez was supported in part by the T2C2
   project (TIN2008-06739-C04-01, granted by the Spanish Science and
   Innovation Ministry).

11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3971]  Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander,
              "SEcure Neighbor Discovery (SEND)", RFC 3971, March 2005.

   [RFC3972]  Aura, T., "Cryptographically Generated Addresses (CGA)",
              RFC 3972, March 2005.

   [RFC4389]  Thaler, D., Talwar, M., and C. Patel, "Neighbor Discovery
              Proxies (ND Proxy)", RFC 4389, April 2006.

   [RFC4861]  Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
              "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
              September 2007.

   [RFC4862]  Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
              Address Autoconfiguration", RFC 4862, September 2007.

   [RFC5213]  Gundavelli, S., Ed., Leung, K., Devarapalli, V.,
              Chowdhury, K., and B. Patil, "Proxy Mobile IPv6",
              RFC 5213, August 2008.

   [RFC6275]  Perkins, C., Ed., Johnson, D., and J. Arkko, "Mobility
              Support in IPv6", RFC 6275, July 2011.

   [RFC6494]  Gagliano, R., Krishnan, S., and A. Kukec, "Certificate
              Profile and Certificate Management for SEcure Neighbor
              Discovery (SEND)", RFC 6494, February 2012.

   [RSA]      RSA Laboratories, "PKCS #1 v2.1: RSA Cryptography
              Standard", June 2002.

   [SHA1]     National Institute of Standards and Technology, "Secure
              Hash Standard", FIPS PUB 180-1 , April 1995.

11.2.  Informative References

   [RFC3756]  Nikander, P., Ed., Kempf, J., and E. Nordmark, "IPv6
              Neighbor Discovery (ND) Trust Models and Threats",
              RFC 3756, May 2004.

   [RFC5909]  Combes, J-M., Krishnan, S., and G. Daley, "Securing
              Neighbor Discovery Proxy: Problem Statement", RFC 5909,
              July 2010.

Authors' Addresses

   Suresh Krishnan
   Ericsson
   8400 Decarie Blvd.
   Town of Mount Royal, QC
   Canada

   Phone: +1 514 345 7900 x42871
   EMail: suresh.krishnan@ericsson.com


   Julien Laganier
   Juniper Networks
   1094 North Mathilda Avenue
   Sunnyvale, CA  94089
   USA

   Phone: +1 408 936 0385
   EMail: julien.ietf@gmail.com


   Marco Bonola
   Rome Tor Vergata University
   Via del Politecnico, 1
   Rome  I-00133
   Italy

   Phone:
   EMail: marco.bonola@gmail.com


   Alberto Garcia-Martinez
   U. Carlos III de Madrid
   Av. Universidad 30
   Leganes, Madrid  28911
   Spain

   Phone: +34 91 6248782
   EMail: alberto@it.uc3m.es
   URI:   http://www.it.uc3m.es/

ISO Plain Language

On this page
PROBLEMSEND signs neighbour discovery messages with the private key of the address owner or of the router, so a node that answers on another node's behalf cannot use it.
MECHANISMThe memo adds a Secure Proxy ND certificate that authorises a proxy for a range of addresses, a new Proxy Signature option that carries the proxy's signature, and processing rules that treat a message with a valid Proxy Signature option as secure.
SCOPEIt is an Experimental document. It covers only the messages the proxy produces; the security of a proxied message without the new option is the same as for an unsecured message.

§1Introduction

SEND specifies a method for securing Neighbor Discovery signaling against specific threats. As defined today, SEND assumes that the node sending a Neighbor Discovery message is the owner of the address from which the message is sent, or possesses a key that authorizes the node to act as a router, so that it holds the private key or keys used to generate the digital signature on each message. This means the Proxy Neighbor Discovery signaling performed by nodes that do not hold the address owner's private key, or a router's key, cannot be secured using SEND.

The memo extends the SEND specification with support for Proxy Neighbor Discovery, and calls that extension Secure Proxy ND Support for SEND. The motivating problem is that a proxy advertises an address that is not its own, and under plain SEND the advertiser is required to generate a valid RSA Signature option, which in turn requires holding the key pair that was used to generate a Cryptographically Generated Address or that was associated to a router certificate.

Neighbour discovery in IPv6 lets a node ask who owns an address, and lets routers announce themselves. SEND signs those messages so nobody can lie. But the rule is that only the owner of an address, or an authorised router, may sign for it. A router that answers on behalf of a distant node therefore has nothing it is allowed to sign with.

§4Secure Proxy ND Overview

The original SEND specification implicitly assumed that only the node sending a Neighbor Discovery message is the owner of the address it comes from. That assumption does not allow proxying, so the memo defines three extensions to separate the roles of owner and advertiser.

The first is a Secure Proxy ND certificate, a certificate authorizing an entity to act as a Neighbor Discovery proxy. It is an X.509v3 certificate in which the purpose for which the certificate is issued is specified explicitly, as described in a companion document. Such a certificate includes one or more KeyPurposeId values that can authorize a proxy to sign Router Advertisement and Redirect messages, or to sign Neighbor Advertisement, Neighbor Solicitation or Router Solicitation messages on behalf of other nodes. The inclusion of this value allows the certificate owner to perform proxying of SEND messages for a range of addresses indicated in the same certificate, and the certificate can be exchanged through the Authorization Delegation Discovery process defined in SEND.

The second is a new Neighbor Discovery option called the Proxy Signature option. It contains the hash value of the public key of the proxy and the digital signature of the SEND message computed with the private key of the proxy. The hash is computed over the public key contained in the Secure Proxy ND certificate. When a Neighbor Discovery message contains a Proxy Signature option it must not contain CGA or RSA Signature options, and the Proxy Signature option must be appended to any Neighbor Discovery message to secure it.

The third is a modification of the SEND processing rules for all Neighbor Discovery messages: Neighbor Advertisement, Neighbor Solicitation, Router Solicitation, Router Advertisement and Redirect. When any of these messages containing a Proxy Signature option is validated, it is considered secure.

The extensions are applied in a particular way. A Secure ND Proxy that proxies messages on behalf of a node uses the Proxy Signature option to protect them, and becomes part of the trusted infrastructure just like a SEND router. Messages built by synthesis follow the Neighbor Discovery for IPv6 specification, and translated messages result from the processing rules of the Neighbor Discovery Proxy specification. In order for nodes to validate secured proxied messages, the nodes must know the Secure Proxy ND certificate and apply the modified processing rules; the memo calls these SPND nodes. The rules for generating messages in SPND nodes do not change, so those nodes behave as defined in SEND when they send messages. To let SPND nodes know the certification path required to validate the public key of the proxy, devices responding to Certification Path Solicitation messages with Certification Path Advertisement messages are extended to support the certificate format, and are configured with the appropriate certification path.

Three pieces work together. A certificate says which addresses a proxy may speak for. A new option in the message carries the proxy's signature. And the checking rules on the receiving side treat a message with that option as genuine. A proxy that has this certificate becomes as trusted as a router.

THE THREE EXTENSIONS THAT SECURE PROXY ND ADDS
  • Secure Proxy ND certificateAn X.509v3 certificate that authorizes an entity to act as a proxy, with a KeyPurposeId for the messages it may sign.
  • Proxy Signature optionA new Neighbor Discovery option carrying a hash of the proxy's public key and the proxy's signature over the message.
  • Modified SEND processing rulesA Neighbor Discovery message that carries a valid Proxy Signature option is treated as secure.

§5.1The Proxy Signature Option

The Proxy Signature option allows signatures based on public keys to be attached to Neighbor Discovery messages. Its layout has a Type field whose value is 32, a Length field giving the length of the option including the Type, Length, Reserved, Key Hash, Digital Signature and Padding fields in units of 8 octets, a 16-bit Reserved field that the sender must initialize to zero and the receiver must ignore, a 128-bit Key Hash field, a variable-length Digital Signature field, and a variable-length Padding field.

The Key Hash holds the most significant, leftmost, 128 bits of a SHA-1 hash of the public key used for constructing the signature. Its purpose is to associate the signature with a particular key known by the receiver, and such a key must be the same one within the corresponding Secure Proxy ND certificate.

The Digital Signature is a variable-length field containing a PKCS#1 v1.5 signature, constructed with the sender's private key over a sequence of octets. The sequence is: the 128-bit CGA Message Type tag value for Secure Proxy ND, which is 0x09F5 2BE5 3B62 4C76 CB96 4E7F CDC9 2804 and was generated randomly by the editor of the specification; the 128-bit Source Address field from the IP header; the 128-bit Destination Address field from the IP header; the 8-bit Type, 8-bit Code and 16-bit Checksum fields from the ICMP header; the NDP message header, starting from the octet after the ICMP Checksum field and continuing up to but not including NDP options; and all the NDP options preceding the Proxy Signature option. The signature is computed with the RSASSA-PKCS1-v1_5 algorithm and a SHA-1 hash, and its length is determined by the ASN.1 BER coding of the PKCS#1 v1.5 signature. The Padding field holds the padding, and its length is the length of the option minus the length of the other fields.

The option carries a fingerprint of the proxy's public key, so the receiver knows which key to check against, and a signature over the parts of the packet that matter: the addresses, the ICMP header, the message header and the options that came before it. The proxy's own option is left out of the signed part.

THE FIXED PART OF THE PROXY SIGNATURE OPTION
PS option, fixed fields
FieldNameSizeValueDescription
TYPEType1 byte32The option type, whose value is 32.
LENGTHLength1 byteLength of the option in units of 8 octets, including the signature and padding.
RESERVEDReserved2 bytesReserved for future use; the sender must set it to zero and the receiver must ignore it.
KEY-HASHKey Hash16 bytesThe leftmost 128 bits of a SHA-1 hash of the public key used to construct the signature, so the receiver knows which key to check.

§5.2Processing Rules

A Secure ND Proxy performs all the operations described in the SEND specification, with new processing rules so that the receiving node can identify an authorized proxy generating a translated or synthetic message for a proxied address. The signature of the proxy is performed over all the Neighbor Discovery Protocol options present in the message, and the Proxy Signature option is appended as the last option.

On the sending side, a proxy must not use a key to sign message types that do not correspond to the authorization granted to that key. Neighbor Advertisement, Neighbor Solicitation and Router Solicitation messages must be signed with a key whose certificate carries a KeyPurposeId of id-kp-sendProxiedOwner, and the source addresses of the messages must be encompassed in the prefix associated with that certificate. Router Advertisement and Redirect messages must be signed with a key whose certificate carries a KeyPurposeId of id-kp-sendProxiedRouter, and the prefix included in the Router Advertisement for on-link determination or stateless address autoconfiguration, and the Target Address of the Redirect, must be encompassed in that prefix. A secured message sent by a proxy for a proxied address must contain a Proxy Signature option and must not contain either CGA or RSA Signature options.

The input to the process is either a synthetic message, which must be constructed as described in the Neighbor Discovery for IPv6 specification, or a translated message. For translation, the authenticity of the intercepted message must first be verified: if it is a SEND message it must be validated as specified in SEND, and if it contains a Proxy Signature option its authenticity must be verified under the receiver rules. After validation the CGA, RSA or Proxy Signature options of the original message must be removed, and the message to be translated is processed according to the Neighbor Discovery Proxy specification. The proxy then adds Timestamp and Nonce options according to the rules in SEND, with the timestamp generated by the proxy and the nonce taken from the intercepted message when translating one, generated by the proxy when synthesising a solicitation, and corresponding to the solicitation being answered when synthesising an advertisement. Finally the Proxy Signature option is added as the last option and the data is signed.

On the receiving side, a SEND message without a Proxy Signature option is treated as specified in SEND. A message with one is processed as follows. The receiver must ignore any RSA and CGA options and any options that come after the first Proxy Signature option, for both signature verification and Neighbor Discovery processing. The Key Hash must indicate a known public key, with a valid certification path known between the receiver's trust anchor and the sender's public key, and the certificate must contain the appropriate KeyPurposeId value and prefix for the message, so id-kp-sendProxiedRouter for Router Advertisement and Redirect messages and id-kp-sendProxiedOwner for Neighbor Advertisement, Neighbor Solicitation and Router Solicitation messages. The Digital Signature field must have correct encoding and its verification must show that the signature was calculated as specified. The Nonce and Timestamp options are then processed as in SEND with the RSA Signature option replaced by the Proxy Signature option, and the receiver should store the peer-related timing information separately for each different proxy, identified by the different Key Hash values, and separately from the timing information for the address being proxied. Messages with the Override bit set must override an existing cache entry regardless of how it was created, and when the Override bit is not set the advertisement must not update a cached link-layer address created securely. Messages whose verification fails must be silently discarded if the node accepts only secured messages, and may be accepted but treated as unsecured otherwise.

The proxy signs with a key that its certificate allows for that kind of message and that address range. The receiver ignores anything after the proxy's option, checks that the certificate matches the message, checks the signature, and applies the usual freshness checks. A message that fails is either thrown away or treated as unsigned, depending on the node's configuration.

A HOME AGENT ANSWERING A SOLICITATION FOR A MOBILE NODE
Node on the home linkHome agent
  1. ICMPv6 NSA solicitation for the mobile node's home address, sent with its own CGA and RSA signature.
  2. ICMPv6 NA with PS signatureThe home agent answers for the mobile node, with a timestamp, a nonce and its own proxy signature.

§7Backward Compatibility

The memo discusses how a Secure ND Proxy behaves when the nodes it serves do not all implement the same things. A node that does not implement SEND at all is called a non-SEND node, and one that implements SEND as defined in RFC 3971 but not this specification is called an RFC 3971 node. A node that receives and validates messages according to this specification is a Secure Proxy ND node.

The rule the memo gives is that a Secure ND Proxy must synthesize and translate messages containing the Proxy Signature option for SPND and RFC 3971 hosts, and must not do so for non-SEND nodes. Neighbor Discovery advertisements in response to solicitations generated by a Secure ND Proxy must either be secured or not secured according to the nature of the proxied node, not according to the secure or unsecured nature of the solicitation message.

To apply this rule, the proxy needs to know the security capabilities of the proxied node, and how that information is acquired depends on the scenario. For scenarios in which messages are translated for nodes that can arrive on the link where the proxy operates, only messages validated under SEND, or under the receiver rules of this memo for messages containing a Proxy Signature option, must be proxied securely. Unsecured messages could be proxied if unsecured operation is enabled, but the message the proxy produces must not include a Proxy Signature option.

For scenarios in which messages are synthesized on behalf of remote nodes, the considerations differ. For Mobile IPv6, if the mobile node can return to the home link, the proxy has to know whether the node could use SEND to defend its address. A home agent that included the Proxy Signature option for a non-SEND mobile node would make the messages it sends more preferred than the messages of that node when it returns, and not using the option for an RFC 3971 or SPND mobile node would make the address in the home link more vulnerable while the node was away, defeating the purpose of the mechanism. The memo also notes that a configuration option may exist in a proxy to specify the non-SEND nodes it is connected to, so that the messages sent to them are not processed under this specification, for performance reasons.

Networks mix nodes that understand SEND, nodes that understand only the original SEND, and nodes that understand neither. The proxy has to decide when to use the new option, and the rule follows the node being served rather than the message it received.

§8Security Considerations

The mechanism introduces a new option allowing a proxy to synthesize or translate a message for a proxied address, to redirect traffic for given target addresses, or to advertise prefix information by means of Router Advertisement messages. An SPND node accepts such a message only if it includes a valid Proxy Signature option generated by a properly authorized proxy, with a certificate carrying a KeyPurposeId of id-kp-sendProxiedOwner for the Neighbor Advertisement, Neighbor Solicitation and Router Solicitation messages, or id-kp-sendProxiedRouter for the Router Advertisement and Redirect messages. Such a message has protection against the threats presented in SEND equivalent to a message signed with an RSA Signature option.

The security of proxied messages that do not include a Proxy Signature option is the same as that of an unsecured message, and so is the security of a proxied message received by a non-SEND host or an RFC 3971 host. When a message including a Proxy Signature option is received by an SPND node, any CGA or RSA options also included are removed and the remaining message processed. Although properly formed proxied messages must not include Proxy Signature and CGA or RSA options at the same time, discarding them if they appear does not affect security. If the option validates, the information in the message was validly generated by a proxy and should be honored, with anti-replay protection provided by the Nonce and Timestamp options. If it does not validate, the message is treated as unsecured. There is no gain for an attacker from appending false or old CGA or RSA information to a message secured by a proxy.

The memo notes that a compromised proxy holding a certificate with id-kp-sendProxiedRouter can, like a compromised router, siphon off traffic from the host or mount a man-in-the-middle attack for hosts communicating to off-link hosts. A compromised proxy holding id-kp-sendProxiedOwner can do the same for communication between on-link hosts, even if those hosts use SEND.

A signed proxy message is as trustworthy as one signed by a router. But a proxy that has been compromised is a serious problem: it can reroute traffic for the addresses it is trusted to speak for, which is the same risk a compromised router carries.

§7References