Internet-Draft | Traffic Origin Authorization | June 2025 |
Qin, et al. | Expires 27 December 2025 | [Page] |
This document defines a standard profile for Traffic Origin Authorizations (TOAs), a Cryptographic Message Syntax (CMS) protected content type for use with the Resource Public Key Infrastructure (RPKI). A TOA is a digitally signed object that provides a means of verifying that an IP address block holder has authorized an Autonomous System (AS) to originate traffic using source IP addresses within the address block.¶
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 RFC 8174 [RFC8174].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 27 December 2025.¶
Copyright (c) 2025 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 (https://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 Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Source Address Validation (SAV) aims to detect and discard data packets that use a spoofed source IP address. The fundamental concept of the current practice is directionality: for data packets using a given source IP address, only those coming from a specific direction are considered legitimate. BCP84 [RFC8704] introduces a more structured direction-based logic, i.e., identifying the incoming directions for traffic of a given source AS and determining the source prefix space that the AS is authorized to use.¶
To support such validation, a mechanism is needed to allow entities to verify that an AS has been authorized to originate traffic using one or more prefixes as the source IP address. A Traffic Origin Authorization (TOA) provides this function.¶
The TOA makes use of the template for RPKI digitally signed object [RFC6488], which defines a Cryptographic Message Syntax (CMS) wrapper [RFC5652] for a generic validation procedure for RPKI signed objects. Therefore, to complete the specification of the TOA (see Section 4 of [RFC6488]), this document defines:¶
The OID that identifies the signed object as being a TOA. (This OID appears within the eContentType in the encapContentInfo object as well as the content-type signed attribute in the signerInfo object.)¶
The ASN.1 syntax for the TOA eContent. (This is the payload that specifies the ASes being authorized to originate traffic as well as the prefixes that the ASes may use as the source IP address.) The TOA eContent is ASN.1 encoded using the Distinguished Encoding Rules (DER) [X.690].¶
Additional steps required to validate TOAs (in addition to the validation steps specified in [RFC6488]).¶
The content of a TOA identifies a list of one or more ASes that have been authorized by the IP address block holder to originate traffic and a list of one or more IP address prefixes within the address block that will be used as the source IP address. The IP address block holder can register one or more TOAs to authorize which ASes can originate traffic using specific prefixes within the block as the source IP address. By registering TOAs, IP address block holders can protect their source IP addresses from being forged by attackers inside unauthorized ASes. ISP or enterprise AS operators can use TOAs to improve the accuracy and robustness of SAV (see Section 6 for details).¶
The TOA and the ROA [RFC9582] have the similar format but have different intentions and contents. Prefixes used as the source IP address in traffic (which is contained in TOAs) and prefixes advertised into the routing system (which is contained in ROAs) can be different and asymmetric for the same AS. For example, in the Content Delivery Networks (CDN) and Direct Server Return (DSR) scenario, the AS where the edge server is located does not advertise the anycast prefix but will originate traffic using a source IP address within the anycast prefix (see [I-D.ietf-savnet-inter-domain-problem-statement]).¶
The content-type for a TOA is defined as id-ct-trafficOriginAuthz and has the numerical value of 1.2.840.113549.1.9.16.1.TBD.¶
This OID MUST appear within both the eContentType in the encapContentInfo object and the content-type signed attribute in the signerInfo object (see [RFC6488]).¶
The content of a TOA identifies a list of one or more ASes that have been authorized by the address block holder to originate traffic and a list of one or more IP address prefixes within the address block that will be used as the source IP address. A TOA is formally defined as:¶
RPKI-TOA-2025 { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) smime(16) mod(0) id-mod-rpkiTOA-2025(TBD) } DEFINITIONS EXPLICIT TAGS ::= BEGIN IMPORTS CONTENT-TYPE FROM CryptographicMessageSyntax-2010 -- in [RFC6268] { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } ; ct-trafficOriginAttestation CONTENT-TYPE ::= { TYPE TrafficOriginAttestation IDENTIFIED BY id-ct-trafficOriginAuthz } id-ct-trafficOriginAuthz OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) trafficOriginAuthz(TBD) } TrafficOriginAttestation ::= SEQUENCE { version [0] INTEGER DEFAULT 0, asSet ASSet, ipaddrBlocks SEQUENCE (SIZE(1..2)) OF TOAIPAddressFamily } ASSet ::= SEQUENCE (SIZE(1..10000)) OF ASID ASID ::= INTEGER (0..4294967295) TOAIPAddressFamily ::= SEQUENCE { addressFamily ADDRESS-FAMILY.&afi ({AddressFamilySet}), addresses ADDRESS-FAMILY.&Addresses ({AddressFamilySet}{@addressFamily}) } ADDRESS-FAMILY ::= CLASS { &afi OCTET STRING (SIZE(2)) UNIQUE, &Addresses } WITH SYNTAX { AFI &afi ADDRESSES &Addresses } AddressFamilySet ADDRESS-FAMILY ::= { addressFamilyIPv4 | addressFamilyIPv6 } addressFamilyIPv4 ADDRESS-FAMILY ::= { AFI afi-IPv4 ADDRESSES TOAAddressesIPv4 } addressFamilyIPv6 ADDRESS-FAMILY ::= { AFI afi-IPv6 ADDRESSES TOAAddressesIPv6 } afi-IPv4 OCTET STRING ::= '0001'H afi-IPv6 OCTET STRING ::= '0002'H TOAAddressesIPv4 ::= SEQUENCE (SIZE(1..MAX)) OF TOAIPAddress{ub-IPv4} TOAAddressesIPv6 ::= SEQUENCE (SIZE(1..MAX)) OF TOAIPAddress{ub-IPv6} ub-IPv4 INTEGER ::= 32 ub-IPv6 INTEGER ::= 128 TOAIPAddress {INTEGER: ub} ::= BIT STRING (SIZE(0..ub)) END¶
The version number of the TrafficOriginAttestation entry MUST be 0.¶
The asSet element contains a set of AS numbers that are authorized to originate traffic using source IP addresses within the given IP address prefixes.¶
The ipaddrBlocks element encodes the set of IP address prefixes that the specified set of AS numbers is authorized to use as source addresses when originating traffic.¶
Within the TOAIPAddressFamily structure, the addressFamily element contains the Address Family Identifier (AFI) of an IP address family. Each addressFamily MUST be either 0001 or 0002. There MUST be only one instance of TOAIPAddressFamily per unique AFI in the TOA.¶
The addresses field contains IP prefixes as a sequence of type TOAIPAddress.¶
This element is of type BIT STRING and represents a single IP address prefix [RFC3779].¶
To validate a TOA, the Relying Party (RP) MUST perform all the validation checks specified in [RFC6488] as well as the following additional specific validation steps:¶
The IP address delegation extension [RFC3779] is present in the end-entity (EE) certificate (contained within the TOA), and every IP address prefix in the TOA payload is contained within the set of IP addresses specified by the EE certificate's IP address delegation extension.¶
The EE certificate's IP address delegation extension MUST NOT contain "inherit" elements as described in [RFC3779].¶
The Autonomous System identifier delegation extension described in [RFC3779] is not used in TOAs and MUST NOT be present in the EE certificate.¶
The TOA content fully conforms with all requirements specified in Sections 2 and 3.¶
If any of the above checks fail, the TOA MUST be considered invalid and an error SHOULD be logged.¶
The security considerations of [RFC6481], [RFC6485], [RFC6488], and [RFC9582] also apply to the TOA object.¶
Without TOAs, current SAV mechanisms (e.g., EFP-uRPF [RFC8704]) typically use BGP data, ROAs, or IRR route objects to determine the legitimate source IP address space of a given AS. However, due to the asymmetry between prefixes used as the source IP address and prefixes advertised into the routing system (as mentioned in Section 1), using BGP data, ROAs, and IRR route objects to perform SAV will have false positives (i.e., blocking legitimate data packets) and false negatives (i.e., permitting spoofing data packets).¶
By using TOAs, SAV can accurately identify whether an AS is authorized to use a specific source IP address to originate traffic. If an AS originates spoofing traffic using a source IP address authorized to other ASes in TOAs, TOA-based SAV can identify and discard this spoofing traffic. Therefore, it is highly recommended to improve the accuracy and robustness upon current SAV by using TOAs.¶
IANA is requested to allocate the following in the "SMI Security for S/MIME CMS Content Type (1.2.840.113549.1.9.16.1)" registry:¶
Decimal | Description | Reference |
---|---|---|
TBD | id-ct-trafficOriginAuthz | draft-qin-sidrops-toa |
Please add an item for the TOA file extension to the RPKI Signed Object registry (https://www.iana.org/assignments/rpki/rpki.xhtml#signed-objects) as follows:¶
Name | OID | Reference |
---|---|---|
Traffic Origin Authorization | 1.2.840.113549.1.9.16.1.TBD | draft-qin-sidrops-toa |
Please add an item for the TOA file extension to the "RPKI Repository Name Scheme" registry created by [RFC6481] as follows:¶
Filename Extension | RPKI Object | Reference |
---|---|---|
.toa | Traffic Origin Authorization | draft-qin-sidrops-toa |
IANA is requested to allocate the following in the "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" registry:¶
Decimal | Description | Reference |
---|---|---|
TBD | id--rpkiTOA-2025 | draft-qin-sidrops-toa |
The IANA is requested to register the media type application/rpki-toa in the "Media Type" registry as follows:¶
Type name: application Subtype name: rpki-toa Required parameters: N/A Optional parameters: N/A Encoding considerations: binary Security considerations: Carries an RPKI TOA. This media type contains no active content. See Section 5 of draft-qin-sidrops-toa for further information. Interoperability considerations: None Published specification: draft-qin-sidrops-toa Applications that use this media type: RPKI operators Additional information: Content: This media type is a signed object, as defined in [RFC6488], which contains a payload of a list of prefixes and an AS identifier as defined in draft-qin-sidrops-toa. Magic number(s): None File extension(s): .toa Macintosh file type code(s): None Person & email address to contact for further information: Lancheng Qin <qinlc@mail.zgclab.edu.cn> Intended usage: COMMON Restrictions on usage: None Change controller: IETF¶