RFC 6494

Certificate Profile and Certificate Management for SEcure Neighbor Discovery (SEND)

πŸ“… published February 2012, from ietf

RFC 6494: Certificate Profile and Certificate Management for SEcure Neighbor Discovery (SEND) πŸ’–

Okay bestie, this one is a standards track doc from the IETF, dated February 2012. It was written by R. Gagliano (Cisco Systems), S. Krishnan (Ericsson), and A. Kukec (Enterprise Architects). It has ISSN 2070-1721, and it updates RFC 3971. The header doesn't list anything it obsoletes, so nothing gets retired here 🌸

Abstract ✨

SEND (SEcure Neighbor Discovery) uses X.509v3 certificates to check that a router is actually allowed to be a router πŸŽ€ This doc sets up a certificate profile for SEND that's built on resource certificates, and it also lists the extended key usage values SEND needs.

Status of This Memo πŸ“œ

This is an Internet Standards Track document, so it's officially serious business πŸ’…

It's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check Section 2 of RFC 5741 πŸ¦‹

For the current status, any errata, and where to send feedback, go to http://www.rfc-editor.org/info/rfc6494.

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

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which you can find at http://trustee.ietf.org/license-info (as in effect on the publication date). Please read those carefully, because they spell out your rights and restrictions for this doc. Any Code Components pulled out of this document have to include the Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Simplified BSD License 🫢

Table of Contents πŸ—‚οΈ

1. Introduction ....................................................2
2. Requirements Notation ...........................................3
3. Terminology .....................................................3
4. SEND Certificate Profile ........................................4
   4.1. Unconstrained Certified Subnet Prefixes ....................4
5. Deployment Models ...............................................5
6. Trust Anchor Material ...........................................5
7. Extended Key Usage Values .......................................6
8. CRL Profile and Revocation ......................................7
   8.1. Online Certificate Status Protocol (OCSP) Considerations ...7
9. Certificate Validation ..........................................8
10. IANA Considerations ............................................8
11. Security Considerations ........................................8
12. Acknowledgements ...............................................8
13. References .....................................................9
   13.1. Normative References ......................................9
   13.2. Informative References ....................................9
Appendix A. Router Authorization Certificate Example ..............10
Appendix B. ASN.1 Module ..........................................11

1. Introduction 🌸

SEND [RFC3971] uses X.509v3 certificates that include the [RFC3779] extension for IPv6 addresses. The point is to certify that a router is authorized to advertise the IPv6 prefix for the Neighbor Discovery (ND) protocol πŸ‘‘ The SEND spec already has a basic certificate profile, but this doc replaces the profile for Router Authorization Certificates from [RFC3971]. So certificates used in SEND (by routers, proxies, or address owners) MUST conform to this certificate profile and MAY conform to the original profile in [RFC3971] ✨

The Resource Public Key Infrastructure (RPKI) is the global PKI that backs up who gets which IP address space 🌍 RPKI is the centralized model from Section 6.2 of [RFC3971]. Consequently, SEND will use the RPKI Certificate Profile and the certificate validation process detailed in [RFC6487]. Consequently, the certificate validation method in [RFC3971] gets updated with the one in [RFC6487] πŸ”₯

Here's the tricky bit: the [RFC3779] IPv6 address extension doesn't say what a node is allowed to do with the certified IPv6 space. So you'd have no idea why the certificate was issued πŸ™ˆ To fix that, you use the ExtKeyUsageSyntax field (optional in RPKI certificates) of the X.509 certificate to say why it was issued. This doc specifies four extended key usage values for SEND: one for routers, two for proxies, and one for address owners πŸ’…

RFC 3971 described two deployment models, centralized and decentralized. This doc describes the different deployment models that work with the SEND certificates defined here πŸ¦‹

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 πŸ“–

Here's the glossary, copied exactly as it appears:

Certified IPv6 address space  IPv6 address space included in an
                              X.509v3 certificate using the extension
                              for IPv6 addresses [RFC3779].

End-entity (EE)               An entity in the PKI that is not a
                              Certification Authority (CA).

ISP                           Internet Service Provider.

NIR                           National Internet Registry.

RIR                           Regional Internet Registry.

RPKI                          Resource PKI established in accordance
                              with [RFC6480].

RPKI certificates             Certificates as defined in [RFC6487].

