RFC 6482
A Profile for Route Origin Authorizations (ROAs)
RFC 6482: A Profile for Route Origin Authorizations (ROAs) π
Okay bestie, let's start with the basics π . This RFC was written by M. Lepinski, S. Kent, and D. Kong from BBN Technologies. It's a Standards Track document, so it's the real deal β¨. The ISSN is 2070-1721, and it's dated February 2012. The header doesn't say it obsoletes or updates anything, so no drama there π§.
Abstract
Here's the vibe π¦. This document sets out a standard profile for Route Origin Authorizations (ROAs). A ROA is a digitally signed object that lets someone check whether an IP address block holder has authorized an Autonomous System (AS) to originate routes to one or more prefixes inside that block. Verification, but make it cute π.
Status of This Memo
This is an Internet Standards Track document πΈ.
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, and 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 π«Ά.
Information about the current status of this document, any errata, and how to give feedback on it can be found at http://www.rfc-editor.org/info/rfc6482 π.
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) as they stand on the date this document was published. Please read these carefully, because they spell out your rights and restrictions for this document π. Code Components pulled out of this document must include Simplified BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License π.
Table of Contents
1. Introduction ....................................................2
1.1. Terminology ................................................3
2. The ROA Content-Type ............................................3
3. The ROA eContent ................................................3
3.1. version ....................................................4
3.2. asID .......................................................4
3.3. ipAddrBlocks ...............................................4
4. ROA Validation ..................................................5
5. Security Considerations .........................................5
6. Acknowledgments .................................................6
7. References ......................................................6
7.1. Normative References .......................................6
7.2. Informative References .....................................6
Appendix A: ASN.1 Module..........................................8
1. Introduction β¨
Okay so the main goal of the Resource Public Key Infrastructure (RPKI) is to make routing more secure π. (See [RFC6480] if you want the full tea.) As part of that system, we need a way for people to check that an AS has been given permission by an IP address block holder to advertise routes to one or more prefixes inside that block. That's the job of a ROA π .
The ROA uses the template for RPKI digitally signed objects [RFC6488]. That template defines a Cryptographic Message Syntax (CMS) [RFC5652] wrapper for the ROA content, plus a generic validation procedure for RPKI signed objects. So to finish the specification of the ROA (see Section 4 of [RFC6488]), this document defines three things π¦:
- The OID that identifies the signed object as a ROA. (This OID shows up in the eContentType in the encapContentInfo object, as well as in the content-type signed attribute in the signerInfo object.)
- The ASN.1 syntax for the ROA eContent. (This is the payload that says which AS is being authorized to originate routes, plus the prefixes that AS may originate routes to.) The ROA eContent is ASN.1 encoded using the Distinguished Encoding Rules (DER) [X.690] π.
- An additional step required to validate ROAs, on top of the validation steps specified in [RFC6488] β.
1.1. Terminology
It's assumed you already know the terms and concepts from "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" [RFC5280] and "X.509 Extensions for IP Addresses and AS Identifiers" [RFC3779] π.
This document also uses the RPKI signed object profile [RFC6488], so you should be familiar with that one too. That profile uses certificates that follow the RPKI Resource Certificate Profile [RFC6487], so you should know that profile as well π§.
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 RFC 2119 [RFC2119] π.
2. The ROA Content-Type
The content-type for a ROA is called routeOriginAuthz, and its numerical value is 1.2.840.113549.1.9.16.1.24 πΈ.
This OID MUST appear both within the eContentType in the encapContentInfo object and as the content-type signed attribute in the signerInfo object (see [RFC6488]). No skipping one of them, bestie π.
3. The ROA eContent
The content of a ROA names one single AS that the address space holder has authorized to originate routes, along with a list of one or more IP address prefixes that will be advertised π. If the address space holder wants to authorize multiple ASes to advertise the same set of prefixes, they issue multiple ROAs, one per AS number. Here's the formal definition π:
RouteOriginAttestation ::= SEQUENCE {
version [0] INTEGER DEFAULT 0,
asID ASID,
ipAddrBlocks SEQUENCE (SIZE(1..MAX)) OF ROAIPAddressFamily }
ASID ::= INTEGER
ROAIPAddressFamily ::= SEQUENCE {
addressFamily OCTET STRING (SIZE (2..3)),
addresses SEQUENCE (SIZE (1..MAX)) OF ROAIPAddress }
ROAIPAddress ::= SEQUENCE {
address IPAddress,
maxLength INTEGER OPTIONAL }
IPAddress ::= BIT STRING
Note that this content shows up as the eContent within the encapContentInfo (see [RFC6488]) π«Ά.
3.1. version
The version number of the RouteOriginAttestation MUST be 0 π’.
3.2. asID
The asID field holds the AS number that's authorized to originate routes to the given IP address prefixes π.
3.3. ipAddrBlocks
The ipAddrBlocks field encodes the set of IP address prefixes that the AS is authorized to originate routes to. Heads up: the syntax here is more restrictive than the one used in the IP address delegation extension from RFC 3779. That extension can represent arbitrary address ranges, but ROAs only need to represent prefixes π¦.
Inside the ROAIPAddressFamily structure, addressFamily holds the Address Family Identifier (AFI) of an IP address family. This specification only supports IPv4 and IPv6, so addressFamily MUST be either 0001 or 0002 π.
Inside a ROAIPAddress structure, the addresses field represents prefixes as a sequence of type IPAddress (see [RFC3779] for more details). If maxLength is present, it MUST be an integer that is greater than or equal to the length of the accompanying prefix, and less than or equal to the length (in bits) of an IP address in the address family (32 for IPv4 and 128 for IPv6). When it's there, maxLength tells you the longest IP address prefix that the AS is authorized to advertise π.
Here's an example to make it click β¨. Say the IP address prefix is 203.0.113/24 and the maxLength is 26. Then the AS is authorized to advertise any more specific prefix up to a maximum length of 26. In this example, the AS could advertise 203.0.113/24, 203.0.113.128/25, or 203.0.113.0/25, but NOT 203.0.113.0/27 π
ββοΈ. When maxLength isn't present, the AS can only advertise the exact prefix written in the ROA π
.
Now, a valid ROA can contain an IP address prefix (inside one ROAIPAddress element) that's covered by another IP address prefix (inside a separate ROAIPAddress element). For example, a ROA might contain the prefix 203.0.113/24 with maxLength 26, plus the prefix 203.0.113.0/28 with maxLength 28. (That ROA would authorize the indicated AS to advertise any prefix starting with 203.0.113 with a minimum length of 24 and a maximum length of 26, plus the specific prefix 203.0.113.0/28.) π§ Also, a ROA MAY contain two ROAIPAddress elements where the IP address prefix is identical in both. However, this is NOT RECOMMENDED. In that case, the ROAIPAddress with the shorter maxLength grants no extra privileges to the indicated AS, so it can be left out without changing what the ROA means π.
4. ROA Validation
Before a relying party can use a ROA to validate a routing announcement, the relying party MUST validate the ROA first π‘οΈ. To validate a ROA, the relying party MUST perform all the validation checks specified in [RFC6488], plus the following ROA-specific validation step:
- The IP address delegation extension [RFC3779] is present in the end-entity (EE) certificate (contained within the ROA), and each IP address prefix(es) in the ROA is contained within the set of IP addresses specified by the EE certificate's IP address delegation extension π.
8.1. Normative References π
okay so these are the docs this one needs to read first, no cap π
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. π
- [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, RFC 5652, September 2009. πΈ
- [RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP Addresses and AS Identifiers", RFC 3779, June 2004. π¦
- [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. π§
- [RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for X.509 PKIX Resource Certificates", RFC 6487, February 2012. β¨
- [RFC6488] Lepinski, M., Chi, A., and S. Kent, "Signed Object Template for the Resource Public Key Infrastructure (RPKI)", RFC 6488, February 2012. π
- [X.690] ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-1:2002, Information technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER). π₯
8.2. Informative References π
- [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support Secure Internet Routing", RFC 6480, February 2012. π«Ά
Appendix A: ASN.1 Module π
this appendix is normative, which means it's part of the actual spec, not just a nice-to-have π it gives you an ASN.1 module that spells out the ROA content in ASN.1 syntax, so you know exactly what bits go where π
RPKI-ROA { iso(1) member-body(2) us(840) rsadsi(113549)
pkcs(1) pkcs9(9) smime(16) mod(0) 61 }
DEFINITIONS EXPLICIT TAGS ::= BEGIN
RouteOriginAttestation ::= SEQUENCE {
version [0] INTEGER DEFAULT 0,
asID ASID,
ipAddrBlocks SEQUENCE (SIZE(1..MAX)) OF ROAIPAddressFamily }
ASID ::= INTEGER
ROAIPAddressFamily ::= SEQUENCE {
addressFamily OCTET STRING (SIZE (2..3)),
addresses SEQUENCE (SIZE (1..MAX)) OF ROAIPAddress }
ROAIPAddress ::= SEQUENCE {
address IPAddress,
maxLength INTEGER OPTIONAL }
IPAddress ::= BIT STRING
END
Authors' Addresses πΈ
the wonderful people who wrote this one, all from BBN Technologies in Cambridge, MA π¦
Matt Lepinski
BBN Technologies
10 Moulton Street
Cambridge MA 02138
EMail: mlepinski@bbn.com
Stephen Kent
BBN Technologies
10 Moulton Street
Cambridge MA 02138
EMail: skent@bbn.com
Derrick Kong
BBN Technologies
10 Moulton Street
Cambridge MA 02138
EMail: dkong@bbn.com
π¦ where this page comes from
- ietf: rfc6482 2012-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms