RFC 8209

A Profile for BGPsec Router Certificates, Certificate Revocation Lists, and Certification Requests

πŸ“… published September 2017, from ietf

πŸ“œ RFC 8209: A Profile for BGPsec Router Certificates, Certificate Revocation Lists, and Certification Requests πŸŽ€

okay bestie, this is the title block πŸ’… It's an IETF Request for Comments, RFC 8209, written by M. Reynolds (IPSw), S. Turner (sn3rd), and S. Kent (BBN). It's a Standards Track doc, dated September 2017, with ISSN 2070-1721. It updates RFC 6487 (the RPKI Resource Certificates Profile), and the header doesn't list anything it obsoletes 🫢


Abstract ✨

okay so the big idea is this πŸ¦‹ The doc defines a standard profile for X.509 certificates that help check Autonomous System (AS) paths in the Border Gateway Protocol (BGP), as part of an extension called BGPsec. BGP is the standard for inter-domain routing on the Internet, and it's literally the "glue" that holds the Internet together 🌈 BGPsec is one piece of the fix for BGP security, and its goal is full AS path validation using strong cryptographic primitives πŸ”

The end entity (EE) certificates in this profile get issued to routers inside an AS. Each one is issued under a Resource Public Key Infrastructure (RPKI) Certification Authority (CA) certificate, and both the CA certs and the EE certs include the AS Resource extension. An EE cert like this says that the router (or routers) holding the matching private key is authorized to send secure route advertisements for the AS(es) named in the cert πŸ‘‘ The doc also profiles the format of certification requests and spells out how Relying Parties (RPs) validate certificate paths for these EE certs. Since it extends the RPKI, it updates the RPKI Resource Certificates Profile (RFC 6487) ✨

Status of This Memo πŸ“‹

this is an Internet Standards Track document πŸ”₯

It's a product of the Internet Engineering Task Force (IETF), it represents the consensus of the IETF community, it got public review, and the Internet Engineering Steering Group (IESG) approved it for publication. You can find more on Internet Standards in Section 2 of RFC 7841 πŸ’œ

For the current status, any errata, and how to send feedback, check https://www.rfc-editor.org/info/rfc8209 🧚