SEND certificates             Certificates as described in [RFC3971]
                              and extended in this document.  They
                              are end-entity certificates that belong
                              either to SEND routers, SEND hosts, or
                              SEND proxies:

                              *  Router Authorization Certificates as
                                 defined in [RFC3971].

                              *  Owner Authorization Certificates as
                                 defined in [RFC3971].

                              *  Secure Proxy ND Certificates as
                                 defined in [RFC6496].

SEND KeyPurposeId             An Extended Key Usage (EKU) value for
                              SEND, such as the four introduced in
                              this document.

4. SEND Certificate Profile πŸ”

SEND certificates MUST comply with the RPKI resource profile in [RFC6487] πŸ’– There's an example Router Authorization Certificate in Appendix A.

Sections 2, 4.9.10, and 4.9.11 of [RFC6487] say that RFC 3779 resource extensions MUST be marked as critical and MUST be present in all resource certificates. So SEND certificates MUST include the IP Address Delegation extension [RFC3779]. That extension MUST include at least one address block for the IPv6 Address Family (AFI=0002), as described in Section 4.9.10 of [RFC6487]. And SEND certificates MUST NOT have more than one IP Address Delegation extension 🫢

4.1. Unconstrained Certified Subnet Prefixes 🌈

Section 7.3 of [RFC3971] defines the Unconstrained Certified subnet prefixes category. It does this by using certificates that have either the null prefix or no prefix extension at all πŸ“

With the RPKI Certificate Profile, prefix extensions are mandatory, and the null prefix MUST be validated 😭 But a certificate can inherit its parent's prefix or range by using the "inherit" element for the IPv6 Address Family Identifier (AFI), as defined in [RFC3779]. [RFC6487] allows the use of the "inherit" element πŸ’œ

So this doc updates Section 7.3 of [RFC3971] by adding the following text under Unconstrained:

Network operators that do not want to constrain routers to route particular subnet prefixes, but rather inherit those prefixes from the routers' parent certificates, should configure routers with certificates containing the "inherit" element for the IPv6 AFI.

5. Deployment Models 🧚

RFC 3971 describes two deployment models, centralized and decentralized. They were told apart by whether there's one trust anchor or many 🌸 This doc brings in two new deployment models that aren't based on how many trust anchors there are, but on where SEND is deployed πŸ’…

The local SEND deployment model covers cases where SEND is confined to one administrative domain. In this setup, SEND deployment MAY be done independently of whether there's deployment higher up in the RPKI hierarchy. For example, an end user could run local SEND without needing RPKI deployed at their ISP πŸ™ˆ This model needs local trust anchors and configured islands of trust. It MAY also include Unique Local Addresses (ULAs) [RFC4193] πŸŽ€

The public SEND deployment models cover cases where SEND deployment is linked to RPKI deployment, as described in [RFC6480]. Trust anchor material MAY be part of a different administrative domain, like RIRs, NIRs, or ISPs. It's a global model that's great for mobile users 🌍

These two models aren't mutually exclusive, so a hybrid model that mixes features from both is totally possible πŸ¦‹ In one hybrid setup, most IP address resources (like global unicast addresses) get certified under the global RPKI, while some others (like ULAs) get certified under local trust anchors ✨

6. Trust Anchor Material πŸ”‘

Relying parties (like end hosts that implement SEND and process these router certificates) MUST be configured with one or more trust anchors so they can validate the routers' certificates πŸ‘‘ [RFC6495] and Section 6.5 of [RFC3971] list the trust anchor configuration options for end hosts using SEND πŸ’–

In the local SEND deployment model, you can use as a trust anchor a certificate whose RFC 3779 address extension includes the prefix ::/0. In that case, no new trust anchor material is needed when renumbering. However, if you move from the local deployment model to the public deployment model, new trust anchor material will have to be distributed to relying parties πŸ”₯

7. Extended Key Usage Values ✨

okay bestie, so the Internet PKI doc [RFC5280] defines the extended key usage X.509 certificate extension πŸ”. It lists one or more purposes the certified public key can be used for πŸ’…. It can team up with the key usage extension, which says what the key is intended for. The EKU extension is optional in [RFC6487] for end-entity certs, but it MUST be present when you're issuing end-entity certificates for SEND 🫢.

here's the EKU extension syntax again, just so you have it handy πŸŽ€:

      ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId

      KeyPurposeId ::= OBJECT IDENTIFIER

this spec defines four KeyPurposeId values πŸ¦‹. One is for authorizing routers (Router Authorization Certificates). Two are for authorizing proxies (Secure Proxy ND Certificates). And one is for address owners (Owner Authorization Certificates) πŸ‘‘. more KeyPurposeId values can show up later in Standards Track docs, so keep your eyes open πŸ‘€.

the router authorization value (id-kp-sendRouter) means the cert was issued so the router can send Router Advertisement (RA) and Redirect messages for any prefix(es) covered by the IP address space in the X.509 extensions for IP addresses 🌸. "covered" here follows the definition in Section 7.1 of [RFC6487], so go check that if you want the full picture πŸ€“.

the proxied routing authorization value (id-kp-sendProxiedRouter) means the cert was issued so the proxy can proxy RA and Redirect messages for any prefix(es) inside that same IP address space 🧚.

the owner authorization value (id-kp-sendOwner) means the node is allowed to use any address(es) inside that IP address space πŸ’–. for any address in that cert, the node can assign it to an interface, send and receive traffic to and from it, and send or respond to NS, NA, and RS messages about that address. it's giving full owner energy πŸ‘‘βœ¨.

the proxied owner authorization value (id-kp-sendProxiedOwner) means the proxy can handle Neighbor Solicitation (NS), Neighbor Advertisement (NA), and Router Solicitation (RS) messages for any address inside that IP address space 🌈.

the OIDs are below πŸ’…:

      send-kp OBJECT IDENTIFIER ::=
        { iso(1) identified-organization(3) dod(6) internet(1)
          security(5) mechanisms(5) pkix(7) kp(3) }

      id-kp-sendRouter OBJECT IDENTIFIER ::= { id-kp 23 }

      id-kp-sendProxiedRouter OBJECT IDENTIFIER ::= { id-kp 24 }

      id-kp-sendOwner OBJECT IDENTIFIER ::= { id-kp 25 }

      id-kp-sendProxiedOwner OBJECT IDENTIFIER ::= { id-kp 26 }

as [RFC6487] explains, the extended key usage extension, if it's there, MUST be non-critical πŸ™ˆ.

relying parties MUST require the extended key usage extension to be present in a cert 🧐. they MAY also require one particular KeyPurposeId value to be there, like id-kp-sendRouter or id-kp-sendProxiedRouter. if there are multiple KeyPurposeId values, relying parties don't need to recognize all of them, as long as the one they require is included 🫢. and here's the big one: relying parties MUST reject any cert that doesn't contain at least one SEND KeyPurposeId, even if it includes the anyExtendedKeyUsage OID defined in [RFC5280] πŸš«πŸ’€. no sneaking through with "any" πŸ™…β€β™€οΈ.


8. CRL Profile and Revocation πŸ”

RPKI needs Certificate Revocation Lists (CRLs) [RFC6487] πŸ“œ. the host is responsible for getting the CRLs it needs and running the certificate validation method from [RFC6487] πŸ’….

8.1. Online Certificate Status Protocol (OCSP) Considerations πŸ•΅οΈβ€β™€οΈ

a host MAY use OCSP [RFC2560] to check whether a certificate has been revoked 🌸.

since [RFC6487] is the base certificate profile for SEND, the host SHOULD NOT assume certs will have an OCSP server URI in their Authority Information Access (AIA) extension πŸ™ˆ. this is especially true in the SEND public deployment model, because OCSP services aren't required by [RFC6484] πŸ€·β€β™€οΈ. don't count on it, bestie πŸ’….


9. Certificate Validation βœ…

this section updates Section 6.3.1 of [RFC3971] by adding new validations without causing any conflict πŸŽ€.

the host MUST perform the certificate validation method described in [RFC6487] πŸ”. certs that use the "inherit" element, where a parent prefix or range has to exist, are handled as described in [RFC3779] 🧩.

the host MUST also verify that the KeyPurposeId value for the Neighbor Discovery message type is present, as described in Section 7 πŸ’–. no skipping this step, periodt πŸ’….


10. IANA Considerations πŸ“‹

this document uses object identifiers to identify the EKUs, plus the ASN.1 (Abstract Syntax Notation One) module in Appendix B 🧚. the EKUs and the ASN.1 module OID are registered in an arc that IANA delegated to the PKIX Working Group 🌈.


11. Security Considerations 🚨

okay this part is SERIOUS bestie, so listen up πŸ‘‚πŸ”₯. the certification authority has to make sure the correct extended key usage values go into every certificate it issues πŸ”. relying parties can accept or reject a certificate for a given use based on what these extensions say βœ…. if the EKU field is represented incorrectly, the relying party might reject a perfectly fine certificate, or accept one it should have rejected 😭.

since a SEND certificate attests that its subject is authorized to play a given role in the SEND protocol, certificates with incorrect EKU values can enable some of the same attacks that SEND was built to prevent πŸš¨πŸ’€.

for example, if a malicious host can get a certificate that lets it act as a router for a given prefix, then it can pretend to be a router for that prefix πŸ™ˆ. it could do this to attract traffic from local nodes 😱. not it, absolutely not πŸ™…β€β™€οΈ.


12. Acknowledgements 🫢

the authors want to thank Alberto Garcia, Stephen Kent, Sean Turner, Roni Even, Richard Barnes, Alexey Melnikov, Jari Arkko, David Harrington, and Tim Polk for their reviews and suggestions on earlier versions of this document πŸ’œπŸŒΈ. the whole squad showed up πŸ‘‘.


13. References πŸ“š

13.1. Normative References πŸŽ€

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

   [RFC2560]  Myers, M., Ankney, R., Malpani, A., Galperin, S., and C.
              Adams, "X.509 Internet Public Key Infrastructure Online
              Certificate Status Protocol - OCSP", RFC 2560, June 1999.

   [RFC3779]  Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP
              Addresses and AS Identifiers", RFC 3779, June 2004.

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

   [RFC4193]  Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
              Addresses", RFC 4193, October 2005.

   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation List
              (CRL) Profile", RFC 5280, May 2008.

   [RFC6484]  Kent, S., Kong, D., Seo, K., and R. Watro, "Certificate
              Policy (CP) for the Resource Public Key Infrastructure
              (RPKI)", BCP 173, RFC 6484, February 2012.

   [RFC6487]  Huston, G., Michaelson, G., and R. Loomans, "A Profile for
              X.509 PKIX Resource Certificates", RFC 6487,
              February 2012.

   [RFC6495]  Gagliano, R., Krishnan, S., and A. Kukec, "Subject Key
              Identifier (SKI) SEcure Neighbor Discovery (SEND) Name
              Type Fields", RFC 6495, February 2012.

13.2. Informative References πŸ“–

   [RFC6480]  Lepinski, M. and S. Kent, "An Infrastructure to Support
              Secure Internet Routing", RFC 6480, February 2012.

   [RFC6496]  Krishnan, S., Laganier, J., Bonola, M., and A. Garcia-
              Martinez, "Secure Proxy ND Support for SEcure Neighbor
              Discovery (SEND)", RFC 6496, February 2012.

Appendix A. Router Authorization Certificate Example ✨