Copyright (c) 2017 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 (https://trustee.ietf.org/license-info) as they were in effect on the publication date. Please actually read those, because they lay out your rights and restrictions. Code Components pulled out of this doc 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 the Simplified BSD License describes 🫢

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................3
      1.1. Terminology ................................................4
   2. Describing Resources in Certificates ............................4
   3. Updates to RFC 6487 .............................................6
      3.1. BGPsec Router Certificate Fields ...........................6
           3.1.1. Subject .............................................6
           3.1.2. Subject Public Key Info .............................6
           3.1.3. BGPsec Router Certificate Version 3
                  Extension Fields ....................................6
                  3.1.3.1. Basic Constraints ..........................6
                  3.1.3.2. Extended Key Usage .........................6
                  3.1.3.3. Subject Information Access .................7
                  3.1.3.4. IP Resources ...............................7
                  3.1.3.5. AS Resources ...............................7
      3.2. BGPsec Router Certificate Request Profile ..................7
      3.3. BGPsec Router Certificate Validation .......................8
      3.4. Router Certificates and Signing Functions in the RPKI ......8
   4. Design Notes ....................................................9
   5. Implementation Considerations ...................................9
   6. Security Considerations ........................................10
   7. IANA Considerations ............................................10
   8. References .....................................................11
      8.1. Normative References ......................................11
      8.2. Informative References ....................................12
   Appendix A. ASN.1 Module ..........................................14
   Acknowledgements ..................................................15
   Authors' Addresses ................................................15

1. Introduction πŸ¦‹

okay so this doc defines a profile for X.509 end entity (EE) certificates [RFC5280] that get used when certifying Autonomous System (AS) paths in the BGPsec protocol πŸ’– These certs are called "BGPsec Router Certificates" ✨ Whoever holds the private key for one of these is authorized to send secure route advertisements (BGPsec UPDATEs) for the AS(es) named in the cert πŸ‘‘ A router with that key is allowed to send route advertisements to its peers, and it identifies its AS number (ASN) as the source of those advertisements πŸ”₯

the key property here is that every AS along the AS path can check that the other ASes on the path actually authorized the advertisement of that route, to the next AS on the path 🌈 That's the whole BGPsec vibe πŸ’…

This doc is a profile of [RFC6487], which is itself a profile of [RFC5280], so this doc updates [RFC6487] πŸŽ€ It sets requirements for a Resource Certificate used as a BGPsec Router Certificate. In other words, it defines constraints on certificate fields and extensions so the cert is valid in this context 🧚 It also profiles the certification requests used to get BGPsec Router Certificates, and it spells out the Relying Party (RP) certificate path validation procedures for these certs ✨

1.1. Terminology πŸ“–

the doc assumes you already know the terms and concepts from "A Profile for X.509 PKIX Resource Certificates" [RFC6487], "BGPsec Protocol Specification" [RFC8205], "A Border Gateway Protocol 4 (BGP-4)" [RFC4271], "BGP Security Vulnerabilities Analysis" [RFC4272], "Considerations in Validating the Path in BGP" [RFC5123], and "Capabilities Advertisement with BGP-4" [RFC5492] 🫢

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here πŸ’œ (So lowercase versions don't count, bestie πŸ™ˆ)

2. Describing Resources in Certificates 🌸

Figure 1 shows some of the entities in the Resource Public Key Infrastructure (RPKI) and some of the stuff RPKI entities generate πŸ“ IANA issues a Certification Authority (CA) certificate to each Regional Internet Registry (RIR). The RIR then issues a CA certificate to an Internet Service Provider (ISP). The ISP issues EE certificates to itself so it can verify signatures on RPKI signed objects πŸ’… The CA also generates Certificate Revocation Lists (CRLs). These CA and EE certs are called "Resource Certificates," and they're profiled in [RFC6487] ✨ [RFC6480] pictured using Resource Certificates to verify manifests [RFC6486] and Route Origin Authorizations (ROAs) [RFC6482]. ROAs and manifests include the Resource Certificates used to verify them 🌈

                +---------+   +------+
                | CA Cert |---| IANA |
                +---------+   +------+
                         \
                      +---------+   +-----+
                      | CA Cert |---| RIR |
                      +---------+   +-----+
                              \
                             +---------+   +-----+
                             | CA Cert |---| ISP |
                             +---------+   +-----+
                              / |            | |
                   +-----+   /  |            | |   +-----+
                   | CRL |--+   |            | +---| ROA |
                   +-----+      |            |     +-----+
                                |            |   +----------+
                       +----+   |            +---| Manifest |
                     +-| EE |---+                +----------+
                     | +----+
                     +-----+

Figure 1 πŸ¦‹

This doc defines another type of Resource Certificate, called a "BGPsec Router Certificate" πŸŽ€ Its purpose is explained in Section 1, and it falls within the scope of appropriate uses defined in [RFC6484] πŸ’– Issuing BGPsec Router Certificates barely affects RPKI CAs, because the RPKI CA certificate and CRL profile stay the same (they're still as specified in [RFC6487]) ✨ The algorithms used to generate the RPKI CA certificates that issue BGPsec Router Certificates, and the CRLs needed to check their validity, also stay the same (they're still as specified in [RFC7935]) 🧚 The only real change is that RPKI CAs need to be able to process a profiled certificate request (see Section 3.2) signed with algorithms found in [RFC8208] πŸ”₯

BGPsec Router Certificates are only used to verify the signature on the BGPsec certificate request (only CAs process these) and the signature on a BGPsec UPDATE message [RFC8205] (only BGPsec routers process these) πŸ’… They are not used to process manifests and ROAs, or to verify signatures on Certificates or CRLs πŸ™ˆ

This doc only lists the differences between this profile and the one in [RFC6487] πŸ“ Note that BGPsec Router Certificates are EE certificates, so the algorithm agility procedure described in [RFC6916] isn't affected 🫢

3. Updates to RFC 6487 πŸ’«

3.1. BGPsec Router Certificate Fields 🌈

A BGPsec Router Certificate is consistent with the profile in [RFC6487] as modified by the specifications in this section πŸ’– So it's a valid X.509 public key certificate, and it's consistent with the PKIX profile [RFC5280] ✨ The differences between this profile and the one in [RFC6487] are specified in this section πŸŽ€

3.1.1. Subject πŸ’–

okay so for the common name, the encoding options that are supported are printableString and UTF8String ✨. for BGPsec Router Certificates, it is RECOMMENDED that the common name attribute contain the literal string ROUTER- followed by the 32-bit ASN [RFC3779] encoded as eight hexadecimal digits πŸŽ€. the serial number attribute should hold the 32-bit BGP Identifier [RFC4271] (aka the router ID), also encoded as eight hexadecimal digits 🌸

if there's more than one ASN, the Issuer gets to decide which one goes in the common name πŸ‘‘. and if the same certificate is issued to more than one router (so the private key is shared among them), the Issuer also decides which router ID goes in that name 🧚

3.1.2. Subject Public Key Info πŸ¦‹

go check out Section 3.1 of [RFC8208] for this one πŸ’…

3.1.3. BGPsec Router Certificate Version 3 Extension Fields 🌈

3.1.3.1. Basic Constraints πŸ™ˆ

BGPsec speakers are EEs, so the Basic Constraints extension must not be present, as per [RFC6487]. no basic constraints for the router era, bestie 🫢

3.1.3.2. Extended Key Usage πŸ‘‘

BGPsec Router Certificates MUST include the Extended Key Usage (EKU) extension. as specified in [RFC6487], this extension must not be marked critical πŸ”₯ this document defines one EKU for BGPsec Router Certificates:

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

  id-kp-bgpsec-router OBJECT IDENTIFIER ::= { id-kp 30 }

a BGPsec router MUST require the EKU extension be present in a BGPsec Router Certificate it receives 😭 if multiple KeyPurposeId values are included, the BGPsec routers don't need to recognize all of them, as long as the required KeyPurposeId value is present ✨ BGPsec routers MUST reject certificates that do not contain the BGPsec Router EKU, even if they include the anyExtendedKeyUsage OID defined in [RFC5280]. not me saying no to the wildcard vibes πŸ’€

3.1.3.3. Subject Information Access πŸ“

this extension is not used in BGPsec Router Certificates. it MUST be omitted πŸ™…β€β™€οΈ

3.1.3.4. IP Resources πŸ¦‹

this extension is not used in BGPsec Router Certificates either. it MUST be omitted πŸ’–

3.1.3.5. AS Resources πŸ’œ

each BGPsec Router Certificate MUST include the AS Resources extension, as specified in Section 4.8.11 of [RFC6487] 🌟 the AS Resources extension MUST include one or more ASNs, and the inherit element MUST NOT be specified. that's the ASN glow-up we love to see ✨

3.2. BGPsec Router Certificate Request Profile πŸ’Œ

refer to Section 6 of [RFC6487] πŸ“– the only differences between this profile and the one in [RFC6487] are these:

  • The Basic Constraints extension: If included, the CA MUST NOT honor the cA boolean if set to TRUE. πŸ™ˆ
  • The EKU extension: If included, id-kp-bgpsec-router MUST be present (see Section 3.1.3.2). If included, the CA MUST honor the request for id-kp-bgpsec-router. πŸ‘‘
  • The Subject Information Access (SIA) extension: If included, the CA MUST NOT honor the request to include the extension. πŸ’€
  • The SubjectPublicKeyInfo field is specified in [RFC8208]. 🧚
  • The request is signed with the algorithms specified in [RFC8208]. πŸ”

3.3. BGPsec Router Certificate Validation πŸŽ€

the validation procedure for BGPsec Router Certificates is identical to the one described in Section 7 of [RFC6487] (and any RFC that updates that procedure), with the changes below 🌸 for example, in step 3 (of the criteria listed in Section 7.2 of [RFC6487]), "The certificate contains all fields that MUST be present" refers to the fields that are required by this specification. 🫢

the differences are as follows:

  • BGPsec Router Certificates MUST include the BGPsec Router EKU defined in Section 3.1.3.2.
  • BGPsec Router Certificates MUST NOT include the SIA extension.
  • BGPsec Router Certificates MUST NOT include the IP Resources extension.
  • BGPsec Router Certificates MUST include the AS Resources extension.
  • BGPsec Router Certificates MUST include the subjectPublicKeyInfo field described in [RFC8208].
NOTE: BGPsec RPs will need to support the algorithms in [RFC8208], which are used to validate BGPsec signatures, as well as the algorithms in [RFC7935], which are needed to validate signatures on BGPsec certificates, RPKI CA certificates, and RPKI CRLs. 🚨

3.4. Router Certificates and Signing Functions in the RPKI 🌈

as described in Section 1, the main job of BGPsec Router Certificates in the RPKI is to be used when certifying AS paths in the BGPsec protocol πŸ›€οΈ

the private key tied to a router EE certificate may be used multiple times when generating signatures in multiple instances of the BGPsec_PATH attribute Signature Segments [RFC8205]. so one certificate can validate a whole bunch of signatures, iconic πŸ¦‹

BGPsec Router Certificates are stored in the issuing CA's repository. a repository following [RFC6481] MUST use a .cer filename extension for the certificate file πŸ“

4. Design Notes ✨

the BGPsec Router Certificate profile is based on the Resource Certificate profile in [RFC6487]. so a lot of the design choices here reflect the ones made in that earlier work πŸ’… the reader is referred to [RFC6484] for a fuller discussion of those choices πŸ“š

CAs are required by the Certificate Policy (CP) [RFC6484] to issue properly formed BGPsec Router Certificates regardless of what is in the certificate request. so there's some flexibility allowed in the requests:

  • BGPsec Router Certificates are always EE certificates; therefore, requests to issue a CA certificate result in EE certificates;
  • BGPsec Router Certificates are always EE certificates; therefore, requests for Key Usage extension values keyCertSign and cRLSign result in certificates with neither of these values;
  • BGPsec Router Certificates always include the BGPsec Router EKU value; therefore, requests without the value result in certificates with the value; and,
  • BGPsec Router Certificates never include the SIA extension; therefore, requests with this extension result in certificates without the extension.

note that this behavior is similar to the CA including the AS Resources extension in issued BGPsec Router Certificates, even though it isn't present in the request πŸŽ€

5. Implementation Considerations πŸ› οΈ

this document lets the operator include a list of ASNs in a BGPsec Router Certificate. in that case, the router certificate would become invalid if any one of those ASNs is removed from any superior CA certificate along the path to a trust anchor 😱 operators could avoid this by issuing a separate BGPsec Router Certificate for each distinct ASN, so the router certificates for ASNs that stay in the superior CA certificate would remain valid 🧚

6. Security Considerations 🚨

this section is SERIOUS business, bestie 😀

the security considerations of [RFC6487] apply πŸ”’

a BGPsec Router Certificate will fail RPKI validation as defined in [RFC6487] because the cryptographic algorithms used are different. consequently, an RP needs to identify the EKU to determine the appropriate Validation constraint πŸ’€

a BGPsec Router Certificate is an extension of the RPKI [RFC6480] to encompass routers. it's a building block of BGPsec and is used to validate signatures on BGPsec Signature Segment origination of signed path segments [RFC8205]. so its essential security function is the secure binding of one or more ASNs to a public key, consistent with the RPKI allocation/assignment hierarchy πŸ”πŸ‘‘

hash functions [RFC8208] are used when generating the two key identifier extensions (i.e., Subject Key Identifier and Issuer Key Identifier) included in BGPsec certificates. however, as noted in [RFC6818], collision resistance is not a required property of one-way hash functions when used to generate key identifiers. regardless, hash collisions are unlikely, but they are possible, and if detected an operator should be alerted 🚨 a Subject Key Identifier collision might cause the incorrect certificate to be selected from the cache, resulting in a failed signature validation 😭

7. IANA Considerations 🌸

this document makes use of two OIDs in the SMI registry for PKIX. one is for the ASN.1 module [X680] [X690] in Appendix A, and it comes from the "SMI Security for PKIX Module Identifier" IANA registry (id-mod-bgpsec-eku). the other is for the BGPsec Router EKU defined in Section 3.1.3.2 and Appendix A, and it comes from the "SMI Security for PKIX Extended Key Purpose" IANA registry (id-kp-bgpsec-router). these OIDs were assigned before management of the PKIX Arc was handed to IANA. the references in those registries have been updated to point to this document πŸ¦‹

8. References πŸ“š

8.1. Normative References πŸ“š

okay bestie, these are the docs this one leans on hardest, so you'll want them open before you dive in πŸ’…

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP Addresses and AS Identifiers", RFC 3779, DOI 10.17487/RFC3779, June 2004, <https://www.rfc-editor.org/info/rfc3779>.

[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, January 2006, <https://www.rfc-editor.org/info/rfc4271>.

[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, DOI 10.17487/RFC5280, May 2008, <https://www.rfc-editor.org/info/rfc5280>.

[RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for Resource Certificate Repository Structure", RFC 6481, DOI 10.17487/RFC6481, February 2012, <https://www.rfc-editor.org/info/rfc6481>.

[RFC6486] Austein, R., Huston, G., Kent, S., and M. Lepinski, "Manifests for the Resource Public Key Infrastructure (RPKI)", RFC 6486, DOI 10.17487/RFC6486, February 2012, <https://www.rfc-editor.org/info/rfc6486>.

[RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for X.509 PKIX Resource Certificates", RFC 6487, DOI 10.17487/RFC6487, February 2012, <https://www.rfc-editor.org/info/rfc6487>.

[RFC7935] Huston, G. and G. Michaelson, Ed., "The Profile for Algorithms and Key Sizes for Use in the Resource Public Key Infrastructure", RFC 7935, DOI 10.17487/RFC7935, August 2016, <https://www.rfc-editor.org/info/rfc7935>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8205] Lepinski, M., Ed., and K. Sriram, Ed., "BGPsec Protocol Specification", RFC 8205, DOI 10.17487/RFC8205, September 2017, <https://www.rfc-editor.org/info/rfc8205>.

[RFC8208] Turner, S. and O. Borchert, "BGP Algorithms, Key Formats, and Signature Formats", RFC 8208, DOI 10.17487/RFC8208, September 2017, <https://www.rfc-editor.org/info/rfc8208>.

[X680] ITU-T, "Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation", ITU-T Recommendation X.680, ISO/IEC 8824-1, August 2015, <https://www.itu.int/rec/T-REC-X.680/en>.

[X690] ITU-T, "Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1, August 2015, <https://www.itu.int/rec/T-REC-X.690/en>.

8.2. Informative References 🌸

these ones are the extra reading, the "ooh tell me more" section 🧚

[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, DOI 10.17487/RFC4272, January 2006, <https://www.rfc-editor.org/info/rfc4272>.

[RFC5123] White, R. and B. Akyol, "Considerations in Validating the Path in BGP", RFC 5123, DOI 10.17487/RFC5123, February 2008, <https://www.rfc-editor.org/info/rfc5123>.

[RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February 2009, <https://www.rfc-editor.org/info/rfc5492>.

[RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480, February 2012, <https://www.rfc-editor.org/info/rfc6480>.

[RFC6482] Lepinski, M., Kent, S., and D. Kong, "A Profile for Route Origin Authorizations (ROAs)", RFC 6482, DOI 10.17487/RFC6482, February 2012, <https://www.rfc-editor.org/info/rfc6482>.

[RFC6484] Kent, S., Kong, D., Seo, K., and R. Watro, "Certificate Policy (CP) for the Resource Public Key Infrastructure (RPKI)", BCP 173, RFC 6484, DOI 10.17487/RFC6484, February 2012, <https://www.rfc-editor.org/info/rfc6484>.

[RFC6818] Yee, P., "Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 6818, DOI 10.17487/RFC6818, January 2013, <https://www.rfc-editor.org/info/rfc6818>.

[RFC6916] Gagliano, R., Kent, S., and S. Turner, "Algorithm Agility Procedure for the Resource Public Key Infrastructure (RPKI)", BCP 182, RFC 6916, DOI 10.17487/RFC6916, April 2013, <https://www.rfc-editor.org/info/rfc6916>.


Appendix A. ASN.1 Module ✨

this is the ASN.1 module, so it's the actual code bit, copied exactly πŸ’»

BGPSECEKU { iso(1) identified-organization(3) dod(6) internet(1)
  security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-bgpsec-eku(84) }

  DEFINITIONS EXPLICIT TAGS ::=

  BEGIN

  -- EXPORTS ALL --

  -- IMPORTS NOTHING --

  -- OID Arc --

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

  -- BGPsec Router Extended Key Usage --

  id-kp-bgpsec-router OBJECT IDENTIFIER ::= { id-kp 30 }

  END

Acknowledgements 🫢

okay the thank-you crew deserves a whole shoutout πŸ’– we'd like to thank Geoff Huston, George Michaelson, and Robert Loomans for their work on [RFC6487], which this work is based on. Matt Lepinski's efforts were instrumental in preparing this work too πŸ”₯ and we'd also like to thank Rob Austein, Roque Gagliano, Richard Hansen, Geoff Huston, David Mandelberg, Sandra Murphy, and Sam Weiler for their reviews and comments 🌈

Authors' Addresses πŸ¦‹

meet the authors, bestie πŸ’œ

Mark Reynolds
Island Peak Software
328 Virginia Road
Concord, MA  01742
United States of America

Email: mcr@islandpeaksoftware.com


Sean Turner
sn3rd

Email: sean@sn3rd.com


Stephen Kent
Raytheon BBN Technologies
10 Moulton St.
Cambridge, MA  02138
United States of America

Email: kent@alum.mit.edu
πŸ“¦ where this page comes from