okay so this is the example cert, aka the "here's what it actually looks like" moment πŸŽ€ it's a full text dump of a router authorization cert, so you can see every field lined up like an outfit check πŸ’…

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 249 (0xf9)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=EXAMPLE-CA-2342342652346
        Validity
            Not Before: Jul  2 10:06:32 2010 GMT
            Not After : Jul  2 10:06:32 2011 GMT
        Subject: CN=SEND-EXAMPLE-123432
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:b7:06:0d:8e:f7:39:0a:41:52:93:59:a8:f5:63:
                    3f:2e:3d:24:17:9d:19:aa:09:ff:c0:2a:f3:c6:99:
                    d7:34:0d:bf:f1:e9:73:b5:8f:dc:d4:91:d6:5d:cb:
                    9c:b8:2b:41:63:c1:8f:f7:48:54:02:89:07:24:c3:
                    b0:6e:11:5a:7d:c0:38:88:4b:d9:3b:93:c7:ca:4d:
                    a4:00:a2:d3:6d:14:15:8f:15:08:4d:4e:b3:8a:cc:
                    de:2d:e0:7a:9b:c0:6e:14:f6:a7:ae:b9:e0:c5:18:
                    60:75:3d:d3:50:00:47:0d:86:5b:1c:a0:85:81:af:
                    2b:84:98:49:7d:60:a2:e8:4f:6d:40:ba:d5:fe:de:
                    de:41:53:c7:c4:f4:d3:1a:41:cd:dc:9f:08:43:33:
                    48:00:57:e4:56:93:7d:dd:19:12:e8:bf:26:b3:4b:
                    30:ac:b8:9c:b1:37:05:18:3c:7b:6b:26:d7:c9:15:
                    c9:4a:eb:1b:fa:92:38:46:27:44:96:8a:a1:12:c1:
                    09:77:4a:7b:a5:07:88:a6:36:30:98:70:79:b6:44:
                    7e:b1:c9:4c:5b:11:56:e8:14:50:f7:f8:e5:ed:f1:
                    ac:a4:31:46:36:77:05:c9:63:fe:c3:ab:54:e2:bd:
                    79:1d:14:d1:c2:80:36:d3:be:e6:c7:a2:47:59:1b:
                    75:9f
                Exponent: 65537 (0x10001)

        X509v3 extensions:
            X509v3 Authority Key Identifier:
                keyid:4C:5D:56:82:15:8A:67:A6:8C:69:67:68:88
                :6F:15:E5:C9:96:58:EB

            X509v3 CRL Distribution Points:

                Full Name:
                  URI:rsync://rsync.example.exampledomain/
                  EXAMPLE-CA-2342342652346/EXAMPLE-CA.crl

            X509v3 Subject Key Identifier:
                B8:69:EB:36:23:F1:C4:21:65:DD:13:76:EE:90:AF
                :F7:CD:E3:61:CD
            X509v3 Key Usage: critical
                Digital Signature
            sbgp-ipAddrBlock: critical
                IPv6:
                  2001:db8:cafe:bebe::/64

            X509v3 Extended Key Usage:
                1.3.6.1.5.5.7.3.23
    Signature Algorithm: sha256WithRSAEncryption
        92:14:38:6e:45:83:1b:cb:7c:45:0d:bc:7f:6e:36:bf:82:cc:
        7e:00:91:ea:f4:24:43:cc:00:3c:3f:c2:99:0c:c6:b9:20:2e:
        ca:dc:df:94:0d:c9:a1:75:c4:5c:39:a1:cf:9f:e1:40:9c:aa:
        a9:80:76:d1:3a:91:d9:db:2f:cd:3c:05:50:52:eb:28:47:d0:
        ab:d3:fd:6f:30:17:16:7f:c6:0f:2b:25:bb:db:29:d7:bb:4e:
        f3:7c:2d:e1:04:b7:f0:bc:d5:8a:ba:8c:0d:39:22:48:02:d1:
        67:fb:35:5c:b6:83:03:63:7c:73:03:70:20:de:fb:d7:12:ed:
        6f:a1:ff:b2:a6:39:fb:55:9a:07:bd:68:40:0f:6f:d5:24:34:
        cf:e8:dd:76:33:2a:d0:b9:1b:ae:a8:68:86:17:f8:13:35:0e:
        f6:04:ec:2a:39:88:06:70:c6:e8:56:87:f7:35:54:2a:28:2c:
        92:47:a9:89:39:d7:72:24:21:9d:02:52:f9:7c:76:7f:e9:cd:
        09:6e:82:f4:da:6c:f9:72:b2:64:98:b5:0c:6a:38:8d:81:e5:
        fc:50:46:6f:38:40:56:06:92:5a:e0:86:5d:55:f5:7b:85:b2:
        68:4f:49:72:e0:fa:2c:bf:9e:7d:aa:28:17:ca:04:b8:ae:69:
        c9:04:28:12

Appendix B. ASN.1 Module 🧚

this is the ASN.1 module, the bit that defines the OID arc and the extended key usage values. it's giving official paperwork energy but it's so necessary πŸ“œ

SENDCertExtns { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-send-cert-extns(71) }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

-- OID Arc

id-kp OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) kp(3) }
-- Extended Key Usage Values

id-kp-sendRouter OBJECT IDENTIFIER ::= { id-kp 23 }
id-kp-sendProxiedRouter OBJECT IDENTIFIER ::= { id-kp 24 }
id-kp-sendOwner OBJECT IDENTIFIER ::= { id-kp 25 }
id-kp-sendProxiedOwner OBJECT IDENTIFIER ::= { id-kp 26 }

END

Authors' Addresses 🫢

the people who wrote this, with their contact info, so you can slide into their inbox if you have questions πŸ’Œ

Roque Gagliano
Cisco Systems
Avenue des Uttins 5
Rolle  1180
Switzerland

EMail: rogaglia@cisco.com
Suresh Krishnan
Ericsson
8400 Decarie Blvd.
Town of Mount Royal, QC
Canada

Phone: +1 514 345 7900 x42871
EMail: suresh.krishnan@ericsson.com
Ana Kukec
Enterprise Architects
46/525 Collins St.
Melbourne, VIC 3000
Australia

EMail: ana.kukec@enterprisearchitects.com
πŸ“¦ where this page comes from