rfc9632xml2.original.xml | rfc9632.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<?rfc sortrefs="yes"?> | <!DOCTYPE rfc [ | |||
<?rfc subcompact="no"?> | <!ENTITY nbsp " "> | |||
<?rfc symrefs="yes"?> | <!ENTITY zwsp "​"> | |||
<?rfc toc="yes"?> | <!ENTITY nbhy "‑"> | |||
<?rfc tocdepth="3"?> | <!ENTITY wj "⁠"> | |||
<?rfc compact="yes"?> | ]> | |||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-opsawg-9092-update-11" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
submissionType="IETF" consensus="true" ipr="trust200902" | tf-opsawg-9092-update-11" number="9632" submissionType="IETF" consensus="true" i | |||
obsoletes="9092" version="2" > | pr="trust200902" obsoletes="9092" updates="" version="3" sortRefs="true" symRefs | |||
="true" tocInclude="true" tocDepth="3" xml:lang="en"> | ||||
<front> | <front> | |||
<title abbrev="Finding and Using Geofeed Data">Finding and Using Geofeed Dat a</title> | <title abbrev="Finding and Using Geofeed Data">Finding and Using Geofeed Dat a</title> | |||
<seriesInfo name="RFC" value="9632"/> | ||||
<author fullname="Randy Bush" initials="R." surname="Bush"> | <author fullname="Randy Bush" initials="R." surname="Bush"> | |||
<organization>IIJ Research & Arrcus</organization> | <organization>IIJ Research & Arrcus</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>5147 Crystal Springs</street> | <street>5147 Crystal Springs</street> | |||
<city>Bainbridge Island</city> | <city>Bainbridge Island</city> | |||
<region>Washington</region> | <region>Washington</region> | |||
<code>98110</code> | <code>98110</code> | |||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
skipping to change at line 59 ¶ | skipping to change at line 53 ¶ | |||
<postal> | <postal> | |||
<street>1600 Amphitheatre Parkway</street> | <street>1600 Amphitheatre Parkway</street> | |||
<city>Mountain View</city> | <city>Mountain View</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>94043</code> | <code>94043</code> | |||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>warren@kumari.net</email> | <email>warren@kumari.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Russ Housley" initials="R" surname="Housley"> | <author fullname="Russ Housley" initials="R" surname="Housley"> | |||
<organization abbrev="Vigil Security">Vigil Security, LLC</organization> | <organization abbrev="Vigil Security">Vigil Security, LLC</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>516 Dranesville Road</street> | <street>516 Dranesville Road</street> | |||
<city>Herndon</city> | <city>Herndon</city> | |||
<region>VA</region> | <region>VA</region> | |||
<code>20170</code> | <code>20170</code> | |||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>housley@vigilsec.com</email> | <email>housley@vigilsec.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="July" year="2024"/> | ||||
<date /> | <area>OPS</area> | |||
<workgroup>opsawg</workgroup> | ||||
<keyword>geolocation</keyword> | <keyword>geolocation</keyword> | |||
<keyword>geo-location</keyword> | <keyword>geo-location</keyword> | |||
<keyword>RPSL</keyword> | <keyword>RPSL</keyword> | |||
<keyword>inetnum</keyword> | <keyword>inetnum</keyword> | |||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document specifies how to augment the Routing Policy | This document specifies how to augment the Routing Policy | |||
Specification Language inetnum: class to refer specifically to | Specification Language (RPSL) inetnum: class to refer specifically to | |||
geofeed comma-separated values (CSV) data files and describes an | geofeed comma-separated values (CSV) data files and describes an | |||
optional scheme that uses the Resource Public Key Infrastructure | optional scheme that uses the Resource Public Key Infrastructure (RPKI) | |||
to authenticate the geofeed data files. This document obsoletes | to authenticate the geofeed data files. This document obsoletes | |||
RFC 9092. | RFC 9092. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="intro" numbered="true" toc="default"> | <section anchor="intro" numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t> | <t> | |||
Providers of Internet content and other services may wish to | Providers of Internet content and other services may wish to customize | |||
customize those services based on the geographic location of the | those services based on the geographic location of the user of the | |||
user of the service. This is often done using the source IP | service. This is often done using the source IP address used to | |||
address used to contact the service, which may not point to a | contact the service, which may not point to a user; see <xref | |||
user, see <xref target ="RFC6269"/>, Section 14 in particular. | target="RFC6269" sectionFormat="of" section="14"/> in particular. | |||
Also, infrastructure and other services might wish to publish | Also, administrators of infrastructure and other services might wish | |||
the locale of their services. <xref target="RFC8805" | to publish the locale of said infrastructure or services. | |||
format="default"/> defines geofeed, a syntax to associate | infrastructure and other services might wish to publish the locale of | |||
geographic locales with IP addresses, but it does not specify | their services. <xref target="RFC8805" format="default"/> defines | |||
how to find the relevant geofeed data given an IP address. | geofeed, a syntax to associate geographic locales with IP addresses, | |||
but it does not specify how to find the relevant geofeed data given an | ||||
IP address. | ||||
</t> | </t> | |||
<t> | <t> | |||
This document specifies how to augment the Routing Policy | This document specifies how to augment the Routing Policy | |||
Specification Language (RPSL) <xref target="RFC2725" | Specification Language (RPSL) <xref target="RFC2725" | |||
format="default"/> inetnum: class to refer specifically to | format="default"/> inetnum: class to refer specifically to geofeed | |||
geofeed data files and how to prudently use them. In all places | data files and how to prudently use them. In all places inetnum: is | |||
inetnum: is used, inet6num: should also be assumed <xref | used, inet6num: should also be assumed <xref target="RFC4012" | |||
target="RFC4012" format="default"/>. | format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The reader may find <xref target="INETNUM" format="default"/> | The reader may find <xref target="INETNUM" format="default"/> | |||
and <xref target="INET6NUM" format="default"/> informative, and | and <xref target="INET6NUM" format="default"/> informative, and | |||
certainly more verbose, descriptions of the inetnum: database | certainly more verbose, descriptions of the inetnum: database | |||
classes. | classes. | |||
</t> | </t> | |||
<t> | <t> | |||
An optional utterly awesome but slightly complex means for | An optional utterly awesome but slightly complex means for | |||
authenticating geofeed data is also defined in <xref | authenticating geofeed data is also defined in <xref target="auth"/>. | |||
target="auth"/>. | ||||
</t> | </t> | |||
<t> | ||||
This document obsoletes <xref target="RFC9092"/>. Changes from | <t>This document obsoletes <xref target="RFC9092"/>. Changes from <xref | |||
<xref target="RFC9092"/> include the following: | target="RFC9092"/> include the following: | |||
<ul spacing="compact"> | </t> | |||
<li> | <ul spacing="normal"> | |||
<li> | ||||
RIPE has implemented the geofeed: attribute. | RIPE has implemented the geofeed: attribute. | |||
</li> | </li> | |||
<li> | <li> | |||
Allow, but discourage, an inetnum: to have both a geofeed | This document allows, but discourages, an inetnum: to have both a ge | |||
ofeed | ||||
remarks: attribute and a geofeed: attribute. | remarks: attribute and a geofeed: attribute. | |||
</li> | </li> | |||
<li> | <li> | |||
Rewrite Authentication <xref target="auth"/> to be more | The Authentication section (<xref target="auth"/>) has been rewritten | |||
to be more | ||||
formal. | formal. | |||
</li> | </li> | |||
<li> | <li> | |||
Geofeed file only UTF-8 CSV. | Geofeed files are only UTF-8 CSV. | |||
</li> | </li> | |||
<li> | <li> | |||
Stress that authenticating geofeed data is optional. | This document stresses that authenticating geofeed data is optional. | |||
</li> | </li> | |||
<li> | <li> | |||
IP Address Delegation extensions must not use "inherit". | IP Address Delegation extensions must not use "inherit". | |||
</li> | </li> | |||
<li> | <li> | |||
If geofeed data are present, ignore geographic location | If geofeed data are present, geographic location | |||
hints in other data. | hints in other data should be ignored. | |||
</li> | </li> | |||
</ul> | </ul> | |||
</t> | ||||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Requirements Language</name> | <name>Requirements Language</name> | |||
<t> | <t> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | ", | |||
described in BCP 14 <xref format="default" pageno="false" | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
target="RFC2119"/> <xref format="default" pageno="false" | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
target="RFC8174"/> when, and only when, they appear in all | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
capitals, as shown here. | be | |||
interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | ||||
target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
shown here. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="gf" numbered="true" toc="default"> | <section anchor="gf" numbered="true" toc="default"> | |||
<name>Geofeed Files</name> | <name>Geofeed Files</name> | |||
<t> | <t> | |||
Geofeed files are described in <xref target="RFC8805" | Geofeed files are described in <xref target="RFC8805" format="default"/> | |||
format="default"/>. They provide a facility for an IP address | . They provide a facility for an IP address | |||
resource "owner" to associate those IP addresses to geographic | resource "owner" to associate those IP addresses to geographic | |||
locales. | locales. | |||
</t> | </t> | |||
<t> | <t> | |||
Per <xref target="RFC8805"/>, geofeed files consist of CSVs | Per <xref target="RFC8805"/>, geofeed files consist of comma-separated | |||
(Comma Separated Values) in UTF-8 text format; not HTML, | values (CSV) in UTF-8 text format, not HTML, richtext, or other | |||
richtext, or other formats. | formats. | |||
</t> | </t> | |||
<t> | <t> | |||
Content providers and other parties who wish to locate an IP | Content providers and other parties who wish to locate an IP | |||
address to a geographic locale need to find the relevant geofeed | address to a geographic locale need to find the relevant geofeed | |||
data. In <xref target="inetnum" format="default"/>, this | data. In <xref target="inetnum" format="default"/>, this | |||
document specifies how to find the relevant geofeed <xref | document specifies how to find the relevant geofeed <xref target="RFC880 | |||
target="RFC8805" format="default"/> file given an IP address. | 5" format="default"/> file given an IP address. | |||
</t> | </t> | |||
<t> | <t> | |||
Geofeed data for large providers with significant horizontal | Geofeed data for large providers with significant horizontal | |||
scale and high granularity can be quite large. The size of a | scale and high granularity can be quite large. The size of a | |||
file can be even larger if an unsigned geofeed file combines | file can be even larger if an unsigned geofeed file combines | |||
data for many prefixes, if dual IPv4/IPv6 spaces are | data for many prefixes, if dual IPv4/IPv6 spaces are | |||
represented, etc. | represented, etc. | |||
</t> | </t> | |||
<t> | <t> | |||
Geofeed data do have privacy considerations (see <xref | Geofeed data do have privacy considerations (see <xref target="privacy" | |||
target="privacy" format="default"/>); this process makes bulk | format="default"/>); this process makes bulk | |||
access to those data easier. | access to those data easier. | |||
</t> | </t> | |||
<t> | <t> | |||
This document also suggests an optional signature to strongly | This document also suggests an optional signature to strongly | |||
authenticate the data in the geofeed files. | authenticate the data in the geofeed files. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="inetnum" numbered="true" toc="default"> | <section anchor="inetnum" numbered="true" toc="default"> | |||
<name>inetnum: Class</name> | <name>inetnum: Class</name> | |||
<t> | <t> | |||
The original RPSL specifications starting with <xref | The original RPSL specifications starting with <xref target="RIPE81" | |||
target="RIPE81" format="default"/>, <xref target="RIPE181" | format="default"/>, <xref target="RIPE181" format="default"/>, and a | |||
format="default"/>, and a trail of subsequent documents were | trail of subsequent documents were written by the RIPE community. The | |||
written by the RIPE community. The IETF standardized RPSL in | IETF standardized RPSL in <xref target="RFC2622" | |||
<xref target="RFC2622" format="default"/> and <xref | format="default"/> and <xref target="RFC4012" format="default"/>. | |||
target="RFC4012" format="default"/>. Since then, it has been | Since then, it has been modified and extensively enhanced in the | |||
modified and extensively enhanced in the Regional Internet | Regional Internet Registry (RIR) community, mostly by RIPE <xref | |||
Registry (RIR) community, mostly by RIPE <xref target="RIPE-DB" | target="RIPE-DB" format="default"/>. At the time of publishing this | |||
format="default"/>. At the time of publishing this document, | document, change control of the RPSL effectively lies in the operator | |||
change control of RPSL effectively lies in the operator | ||||
community. | community. | |||
</t> | </t> | |||
<t> | <t> | |||
The RPSL, and <xref target="RFC2725" format="default"/> and | The inetnum: database class is specified by the RPSL, as well as | |||
<xref target="RFC4012" format="default"/> used by the Regional | Routing Policy System Security <xref target="RFC2725" format="default"/> and R | |||
Internet Registries (RIRs), specify the inetnum: database class. | PSLng <xref target="RFC4012" format="default"/>, | |||
Each of these objects describes an IP address range and its | which are used by the Regional Internet Registries (RIRs). | |||
attributes. The inetnum: objects form a hierarchy ordered on | Each of these | |||
the address space. | objects describes an IP address range and its attributes. The | |||
</t> | inetnum: objects form a hierarchy ordered on the address space. </t> | |||
<t> Ideally, the RPSL would be augmented to define a new RPSL geofeed: | ||||
<t> | ||||
Ideally, RPSL would be augmented to define a new RPSL geofeed: | ||||
attribute in the inetnum: class. Absent implementation of the | attribute in the inetnum: class. Absent implementation of the | |||
geofeed: attribute in a particular RIR database, this document | geofeed: attribute in a particular RIR database, this document defines | |||
defines the syntax of a Geofeed remarks: attribute, which | the syntax of a Geofeed remarks: attribute, which contains an HTTPS | |||
contains an HTTPS URL of a geofeed file. The format of the | URL of a geofeed file. The format of the inetnum: geofeed remarks: | |||
inetnum: geofeed remarks: attribute MUST be as in this example, | attribute <bcp14>MUST</bcp14> be as in this example, "remarks: Geofeed | |||
"remarks: Geofeed ", where the token "Geofeed " MUST be case | ", where the token "Geofeed " <bcp14>MUST</bcp14> be case sensitive, | |||
sensitive, followed by a URL that will vary, but it MUST refer | followed by a URL that will vary, but it <bcp14>MUST</bcp14> refer | |||
only to a single geofeed <xref target="RFC8805" | only to a single geofeed <xref target="RFC8805" format="default"/> | |||
format="default"/> file. | file. | |||
</t> | </t> | |||
<sourcecode type="rpsl"><![CDATA[ | ||||
<sourcecode type="rpsl"> <![CDATA[ | ||||
inetnum: 192.0.2.0/24 # example | inetnum: 192.0.2.0/24 # example | |||
remarks: Geofeed https://example.com/geofeed | remarks: Geofeed https://example.com/geofeed | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
While we leave global agreement of RPSL modification to the | While we leave global agreement of RPSL modification to the relevant | |||
relevant parties, we specify that a proper geofeed: attribute in | parties, we specify that a proper geofeed: attribute in the inetnum: | |||
the inetnum: class MUST be "geofeed:" and | class <bcp14>MUST</bcp14> be "geofeed:" and <bcp14>MUST</bcp14> | |||
MUST be followed by a single URL that will vary, | be followed by a single URL that will vary, but it <bcp14>MUST</bcp14> | |||
but it MUST refer only to a single geofeed <xref | refer only to a single geofeed <xref target="RFC8805" | |||
target="RFC8805" format="default"/> file. | format="default"/> file. | |||
</t> | </t> | |||
<sourcecode type="rpsl"><![CDATA[ | <sourcecode type="rpsl"><![CDATA[ | |||
inetnum: 192.0.2.0/24 # example | inetnum: 192.0.2.0/24 # example | |||
geofeed: https://example.com/geofeed | geofeed: https://example.com/geofeed | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
The URL uses HTTPS, so the WebPKI provides authentication, | The URL uses HTTPS, so the WebPKI provides authentication, | |||
integrity, and confidentiality for the fetched geofeed file. | integrity, and confidentiality for the fetched geofeed file. | |||
However, the WebPKI can not provide authentication of IP address | However, the WebPKI cannot provide authentication of IP address | |||
space assignment. In contrast, the RPKI (see <xref | space assignment. In contrast, the RPKI (see <xref target="RFC6481" for | |||
target="RFC6481" format="default"/>) can be used to authenticate | mat="default"/>) can be used to authenticate | |||
IP space assignment; see optional authentication in <xref | IP space assignment; see optional authentication in <xref target="auth" | |||
target="auth" format="default"/>. | format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
Until all producers of inetnum: objects, i.e., the RIRs, state | Until all producers of inetnum: objects, i.e., the RIRs, state | |||
that they have migrated to supporting a geofeed: attribute, | that they have migrated to supporting a geofeed: attribute, | |||
consumers looking at inetnum: objects to find geofeed URLs MUST | consumers looking at inetnum: objects to find geofeed URLs <bcp14>MUST</ bcp14> | |||
be able to consume both the remarks: and geofeed: forms. | be able to consume both the remarks: and geofeed: forms. | |||
</t> | </t> | |||
<t> | <t> | |||
The migration not only implies that the RIRs support the | The migration not only implies that the RIRs support the | |||
geofeed: attribute, but that all registrants have migrated any | geofeed: attribute, but that all registrants have migrated any | |||
inetnum: objects from remarks: to geofeed: attributes. | inetnum: objects from remarks: to geofeed: attributes. | |||
</t> | </t> | |||
<t> | <t> | |||
Any particular inetnum: object SHOULD have, at most, one geofeed | Any particular inetnum: object <bcp14>SHOULD</bcp14> have, at most, one geofeed | |||
reference, whether a remarks: or a proper geofeed: attribute | reference, whether a remarks: or a proper geofeed: attribute | |||
when it is implemented. As the remarks: form can not be | when it is implemented. As the remarks: form cannot be | |||
formally checked by the RIR, this can not be formally enforced. | formally checked by the RIR, this cannot be formally enforced. | |||
A geofeed: attribute is preferred, of course, if the RIR | A geofeed: attribute is preferred, of course, if the RIR | |||
supports it. If there is more than one type of attribute in the | supports it. If there is more than one type of attribute in the | |||
intetnum: object, the geofeed: attribute MUST be used. | intetnum: object, the geofeed: attribute <bcp14>MUST</bcp14> be used. | |||
</t> | </t> | |||
<t> | <t> | |||
For inetnum:s covering the same address range, a signed geofeed | For inetnum: objects covering the same address range, a signed geofeed | |||
file MUST be preferred over an unsigned file. If none are | file <bcp14>MUST</bcp14> be preferred over an unsigned file. If none are | |||
signed, or more than one is signed, the (signed) inetnum: with | signed, or more than one is signed, the (signed) inetnum: with | |||
the most recent last-modified: attribute MUST be preferred. | the most recent last-modified: attribute <bcp14>MUST</bcp14> be preferred . | |||
</t> | </t> | |||
<t> | <t> | |||
If a geofeed file describes multiple disjoint ranges of IP | If a geofeed file describes multiple disjoint ranges of IP | |||
address space, there are likely to be geofeed references from | address space, there are likely to be geofeed references from | |||
multiple inetnum: objects. Files with geofeed references from | multiple inetnum: objects. Files with geofeed references from | |||
multiple inetnum: objects are not compatible with the signing | multiple inetnum: objects are not compatible with the signing | |||
procedure in <xref target="auth" format="default"/>. | procedure in <xref target="auth" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
An unsigned, and only an unsigned, geofeed file MAY be | An unsigned, and only an unsigned, geofeed file <bcp14>MAY</bcp14> be | |||
referenced by multiple inetnum:s and MAY contain prefixes from | referenced by multiple inetnum: objects and <bcp14>MAY</bcp14> contain p | |||
refixes from | ||||
more than one registry. | more than one registry. | |||
</t> | </t> | |||
<t> | <t> | |||
When fetching, the most specific inetnum: object with a geofeed | When fetching, the most specific inetnum: object with a geofeed | |||
reference MUST be used. | reference <bcp14>MUST</bcp14> be used. | |||
</t> | </t> | |||
<t> | <t> | |||
It is significant that geofeed data may have finer granularity | It is significant that geofeed data may have finer granularity | |||
than the inetnum: that refers to them. For example, an INETNUM | than the inetnum: that refers to them. For example, an INETNUM | |||
object for an address range P could refer to a geofeed file in | object for an address range P could refer to a geofeed file in | |||
which P has been subdivided into one or more longer prefixes. | which P has been subdivided into one or more longer prefixes. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="fetch" numbered="true" toc="default"> | <section anchor="fetch" numbered="true" toc="default"> | |||
<name>Fetching Geofeed Data</name> | <name>Fetching Geofeed Data</name> | |||
<t> | <t> | |||
This document is to provides a guideline for how interested | This document provides a guideline for how interested | |||
parties should fetch and read geofeed files. | parties should fetch and read geofeed files. | |||
</t> | </t> | |||
<t> | <t> | |||
Historically, before <xref target="RFC9092"/>, this was done in | Historically, before <xref target="RFC9092"/>, this was done in | |||
varied ways, at the discretion of the implementer, often without | varied ways, at the discretion of the implementor, often without | |||
consistent authentication, where data were mostly imported from | consistent authentication, where data were mostly imported from | |||
email without formal authorisation or validation. | email without formal authorization or validation. | |||
</t> | </t> | |||
<t> | <t> | |||
To minimize the load on RIRs' WHOIS <xref target="RFC3912"/> | To minimize the load on RIRs' WHOIS <xref target="RFC3912"/> | |||
services, the RIR's FTP <xref target="RFC0959"/> services SHOULD | services, the RIR's FTP <xref target="RFC0959"/> services <bcp14>SHOULD< | |||
be used for large-scale access to gather inetnum:s with geofeed | /bcp14> | |||
be used for large-scale access to gather inetnum: objects with geofeed | ||||
references. This uses efficient bulk access instead of fetching | references. This uses efficient bulk access instead of fetching | |||
via brute-force search through the IP space. | via brute-force search through the IP space. | |||
</t> | </t> | |||
<t> | <t> | |||
When reading data from an unsigned geofeed file, one MUST ignore | When reading data from an unsigned geofeed file, one <bcp14>MUST</bcp14> ignore | |||
data outside the referring inetnum: object's address range. | data outside the referring inetnum: object's address range. | |||
This is to avoid importing data about ranges not under the | This is to avoid importing data about ranges not under the | |||
control of the operator. Note that signed files MUST only | control of the operator. Note that signed files <bcp14>MUST</bcp14> onl y | |||
contain prefixes within the referring inetnum:'s range as | contain prefixes within the referring inetnum:'s range as | |||
mandated in <xref target="auth"/>. | mandated in <xref target="auth"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
If geofeed files are fetched, other location information from | If geofeed files are fetched, other location information from | |||
the inetnum: MUST be ignored. | the inetnum: <bcp14>MUST</bcp14> be ignored. | |||
</t> | </t> | |||
<t> | <t> | |||
Given an address range of interest, the most specific inetnum: | Given an address range of interest, the most specific inetnum: | |||
object with a geofeed reference MUST be used to fetch the | object with a geofeed reference <bcp14>MUST</bcp14> be used to fetch the | |||
geofeed file. For example, if the fetching party finds | geofeed file. For example, if the fetching party finds | |||
the following inetnum: objects: | the following inetnum: objects: | |||
<sourcecode type="rpsl"> <![CDATA[ | </t> | |||
<sourcecode type="rpsl"><![CDATA[ | ||||
inetnum: 192.0.0.0/22 # example | inetnum: 192.0.0.0/22 # example | |||
remarks: Geofeed https://example.com/geofeed_1 | remarks: Geofeed https://example.com/geofeed_1 | |||
inetnum: 192.0.2.0/24 # example | inetnum: 192.0.2.0/24 # example | |||
remarks: Geofeed https://example.com/geofeed_2 | remarks: Geofeed https://example.com/geofeed_2 | |||
]]></sourcecode> | ]]></sourcecode> | |||
An application looking for geofeed data for 192.0.2.0/29, MUST | <t> | |||
An application looking for geofeed data for 192.0.2.0/29 <bcp14>MUST</b | ||||
cp14> | ||||
ignore data in geofeed_1 because 192.0.2.0/29 is within the | ignore data in geofeed_1 because 192.0.2.0/29 is within the | |||
more specific 192.0.2.0/24 inetnum: covering that address range | more specific 192.0.2.0/24 inetnum: covering that address range | |||
and that inetnum: does have a geofeed reference. | and that inetnum: does have a geofeed reference. | |||
</t> | </t> | |||
<t> | <t> | |||
Hints in inetnum:s such as country:, geoloc:, etc. tend to be | Hints in inetnum: objects such as country:, geoloc:, etc. tend to be | |||
administrative, and not deployment specific. Consider large, | administrative, and not deployment specific. Consider large, | |||
possibly global, providers with headquarters very far from most | possibly global, providers with headquarters very far from most | |||
of their deployments. Therefore, if geofeed data are specified, | of their deployments. Therefore, if geofeed data are specified, | |||
either as a geofeed: attribute or in a geofeed remarks: | either as a geofeed: attribute or in a geofeed remarks: | |||
attribute, other geographic hints such as country:, geoloc:, DNS | attribute, other geographic hints such as country:, geoloc:, DNS | |||
geoloc RRsets, etc., for that address range MUST be ignored. | geoloc RRsets, etc., for that address range <bcp14>MUST</bcp14> be ignor ed. | |||
</t> | </t> | |||
<t> | <t> | |||
There is open-source code to traverse the RPSL data across all | There is open-source code to traverse the RPSL data across all of the | |||
of the RIRs, collect all geofeed references, and process them | RIRs, collect all geofeed references, and process them <xref | |||
<xref target="GEOFEED-FINDER"/>. It implements the steps above | target="GEOFEED-FINDER"/>. It implements the steps above and of all | |||
and of all the Operational Considerations described in <xref | the Operational Considerations described in <xref target="ops"/>, | |||
target="ops"/>, including caching. It produces a single geofeed | including caching. It produces a single geofeed file, merging all the | |||
file, merging all the geofeed files found. This open-source | geofeed files found. This open-source code can be run daily by a | |||
code can be run daily by a cronjob, and the output file can be | cron job, and the output file can be directly used. | |||
directly used. | ||||
</t> | </t> | |||
<t> | <t> | |||
RIRs are converging on RDAP support which includes geofeed data, | RIRs are converging on Registration Data Access Protocol (RDAP) | |||
see <xref target="I-D.ietf-regext-rdap-geofeed"/>. This SHOULD | support, which includes geofeed data; see <xref | |||
NOT be used for bulk retrieval of geofeed data. | target="I-D.ietf-regext-rdap-geofeed"/>. This <bcp14>SHOULD | |||
NOT</bcp14> be used for bulk retrieval of geofeed data. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="auth" numbered="true" toc="default"> | <section anchor="auth" numbered="true" toc="default"> | |||
<name>Authenticating Geofeed Data (Optional)</name> | <name>Authenticating Geofeed Data (Optional)</name> | |||
<t> | <t> | |||
The question arises whether a particular geofeed <xref | The question arises whether a particular geofeed <xref | |||
target="RFC8805"/> data set is valid, i.e., is authorized by the | target="RFC8805"/> data set is valid, i.e., is authorized by the | |||
"owner" of the IP address space and is authoritative in some | "owner" of the IP address space and is authoritative in some sense. | |||
sense. The inetnum: that points to the geofeed <xref | The inetnum: that points to the geofeed <xref target="RFC8805"/> file | |||
target="RFC8805"/> file provides some assurance. Unfortunately, | provides some assurance. Unfortunately, the RPSL in some repositories | |||
the RPSL in some repositories is weakly authenticated at best. | is weakly authenticated at best. An approach where the RPSL was | |||
An approach where RPSL was signed per <xref target="RFC7909"/> | signed per <xref target="RFC7909"/> would be good, except it would | |||
would be good, except it would have to be deployed by all RPSL | have to be deployed by all RPSL registries, and there is a fair number | |||
registries, and there is a fair number of them. | of them. | |||
</t> | </t> | |||
<t> | <t> | |||
The remainder of this section specifies an optional | The remainder of this section specifies an optional | |||
authenticator for the geofeed data set that follows the Signed | authenticator for the geofeed data set that follows "Signed | |||
Object Template for the Resource Public Key Infrastructure | Object Template for the Resource Public Key Infrastructure | |||
(RPKI) <xref target="RFC6488"/>. | (RPKI)" <xref target="RFC6488"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
A single optional authenticator MAY be appended to a geofeed | A single optional authenticator <bcp14>MAY</bcp14> be appended to a geofe ed | |||
<xref target="RFC8805"/> file. It is a digest of the main body | <xref target="RFC8805"/> file. It is a digest of the main body | |||
of the file signed by the private key of the relevant RPKI | of the file signed by the private key of the relevant RPKI | |||
certificate for a covering address range. The following format | certificate for a covering address range. The following format | |||
bundles the relevant RPKI certificate with a signature over the | bundles the relevant RPKI certificate with a signature over the | |||
geofeed text. | geofeed text. | |||
</t> | </t> | |||
<t> | <t> | |||
The canonicalization procedure converts the data from their | The canonicalization procedure converts the data from their | |||
internal character representation to the UTF-8 <xref | internal character representation to the UTF-8 <xref target="RFC3629"/> c | |||
target="RFC3629"/> character encoding, and the <CRLF> | haracter encoding, and the <CRLF> | |||
sequence MUST be used to denote the end of each line of text. A | sequence <bcp14>MUST</bcp14> be used to denote the end of each line of te | |||
xt. A | ||||
blank line is represented solely by the <CRLF> sequence. | blank line is represented solely by the <CRLF> sequence. | |||
For robustness, any non-printable characters MUST NOT be changed | For robustness, any non-printable characters <bcp14>MUST NOT</bcp14> be c | |||
by canonicalization. Trailing blank lines MUST NOT appear at | hanged | |||
by canonicalization. Trailing blank lines <bcp14>MUST NOT</bcp14> appear | ||||
at | ||||
the end of the file. That is, the file must not end with | the end of the file. That is, the file must not end with | |||
multiple consecutive <CRLF> sequences. Any end-of-file | multiple consecutive <CRLF> sequences. Any end-of-file | |||
marker used by an operating system is not considered to be part | marker used by an operating system is not considered to be part | |||
of the file content. When present, such end-of-file markers | of the file content. When present, such end-of-file markers | |||
MUST NOT be covered by the digital signature. | <bcp14>MUST NOT</bcp14> be covered by the digital signature. | |||
</t> | </t> | |||
<t> | <t> | |||
If the authenticator is not in the canonical form described above, | If the authenticator is not in the canonical form described above, | |||
then, the authenticator is invalid. | then the authenticator is invalid. | |||
</t> | </t> | |||
<t> | <t> | |||
Borrowing detached signatures from <xref target="RFC5485"/>, | Borrowing detached signatures from <xref target="RFC5485"/>, after | |||
after file canonicalization, the Cryptographic Message Syntax | file canonicalization, the Cryptographic Message Syntax (CMS) <xref | |||
(CMS) <xref target="RFC5652"/> is used to create a detached | target="RFC5652"/> is used to create a detached DER-encoded signature | |||
DER-encoded signature that is then Base64 encoded with padding | that is then Base64 encoded with padding (as defined in <xref | |||
(as defined in Section 4 of <xref target="RFC4648"/>) and line | target="RFC4648" sectionFormat="of" section="4"/>) and line wrapped to | |||
wrapped to 72 or fewer characters. The same digest algorithm | 72 or fewer characters. The same digest algorithm <bcp14>MUST</bcp14> | |||
MUST be used for calculating the message digest of the content | be used for calculating the message digest of the content being | |||
being signed, which is the geofeed file, and for calculating the | signed, which is the geofeed file, and for calculating the message | |||
message digest on the SignerInfo SignedAttributes <xref | digest on the SignerInfo SignedAttributes <xref target="RFC8933"/>. | |||
target="RFC8933"/>. The message digest algorithm identifier | The message digest algorithm identifier <bcp14>MUST</bcp14> appear in | |||
MUST appear in both the CMS SignedData | both the CMS SignedData DigestAlgorithmIdentifiers and the SignerInfo | |||
DigestAlgorithmIdentifiers and the SignerInfo | ||||
DigestAlgorithmIdentifier <xref target="RFC5652"/>. The RPKI | DigestAlgorithmIdentifier <xref target="RFC5652"/>. The RPKI | |||
certificate covering the geofeed inetnum: object's address range | certificate covering the geofeed inetnum: object's address range is | |||
is included in the CMS SignedData certificates field <xref | included in the CMS SignedData certificates field <xref | |||
target="RFC5652"/>. | target="RFC5652"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The address range of the signing certificate MUST cover all | The address range of the signing certificate <bcp14>MUST</bcp14> cover al l | |||
prefixes in the signed geofeed file. If not, the authenticator | prefixes in the signed geofeed file. If not, the authenticator | |||
is invalid. | is invalid. | |||
</t> | </t> | |||
<t> | <t> | |||
The signing certificate MUST NOT include the Autonomous System | The signing certificate <bcp14>MUST NOT</bcp14> include the Autonomous Sy | |||
Identifier Delegation certificate extension <xref | stem | |||
target="RFC3779"/>. If it is present, the authenticator is | Identifier Delegation certificate extension <xref target="RFC3779"/>. If | |||
it is present, the authenticator is | ||||
invalid. | invalid. | |||
</t> | </t> | |||
<t> | <t> | |||
As with many other RPKI signed objects, the IP Address | As with many other RPKI signed objects, the IP Address Delegation | |||
Delegation certificate extension MUST NOT use the "inherit" | certificate extension <bcp14>MUST NOT</bcp14> use the "inherit" | |||
capability defined in Section 2.2.3.5 of <xref | capability defined in <xref target="RFC3779" sectionFormat="of" section= | |||
target="RFC3779"/>. If "inherit" is used, the authenticator is | "2.2.3.5"/>. If | |||
invalid. | "inherit" is used, the authenticator is invalid. | |||
</t> | </t> | |||
<t> | <t> | |||
An IP Address Delegation extension using "inherit" would | An IP Address Delegation extension using "inherit" would | |||
complicate processing. The implementation would have to build | complicate processing. The implementation would have to build | |||
the certification path from the end-entity to the trust anchor, | the certification path from the end entity to the trust anchor, | |||
then validate the path from the trust anchor to the end-entity, | then validate the path from the trust anchor to the end entity, | |||
and then the parameter would have to be remembered when the | and then the parameter would have to be remembered when the | |||
validated public key was used to validate a signature on a CMS | validated public key was used to validate a signature on a CMS | |||
object. Having to remember things from certification path | object. Having to remember things from certification path | |||
validation for use with CMS object processing would be quite | validation for use with CMS object processing would be quite | |||
complex and error prone. And, the certificates do not get that | complex and error-prone. Additionally, the certificates do not get that | |||
much bigger by repeating the information. | much bigger by repeating the information. | |||
</t> | </t> | |||
<t> | <t> | |||
An address range A "covers" address range B if the range of B is | An address range A "covers" address range B if the range of B is | |||
identical to or a subset of A. "Address range" is used here | identical to or a subset of A. "Address range" is used here | |||
because inetnum: objects and RPKI certificates need not align on | because inetnum: objects and RPKI certificates need not align on | |||
Classless Inter-Domain Routing (CIDR) <xref target="RFC4632"/> | Classless Inter-Domain Routing (CIDR) <xref target="RFC4632"/> | |||
prefix boundaries, while those of the lines in a geofeed file do | prefix boundaries, while those of the lines in a geofeed file do | |||
align. | align. | |||
</t> | </t> | |||
<t> | <t> | |||
The Certificate Authority (CA) SHOULD sign only one geofeed file | The Certification Authority (CA) <bcp14>SHOULD</bcp14> sign only one geof | |||
with each generated private key and SHOULD generate a new key | eed file | |||
pair for each new version of a perticular geofeed file. The CA | with each generated private key and <bcp14>SHOULD</bcp14> generate a new | |||
MUST generate a new End Entity (EE) certificate for each signing | key | |||
pair for each new version of a particular geofeed file. The CA | ||||
<bcp14>MUST</bcp14> generate a new end entity (EE) certificate for each s | ||||
igning | ||||
of a particular geofeed file. An associated EE certificate used | of a particular geofeed file. An associated EE certificate used | |||
in this fashion is termed a "one-time-use" EE certificate (see | in this fashion is termed a "one-time-use" EE certificate (see | |||
Section 3 of <xref target="RFC6487"/>). | <xref target="RFC6487" sectionFormat="of" section="3"/>). | |||
</t> | </t> | |||
<t> | <t> | |||
Identifying the private key associated with the certificate and | Identifying the private key associated with the certificate and | |||
getting the department that controls the private key (which | getting the department that controls the private key (which | |||
might be stored in a Hardware Security Module (HSM)) to generate | might be stored in a Hardware Security Module (HSM)) to generate | |||
the CMS signature is left as an exercise for the implementor. | the CMS signature is left as an exercise for the implementor. | |||
On the other hand, verifying the signature has no similar | On the other hand, verifying the signature has no similar | |||
complexity; the certificate, which is validated in the public | complexity; the certificate, which is validated in the public | |||
RPKI, contains the needed public key. The RPKI trust anchors | RPKI, contains the needed public key. The RPKI trust anchors | |||
for the RIRs are expected to already be available to the party | for the RIRs are expected to already be available to the party | |||
performing signature validation. Validation of the CMS | performing signature validation. Validation of the CMS | |||
signature over the geofeed file involves: | signature over the geofeed file involves: | |||
</t> | </t> | |||
<ol spacing="normal" type="1"> | <ol spacing="normal" type="1"> | |||
<li> | <li> | |||
Obtaining the signer's certificate from the CMS SignedData | Obtaining the signer's certificate from the CMS SignedData | |||
CertificateSet <xref target="RFC5652"/>. The certificate | CertificateSet <xref target="RFC5652"/>. The certificate | |||
SubjectKeyIdentifier extension <xref target="RFC5280"/> MUST | SubjectKeyIdentifier extension <xref target="RFC5280"/> <bcp14>MUST</bc p14> | |||
match the SubjectKeyIdentifier in the CMS SignerInfo | match the SubjectKeyIdentifier in the CMS SignerInfo | |||
SignerIdentifier <xref target="RFC5652"/>. If the key | SignerIdentifier <xref target="RFC5652"/>. If the key | |||
identifiers do not match, then validation MUST fail. | identifiers do not match, then validation <bcp14>MUST</bcp14> fail. | |||
</li> | </li> | |||
<li> | ||||
<li> | Validating the signer's certificate <bcp14>MUST</bcp14> ensure that it | |||
Validating the signer's certificate MUST ensure that it is | is | |||
part of the current <xref target="RFC9286"/> manifest and that | part of the current <xref target="RFC9286"/> manifest and that | |||
all resources are covered by the RPKI certificate. | all resources are covered by the RPKI certificate. | |||
</li> | </li> | |||
<li> | ||||
<li> | ||||
Constructing the certification path for the signer's | Constructing the certification path for the signer's | |||
certificate. All of the needed certificates are expected to | certificate. All of the needed certificates are expected to | |||
be readily available in the RPKI repository. The | be readily available in the RPKI repository. The | |||
certification path MUST be valid according to the validation | certification path <bcp14>MUST</bcp14> be valid according to the valida tion | |||
algorithm in <xref target="RFC5280"/> and the additional | algorithm in <xref target="RFC5280"/> and the additional | |||
checks specified in <xref target="RFC3779"/> associated with | checks specified in <xref target="RFC3779"/> associated with | |||
the IP Address Delegation certificate extension and the | the IP Address Delegation certificate extension and the | |||
Autonomous System Identifier Delegation certificate extension. | Autonomous System Identifier Delegation certificate extension. | |||
If certification path validation is unsuccessful, then | If certification path validation is unsuccessful, then | |||
validation MUST fail. | validation <bcp14>MUST</bcp14> fail. | |||
</li> | </li> | |||
<li> | ||||
<li> | Validating the CMS SignedData as specified in <xref target="RFC5652"/> | |||
Validating the CMS SignedData as specified in <xref | using the public key from the validated | |||
target="RFC5652"/> using the public key from the validated | ||||
signer's certificate. If the signature validation is | signer's certificate. If the signature validation is | |||
unsuccessful, then validation MUST fail. | unsuccessful, then validation <bcp14>MUST</bcp14> fail. | |||
</li> | </li> | |||
<li> | ||||
<li> | ||||
Confirming that the eContentType object identifier (OID) is | Confirming that the eContentType object identifier (OID) is | |||
id-ct-geofeedCSVwithCRLF (1.2.840.113549.1.9.16.1.47). This | id-ct-geofeedCSVwithCRLF (1.2.840.113549.1.9.16.1.47). This | |||
OID MUST appear within both the eContentType in the | OID <bcp14>MUST</bcp14> appear within both the eContentType in the | |||
encapContentInfo object and the ContentType signed attribute | encapContentInfo object and within the ContentType signed attribute | |||
in the signerInfo object (see <xref target="RFC6488"/>). | in the signerInfo object (see <xref target="RFC6488"/>). | |||
</li> | </li> | |||
<li> | ||||
<li> | ||||
Verifying that the IP Address Delegation certificate | Verifying that the IP Address Delegation certificate | |||
extension <xref target="RFC3779"/> covers all of the address | extension <xref target="RFC3779"/> covers all of the address | |||
ranges of the geofeed file. If all of the address ranges are | ranges of the geofeed file. If all of the address ranges are | |||
not covered, then validation MUST fail. | not covered, then validation <bcp14>MUST</bcp14> fail. | |||
</li> | </li> | |||
</ol> | </ol> | |||
<t> | <t> | |||
All of the above steps MUST be successful to consider the | All of the above steps <bcp14>MUST</bcp14> be successful to consider the | |||
geofeed file signature as valid. | geofeed file signature as valid. | |||
</t> | </t> | |||
<t> | <t> | |||
The authenticator MUST be hidden as a series of "#" comments at the | The authenticator <bcp14>MUST</bcp14> be hidden as a series of "#" commen ts at the | |||
end of the geofeed file. The following simple example is | end of the geofeed file. The following simple example is | |||
cryptographically incorrect: | cryptographically incorrect: | |||
</t> | </t> | |||
<sourcecode type=""><![CDATA[ | <sourcecode type=""><![CDATA[ | |||
# RPKI Signature: 192.0.2.0 - 192.0.2.255 | # RPKI Signature: 192.0.2.0 - 192.0.2.255 | |||
# MIIGlwYJKoZIhvcNAQcCoIIGiDCCBoQCAQMxDTALBglghkgBZQMEAgEwDQYLKoZ | # MIIGlwYJKoZIhvcNAQcCoIIGiDCCBoQCAQMxDTALBglghkgBZQMEAgEwDQYLKoZ | |||
# IhvcNAQkQAS+gggSxMIIErTCCA5WgAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZu | # IhvcNAQkQAS+gggSxMIIErTCCA5WgAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZu | |||
... | ... | |||
# imwYkXpiMxw44EZqDjl36MiWsRDLdgoijBBcGbibwyAfGeR46k5raZCGvxG+4xa | # imwYkXpiMxw44EZqDjl36MiWsRDLdgoijBBcGbibwyAfGeR46k5raZCGvxG+4xa | |||
# O8PDTxTfIYwAnBjRBKAqAZ7yX5xHfm58jUXsZJ7Ileq1S7G6Kk= | # O8PDTxTfIYwAnBjRBKAqAZ7yX5xHfm58jUXsZJ7Ileq1S7G6Kk= | |||
# End Signature: 192.0.2.0 - 192.0.2.255 | # End Signature: 192.0.2.0 - 192.0.2.255 | |||
]]></sourcecode> | ]]></sourcecode> | |||
<t> | <t> | |||
A correct and full example is in Appendix A. | A correct and full example is in <xref target="example"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The CMS signature does not cover the signature lines. | The CMS signature does not cover the signature lines. | |||
</t> | </t> | |||
<t> | <t> | |||
The bracketing "# RPKI Signature:" and "# End Signature:" MUST | The bracketing "# RPKI Signature:" and "# End Signature:" <bcp14>MUST</bc p14> | |||
be present as shown in the example. The RPKI Signature's IP | be present as shown in the example. The RPKI Signature's IP | |||
address range MUST match that of the geofeed URL in the inetnum: | address range <bcp14>MUST</bcp14> match that of the geofeed URL in the in etnum: | |||
that points to the geofeed file. | that points to the geofeed file. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="ops" numbered="true" toc="default"> | <section anchor="ops" numbered="true" toc="default"> | |||
<name>Operational Considerations</name> | <name>Operational Considerations</name> | |||
<t> | <t> | |||
To create the needed inetnum: objects, an operator wishing to register | To create the needed inetnum: objects, an operator wishing to register | |||
the location of their geofeed file needs to coordinate with their | the location of their geofeed file needs to coordinate with their | |||
Regional Internet Registry (RIR) or National Internet Registry (NIR) | Regional Internet Registry (RIR) or National Internet Registry (NIR) | |||
and/or any provider Local Internet Registry (LIR) that has assigned | and/or any provider Local Internet Registry (LIR) that has assigned | |||
address ranges to them. RIRs/NIRs provide means for assignees to | address ranges to them. RIRs/NIRs provide means for assignees to | |||
create and maintain inetnum: objects. They also provide means of | create and maintain inetnum: objects. They also provide means of | |||
assigning or sub-assigning IP address resources and allowing the | assigning or sub-assigning IP address resources and allowing the | |||
assignee to create WHOIS data, including inetnum: objects, thereby | assignee to create WHOIS data, including inetnum: objects, thereby | |||
referring to geofeed files. | referring to geofeed files. | |||
</t> | </t> | |||
<t> | <t> | |||
The geofeed files MUST be published via and fetched using | The geofeed files <bcp14>MUST</bcp14> be published via and fetched using | |||
HTTPS <xref target="RFC9110" format="default"/>. | HTTPS <xref target="RFC9110" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
When using data from a geofeed file, one MUST ignore data | When using data from a geofeed file, one <bcp14>MUST</bcp14> ignore data | |||
outside the referring inetnum: object's inetnum: attribute | outside the referring inetnum: object's inetnum: attribute | |||
address range. | address range. | |||
</t> | </t> | |||
<t> | <t> | |||
If and only if the geofeed file is not signed per <xref target="auth" | If and only if the geofeed file is not signed per <xref target="auth" fo | |||
format="default"/>, then multiple inetnum: objects MAY | rmat="default"/>, then multiple inetnum: objects <bcp14>MAY</bcp14> | |||
refer to the same geofeed file, and the consumer MUST | refer to the same geofeed file, and the consumer <bcp14>MUST</bcp14> | |||
use only lines in the geofeed file where the prefix is covered by the | use only lines in the geofeed file where the prefix is covered by the | |||
address range of the inetnum: object's URL it has followed. | address range of the inetnum: object's URL it has followed. | |||
</t> | </t> | |||
<t> | <t> | |||
If the geofeed file is signed, and the signer's certificate | If the geofeed file is signed, and the signer's certificate | |||
changes, the signature in the geofeed file MUST | changes, the signature in the geofeed file <bcp14>MUST</bcp14> | |||
be updated. | be updated. | |||
</t> | </t> | |||
<t> | <t> | |||
It is good key hygiene to use a given key for only one purpose. | It is good key hygiene to use a given key for only one purpose. | |||
To dedicate a signing private key for signing a geofeed file, an | To dedicate a signing private key for signing a geofeed file, an | |||
RPKI Certification Authority (CA) may issue a subordinate | RPKI Certification Authority (CA) may issue a subordinate | |||
certificate exclusively for the purpose shown in <xref | certificate exclusively for the purpose shown in <xref target="example" | |||
target="example" format="default"/>. | format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
Harvesting and publishing aggregated geofeed data outside of the | Harvesting and publishing aggregated geofeed data outside of the RPSL | |||
RPSL model should be avoided as it can have the effect that more | model should be avoided as it could lead to detailed data | |||
specifics from one aggregatee could undesirably affect the less | of one aggregatee undesirably affecting the less detailed data of a | |||
specifics of a different aggregatee. Moreover, publishing | different aggregatee. Moreover, publishing | |||
aggregated geofeed data prevents the reader of the data to | aggregated geofeed data prevents the reader of the data from | |||
perform the checks described in <xref target="fetch"/> and <xref | performing the checks described in <xref target="fetch"/> and <xref targ | |||
target="auth"/>. | et="auth"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
At the time of publishing this document, geolocation providers | At the time of publishing this document, geolocation providers | |||
have bulk WHOIS data access at all the RIRs. An anonymized | have bulk WHOIS data access at all the RIRs. An anonymized | |||
version of such data is openly available for all RIRs except | version of such data is openly available for all RIRs except | |||
ARIN, which requires an authorization. However, for users | ARIN, which requires an authorization. However, for users | |||
without such authorization, the same result can be achieved with | without such authorization, the same result can be achieved with | |||
extra RDAP effort. There is open-source code to pass over such | extra RDAP effort. There is open-source code to pass over such | |||
data across all RIRs, collect all geofeed references, and | data across all RIRs, collect all geofeed references, and | |||
process them <xref target="GEOFEED-FINDER" format="default"/>. | process them <xref target="GEOFEED-FINDER" format="default"/>. | |||
skipping to change at line 699 ¶ | skipping to change at line 636 ¶ | |||
<t> | <t> | |||
At the time of publishing this document, geolocation providers | At the time of publishing this document, geolocation providers | |||
have bulk WHOIS data access at all the RIRs. An anonymized | have bulk WHOIS data access at all the RIRs. An anonymized | |||
version of such data is openly available for all RIRs except | version of such data is openly available for all RIRs except | |||
ARIN, which requires an authorization. However, for users | ARIN, which requires an authorization. However, for users | |||
without such authorization, the same result can be achieved with | without such authorization, the same result can be achieved with | |||
extra RDAP effort. There is open-source code to pass over such | extra RDAP effort. There is open-source code to pass over such | |||
data across all RIRs, collect all geofeed references, and | data across all RIRs, collect all geofeed references, and | |||
process them <xref target="GEOFEED-FINDER" format="default"/>. | process them <xref target="GEOFEED-FINDER" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
To prevent undue load on RPSL and geofeed servers, | To prevent undue load on RPSL and geofeed servers, | |||
entity-fetching geofeed data using these mechanisms MUST | entity-fetching geofeed data using these mechanisms <bcp14>MUST | |||
NOT do frequent real-time lookups. <xref | NOT</bcp14> do frequent real-time lookups. <xref target="RFC8805" secti | |||
target="RFC8805" sectionFormat="of" section="3.4" | onFormat="of" section="3.4" format="default"/> suggests use of the HTTP Expires | |||
format="default"/> suggests use of the HTTP Expires header <xref | header <xref target="RFC9111" format="default"/> to signal when geofeed data | |||
target="RFC7234" format="default"/> to signal when geofeed data | ||||
should be refetched. As the data change very infrequently, in | should be refetched. As the data change very infrequently, in | |||
the absence of such an HTTP Header signal, collectors | the absence of such an HTTP Header signal, collectors | |||
SHOULD NOT fetch more frequently than weekly. It | <bcp14>SHOULD NOT</bcp14> fetch more frequently than weekly. It | |||
would be polite not to fetch at magic times such as midnight | would be polite not to fetch at magic times such as midnight | |||
UTC, the first of the month, etc., because too many others are | UTC, the first of the month, etc., because too many others are | |||
likely to do the same. | likely to do the same. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="privacy" numbered="true" toc="default"> | <section anchor="privacy" numbered="true" toc="default"> | |||
<name>Privacy Considerations</name> | <name>Privacy Considerations</name> | |||
<t> | <t> | |||
<xref target="RFC8805" format="default"/> geofeed data may reveal the | <xref target="RFC8805" format="default"/> geofeed data may reveal the | |||
approximate location of an IP address, which might in turn reveal the | approximate location of an IP address, which might in turn reveal the | |||
approximate location of an individual user. Unfortunately, <xref | approximate location of an individual user. Unfortunately, <xref target | |||
target="RFC8805" format="default"/> provides no privacy guidance on | ="RFC8805" format="default"/> provides no privacy guidance on | |||
avoiding or ameliorating possible damage due to this exposure of the | avoiding or ameliorating possible damage due to this exposure of the | |||
user. In publishing pointers to geofeed files as described in this | user. In publishing pointers to geofeed files as described in this | |||
document, the operator should be aware of this exposure in geofeed | document, the operator should be aware of this exposure in geofeed | |||
data and be cautious. All the privacy considerations of <xref | data and be cautious. All the privacy considerations of <xref target="R | |||
target="RFC8805" sectionFormat="of" section="4" format="default"/> | FC8805" sectionFormat="of" section="4" format="default"/> | |||
apply to this document. | apply to this document. | |||
</t> | </t> | |||
<t> | <t> | |||
Where <xref target="RFC8805" format="default"/> provided the ability | Where <xref target="RFC8805" format="default"/> provided the ability | |||
to publish location data, this document makes bulk access to those data | to publish location data, this document makes bulk access to those data | |||
readily available. This is a goal, not an accident. | readily available. This is a goal, not an accident. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="impl" numbered="true" toc="default"> | <section anchor="impl" numbered="true" toc="default"> | |||
<name>Implementation Status</name> | <name>Implementation Status</name> | |||
<t> | <t> | |||
At the time of publishing this document, the geofeed: attribute | At the time of publishing this document, the geofeed: attribute | |||
in inetnum objects has been implemented in the RIPE and APNIC | in inetnum objects has been implemented in the RIPE and APNIC | |||
databases. | databases. | |||
</t> | </t> | |||
<t> | <t> | |||
Registrants in databases which do not yet support the geofeed: | Registrants in databases that do not yet support the geofeed: | |||
attribute are using the remarks:, or equivalent, attribute. | attribute are using the remarks: attribute, or equivalent. | |||
</t> | </t> | |||
<t> | <t> | |||
At the time of publishing this document, the registry data | At the time of publishing this document, the registry data | |||
published by ARIN are not the same RPSL as that of the other | published by ARIN are not the same RPSL as that of the other | |||
registries (see <xref target="RFC7485" format="default"/> for a | registries (see <xref target="RFC7485" format="default"/> for a | |||
survey of the WHOIS Tower of Babel); therefore, when fetching | survey of the WHOIS Tower of Babel). Therefore, when fetching | |||
from ARIN via FTP <xref target="RFC0959" format="default"/>, | from ARIN via FTP <xref target="RFC0959" format="default"/>, | |||
WHOIS <xref target="RFC3912" format="default"/>, the | WHOIS <xref target="RFC3912" format="default"/>, the RDAP <xref target=" | |||
Registration Data Access Protocol (RDAP) <xref target="RFC9082" | RFC9082" format="default"/>, etc., the "NetRange" attribute/key must be | |||
format="default"/>, etc., the "NetRange" attribute/key must be | ||||
treated as "inetnum", and the "Comment" attribute must be | treated as "inetnum", and the "Comment" attribute must be | |||
treated as "remarks". | treated as "remarks". | |||
</t> | </t> | |||
<t> | <t> | |||
<xref target="rpki-client"/> can be used to authenticate a | <xref target="rpki-client"/> can be used to authenticate a | |||
signed geofeed file. | signed geofeed file. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="seccons" numbered="true" toc="default"> | <section anchor="seccons" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t> | <t> | |||
It is generally prudent for a consumer of geofeed data to also | It is generally prudent for a consumer of geofeed data to also | |||
use other sources to cross-validate the data. All the security | use other sources to cross-validate the data. All the security | |||
considerations of <xref target="RFC8805" format="default"/> | considerations of <xref target="RFC8805" format="default"/> | |||
apply here as well. | apply here as well. | |||
</t> | </t> | |||
<t> | <t> | |||
The consumer of geofeed data SHOULD fetch and process the data | The consumer of geofeed data <bcp14>SHOULD</bcp14> fetch and process the | |||
themselves. Importing datasets produced and/or processed by a | data | |||
themselves. Importing data sets produced and/or processed by a | ||||
third-party places significant trust in the third-party. | third-party places significant trust in the third-party. | |||
</t> | </t> | |||
<t> | <t> | |||
As mentioned in <xref target="auth" format="default"/>, some | As mentioned in <xref target="auth" format="default"/>, some | |||
RPSL repositories have weak, if any, authentication. This | RPSL repositories have weak, if any, authentication. This | |||
allows spoofing of inetnum: objects pointing to malicious | allows spoofing of inetnum: objects pointing to malicious | |||
geofeed files. <xref target="auth" format="default"/> suggests | geofeed files. <xref target="auth" format="default"/> suggests | |||
an unfortunately complex method for stronger authentication | an unfortunately complex method for stronger authentication | |||
based on the RPKI. | based on the RPKI. | |||
</t> | </t> | |||
<t> | <t> | |||
For example, if an inetnum: for a wide address range (e.g., a | For example, if an inetnum: for a wide address range (e.g., a | |||
/16) points to an RPKI-signed geofeed file, a customer or | /16) points to an RPKI-signed geofeed file, a customer or | |||
attacker could publish an unsigned equal or narrower (e.g., a | attacker could publish an unsigned equal or narrower (e.g., a | |||
/24) inetnum: in a WHOIS registry that has weak authorization, | /24) inetnum: in a WHOIS registry that has weak authorization, | |||
abusing the rule that the most-specific inetnum: object with a | abusing the rule that the most-specific inetnum: object with a | |||
geofeed reference MUST be used. | geofeed reference <bcp14>MUST</bcp14> be used. | |||
</t> | </t> | |||
<t> | <t> | |||
If signatures were mandatory, the above attack would be stymied, but | If signatures were mandatory, the above attack would be stymied, but | |||
of course that is not happening anytime soon. | of course that is not happening anytime soon. | |||
</t> | </t> | |||
<t> | <t> | |||
The RPSL providers have had to throttle fetching from their | The RPSL providers have had to throttle fetching from their | |||
servers due to too-frequent queries. Usually, they throttle by | servers due to too-frequent queries. Usually, they throttle by | |||
the querying IP address or block. Similar defenses will likely | the querying IP address or block. Similar defenses will likely | |||
need to be deployed by geofeed file servers. | need to be deployed by geofeed file servers. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="iana" numbered="true" toc="default"> | <section anchor="iana" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t> | <t> | |||
In the SMI Security for S/MIME CMS Content Type | In the SMI Security for S/MIME CMS Content Type | |||
(1.2.840.113549.1.9.16.1) in the Structure of Management | (1.2.840.113549.1.9.16.1) in the Structure of Management | |||
Information (SMI) Numbers (MIB Module Registrations) registry | Information (SMI) Numbers (MIB Module Registrations) registry | |||
group located at: https://www.iana.org/assignments/smi-numbers/ | group (located at <eref target="https://www.iana.org/assignments/smi-numb | |||
there is an existing registration for: | ers/" brackets="angle"/>), | |||
<figure> | the reference for this registration has been updated to this document: | |||
<artwork> | ||||
Decimal: 47 | ||||
Description: id-ct-geofeedCSVwithCRLF | ||||
</artwork> | ||||
</figure> | ||||
On publication of this document, that reference needs to be | ||||
changed to the new [ RFC-to-be ]. | ||||
</t> | </t> | |||
<table anchor="IANA-registration"> | ||||
<name>From SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.1) | ||||
</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Decimal</th> | ||||
<th>Description</th> | ||||
<th>Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>47</td> | ||||
<td>id-ct-geofeedCSVwithCRLF</td> | ||||
<td>RFC 9632</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
<section title="Acknowledgments" anchor="acks"> | ||||
<t>Thanks to Rob Austein for CMS and detached signature clue, | ||||
George Michaelson for the first and substantial external review, | ||||
and Erik Kline who was too shy to agree to coauthorship. | ||||
Additionally, we express our gratitude to early implementors, | ||||
including Menno Schepers; Flavio Luciani; Eric Dugas; and Kevin | ||||
Pack. Also, thanks to the following geolocation providers who are | ||||
consuming geofeeds with this described solution: Jonathan Kosgei | ||||
(ipdata.co), Ben Dowling (ipinfo.io), and Pol Nisenblat | ||||
(bigdatacloud.com). For an amazing number of helpful reviews, we | ||||
thank Job Snijders, who also found an ASN.1 'inherit' issue; | ||||
Adrian Farrel; Antonio Prado; Francesca Palombini; Jean-Michel | ||||
Combes (INTDIR); John Scudder; Kyle Rose (SECDIR); Martin Duke; | ||||
Mohamed Boucadair; Murray Kucherawy; Paul Kyzivat (GENART); Rob | ||||
Wilton; Roman Danyliw; and Ties de Kock.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-regext-rdap-geofeed" to="RDAP-GEOFEED"/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
622.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
725.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
629.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
779.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
012.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
648.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
280.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
652.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
481.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
487.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
488.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
805.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
933.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
110.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
286.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.0 | ||||
959.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
912.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
632.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
485.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
269.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
485.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
909.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
082.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
092.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
111.xml"/> | ||||
<references title="Normative References"> | <!-- [I-D.ietf-regext-rdap-geofeed] IESG state: I-D Exists as of 02/27/24--> | |||
<?rfc include="reference.RFC.2119.xml"?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-reg | |||
<?rfc include="reference.RFC.2622.xml"?> | ext-rdap-geofeed.xml"/> | |||
<?rfc include="reference.RFC.2725.xml"?> | ||||
<?rfc include="reference.RFC.3629.xml"?> | ||||
<?rfc include="reference.RFC.3779.xml"?> | ||||
<?rfc include="reference.RFC.4012.xml"?> | ||||
<?rfc include="reference.RFC.4648.xml"?> | ||||
<?rfc include="reference.RFC.5280.xml"?> | ||||
<?rfc include="reference.RFC.5652.xml"?> | ||||
<?rfc include="reference.RFC.8174.xml"?> | ||||
<?rfc include="reference.RFC.6481.xml"?> | ||||
<?rfc include="reference.RFC.6487.xml"?> | ||||
<?rfc include="reference.RFC.6488.xml"?> | ||||
<?rfc include="reference.RFC.8805.xml"?> | ||||
<?rfc include="reference.RFC.8933.xml"?> | ||||
<?rfc include="reference.RFC.9110.xml"?> | ||||
<?rfc include="reference.RFC.9286.xml"?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include="reference.RFC.0959.xml"?> | ||||
<?rfc include="reference.RFC.3912.xml"?> | ||||
<?rfc include="reference.RFC.4632.xml"?> | ||||
<?rfc include="reference.RFC.5485.xml"?> | ||||
<?rfc include="reference.RFC.6269.xml"?> | ||||
<?rfc include="reference.RFC.7234.xml"?> | ||||
<?rfc include="reference.RFC.7485.xml"?> | ||||
<?rfc include="reference.RFC.7909.xml"?> | ||||
<?rfc include="reference.RFC.9082.xml"?> | ||||
<?rfc include="reference.RFC.9092.xml"?> | ||||
<?rfc include="reference.I-D.ietf-regext-rdap-geofeed"?> | ||||
<reference anchor="RIPE81" target="https://www.ripe.net/publications/doc s/ripe-081"> | <reference anchor="RIPE81" target="https://www.ripe.net/publications/doc s/ripe-081"> | |||
<front> | <front> | |||
<title>Representation Of IP Routing Policies In The RIPE Database</t itle> | <title>Representation Of IP Routing Policies In The RIPE Database</t itle> | |||
<author> | <author> | |||
<organization>RIPE NCC</organization> | <organization>RIPE NCC</organization> | |||
</author> | </author> | |||
<date month="February" year="1993"/> | <date month="February" year="1993"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RIPE181" target="https://www.ripe.net/publications/do cs/ripe-181"> | <reference anchor="RIPE181" target="https://www.ripe.net/publications/do cs/ripe-181"> | |||
<front> | <front> | |||
<title>Representation Of IP Routing Policies In A Routing Registry</ title> | <title>Representation Of IP Routing Policies In A Routing Registry</ title> | |||
<author> | <author> | |||
<organization>RIPE NCC</organization> | <organization>RIPE NCC</organization> | |||
</author> | </author> | |||
<date month="October" year="1994"/> | <date month="October" year="1994"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="RIPE-DB" target="https://www.ripe.net/manage-ips-and- asns/db/support/documentation/ripe-database-documentation"> | <reference anchor="RIPE-DB" target="https://www.ripe.net/manage-ips-and- asns/db/support/documentation/ripe-database-documentation"> | |||
<front> | <front> | |||
<title>RIPE Database Documentation</title> | <title>RIPE Database Documentation</title> | |||
<author> | <author> | |||
<organization>RIPE NCC</organization> | <organization>RIPE NCC</organization> | |||
</author> | </author> | |||
<date/> | <date month="September" year="2023"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="INETNUM" target="https://www.ripe.net/manage-ips-and- asns/db/support/documentation/ripe-database-documentation/rpsl-object-types/4-2- descriptions-of-primary-objects/4-2-4-description-of-the-inetnum-object"> | <reference anchor="INETNUM" target="https://apps.db.ripe.net/docs/RPSL-O bject-Types/Descriptions-of-Primary-Objects/#description-of-the-inetnum-object"> | |||
<front> | <front> | |||
<title>Description of the INETNUM Object</title> | <title>RIPE Database Documentation: Description of the INETNUM Objec t</title> | |||
<author> | <author> | |||
<organization>RIPE NCC</organization> | <organization>RIPE NCC</organization> | |||
</author> | </author> | |||
<date month="June" year="2020"/> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="INET6NUM" target="https://www.ripe.net/manage-ips-and -asns/db/support/documentation/ripe-database-documentation/rpsl-object-types/4-2 -descriptions-of-primary-objects/4-2-3-description-of-the-inet6num-object"> | <reference anchor="INET6NUM" target="https://apps.db.ripe.net/docs/RPSL- Object-Types/Descriptions-of-Primary-Objects/#description-of-the-inet6num-object "> | |||
<front> | <front> | |||
<title>Description of the INET6NUM Object</title> | <title>RIPE Database Documentation: Description of the INET6NUM Obje ct</title> | |||
<author> | <author> | |||
<organization>RIPE NCC</organization> | <organization>RIPE NCC</organization> | |||
</author> | </author> | |||
<date month="October" year="2019"/> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="GEOFEED-FINDER" target="https://github.com/massimocan dela/geofeed-finder"> | <reference anchor="GEOFEED-FINDER" target="https://github.com/massimocan dela/geofeed-finder"> | |||
<front> | <front> | |||
<title>geofeed-finder</title> | <title>geofeed-finder</title> | |||
<author> | <author> | |||
<organization></organization> | <organization/> | |||
</author> | </author> | |||
<date month="June" year="2021"/> | <date month="March" year="2024"/> | |||
</front> | </front> | |||
<refcontent>commit 5f557a4</refcontent> | <refcontent>commit 5f557a4</refcontent> | |||
</reference> | </reference> | |||
<reference anchor="rpki-client" target="https://sobornost.net/~job/using_g | <reference anchor="rpki-client" target="https://sobornost.net/~job/using | |||
eofeed_authenticators.txt"> | _geofeed_authenticators.txt"> | |||
<front> | <front> | |||
<title>Example on how to use rpki-client to authenticate a signed Geof | <title>Example on how to use rpki-client to authenticate a signed Ge | |||
eed</title> | ofeed</title> | |||
<author fullname="Job Snijders"/> | <author fullname="Job Snijders"/> | |||
<date month="September" year="2023" /> | <date month="September" year="2023"/> | |||
</front> | </front> | |||
</reference> | </reference> | |||
</references> | ||||
</references> | </references> | |||
<section anchor="example"> | ||||
<section title="Example" anchor="example"> | <name>Example</name> | |||
<t> | <t>This appendix provides an example, including a trust anchor, a | |||
This appendix provides an example, including a trust anchor, a | Certificate Revocation List (CRL) signed by the trust anchor, a CA | |||
Certificate Revocation List (CRL) signed by the trust anchor, a CA | certificate subordinate to the trust anchor, a CRL signed by the CA, an | |||
certificate subordinate to the trust anchor, a CRL signed by the CA, | end entity certificate subordinate to the CA for signing the geofeed, | |||
an end-entity certificate subordinate to the CA for signing the | and a detached signature.</t> | |||
geofeed, and a detached signature.</t> | <t>The trust anchor is represented by a self-signed certificate. As | |||
usual in the RPKI, the trust anchor has authority over all IPv4 address | ||||
<t> | blocks, all IPv6 address blocks, and all Autonomous System (AS) | |||
The trust anchor is represented by a self-signed certificate. As | numbers.</t> | |||
usual in the RPKI, the trust anchor has authority over all IPv4 | <sourcecode type=""><![CDATA[ | |||
address blocks, all IPv6 address blocks, and all Autonomous Systam | ||||
(AS) numbers.</t> | ||||
<figure><artwork><![CDATA[ | ||||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIIEQTCCAymgAwIBAgIUEggycNoFVRjAuN/Fw7URu0DEZNAwDQYJKoZIhvcNAQEL | MIIEQTCCAymgAwIBAgIUEggycNoFVRjAuN/Fw7URu0DEZNAwDQYJKoZIhvcNAQEL | |||
BQAwFTETMBEGA1UEAxMKZXhhbXBsZS10YTAeFw0yMzA5MTkyMDMzMzlaFw0zMzA5 | BQAwFTETMBEGA1UEAxMKZXhhbXBsZS10YTAeFw0yMzA5MTkyMDMzMzlaFw0zMzA5 | |||
MTYyMDMzMzlaMBUxEzARBgNVBAMTCmV4YW1wbGUtdGEwggEiMA0GCSqGSIb3DQEB | MTYyMDMzMzlaMBUxEzARBgNVBAMTCmV4YW1wbGUtdGEwggEiMA0GCSqGSIb3DQEB | |||
AQUAA4IBDwAwggEKAoIBAQDQprR+g/i4JyObVURTp1JpGM23vGPyE5fDKFPqV7rw | AQUAA4IBDwAwggEKAoIBAQDQprR+g/i4JyObVURTp1JpGM23vGPyE5fDKFPqV7rw | |||
M1Amm7cnew66U02IzV0X5oiv5nSGfRX5UxsbR+vwPBMceQyDgS5lexFiv4fB/Vjf | M1Amm7cnew66U02IzV0X5oiv5nSGfRX5UxsbR+vwPBMceQyDgS5lexFiv4fB/Vjf | |||
DT2qX/UjsLL9QOeaSOh7ToJSLjmtpa0D9iz7ful3hdxRjpMMZiE/reX9/ymdpW/E | DT2qX/UjsLL9QOeaSOh7ToJSLjmtpa0D9iz7ful3hdxRjpMMZiE/reX9/ymdpW/E | |||
dg0F6+T9WGZE1miPeIjl5OZwnmLHCftkN/aaYk1iPNjNniHYIOjC1jSpABmoZyTj | dg0F6+T9WGZE1miPeIjl5OZwnmLHCftkN/aaYk1iPNjNniHYIOjC1jSpABmoZyTj | |||
sgrwLE2F1fIRkVkwASqToq/D5v9voXaYYaXUNJb4H/5wenRuvT5O/n6PXh70rMQy | sgrwLE2F1fIRkVkwASqToq/D5v9voXaYYaXUNJb4H/5wenRuvT5O/n6PXh70rMQy | |||
F5yzLs96ytxqg5gGX9kabVnvxFU8nHfPa0rhlwfTJnljAgMBAAGjggGHMIIBgzAd | F5yzLs96ytxqg5gGX9kabVnvxFU8nHfPa0rhlwfTJnljAgMBAAGjggGHMIIBgzAd | |||
skipping to change at line 994 ¶ | skipping to change at line 909 ¶ | |||
ZXQvbm90aWZpY2F0aW9uLnhtbDAwBggrBgEFBQcwBYYkcnN5bmM6Ly9ycGtpLmV4 | ZXQvbm90aWZpY2F0aW9uLnhtbDAwBggrBgEFBQcwBYYkcnN5bmM6Ly9ycGtpLmV4 | |||
YW1wbGUubmV0L3JlcG9zaXRvcnkvMCcGCCsGAQUFBwEHAQH/BBgwFjAJBAIAATAD | YW1wbGUubmV0L3JlcG9zaXRvcnkvMCcGCCsGAQUFBwEHAQH/BBgwFjAJBAIAATAD | |||
AwEAMAkEAgACMAMDAQAwIQYIKwYBBQUHAQgBAf8EEjAQoA4wDDAKAgEAAgUA//// | AwEAMAkEAgACMAMDAQAwIQYIKwYBBQUHAQgBAf8EEjAQoA4wDDAKAgEAAgUA//// | |||
/zANBgkqhkiG9w0BAQsFAAOCAQEAa9eLY9QAmnlZOIyOzbpta5wqcOUQV/yR7o/0 | /zANBgkqhkiG9w0BAQsFAAOCAQEAa9eLY9QAmnlZOIyOzbpta5wqcOUQV/yR7o/0 | |||
1zkEZaSavKBt19lMK6AXZurx1T5jyjIwG7bEtZZThjtH2m80V5kc2tsFjSq/yp7N | 1zkEZaSavKBt19lMK6AXZurx1T5jyjIwG7bEtZZThjtH2m80V5kc2tsFjSq/yp7N | |||
JBclMHVd3tXse9If3nXYF4bxRIcir1lXlAbYN+Eo1U3i5qJO+fxouzt7Merk2Dih | JBclMHVd3tXse9If3nXYF4bxRIcir1lXlAbYN+Eo1U3i5qJO+fxouzt7Merk2Dih | |||
nsenTeXKzN7tfmuCYZZHCC8viCoJWdH+o1uRM4TiQApZsUJ8sF4TABrrRJmA/Ed5 | nsenTeXKzN7tfmuCYZZHCC8viCoJWdH+o1uRM4TiQApZsUJ8sF4TABrrRJmA/Ed5 | |||
v0CTBbgqTx7yg0+VarFLPdnjYgtpoCJqwE2C1UpX15rZSaLVuGXtbwXd/cHEg5vF | v0CTBbgqTx7yg0+VarFLPdnjYgtpoCJqwE2C1UpX15rZSaLVuGXtbwXd/cHEg5vF | |||
W6QTsMeMQFEUa6hkicDGtxLTUdhckBgmCGoF2nlZii5f1BTWAg== | W6QTsMeMQFEUa6hkicDGtxLTUdhckBgmCGoF2nlZii5f1BTWAg== | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t>The CRL is issued by the trust anchor.</t> | ||||
<t> | <sourcecode type=""><![CDATA[ | |||
The CRL issued by the trust anchor.</t> | ||||
<figure><artwork><![CDATA[ | ||||
-----BEGIN X509 CRL----- | -----BEGIN X509 CRL----- | |||
MIIBjjB4AgEBMA0GCSqGSIb3DQEBCwUAMBUxEzARBgNVBAMTCmV4YW1wbGUtdGEX | MIIBjjB4AgEBMA0GCSqGSIb3DQEBCwUAMBUxEzARBgNVBAMTCmV4YW1wbGUtdGEX | |||
DTIzMDkyMzE1NTUzOFoXDTIzMTAyMzE1NTUzOFqgLzAtMB8GA1UdIwQYMBaAFMC9 | DTIzMDkyMzE1NTUzOFoXDTIzMTAyMzE1NTUzOFqgLzAtMB8GA1UdIwQYMBaAFMC9 | |||
Ul2+0niyFuyzo0OV0gYLmQgyMAoGA1UdFAQDAgEEMA0GCSqGSIb3DQEBCwUAA4IB | Ul2+0niyFuyzo0OV0gYLmQgyMAoGA1UdFAQDAgEEMA0GCSqGSIb3DQEBCwUAA4IB | |||
AQCngOu+Nq3WC4y/pHtLoheAOtNg32WWsKPNiEyL+QalmOtURUsWMzOq41bmoPzQ | AQCngOu+Nq3WC4y/pHtLoheAOtNg32WWsKPNiEyL+QalmOtURUsWMzOq41bmoPzQ | |||
NDQoRmXe9mvohAVRe0CnM7A07HOtSfjw5aoouPXGTtfwEomHG2CYk+2U1bvxgZyA | NDQoRmXe9mvohAVRe0CnM7A07HOtSfjw5aoouPXGTtfwEomHG2CYk+2U1bvxgZyA | |||
E1c5TvyhkabFMO0+857wqxRP+ht9NV0lMX6kUFlEOCw3ELVd9oNNRBwKQtXj1huM | E1c5TvyhkabFMO0+857wqxRP+ht9NV0lMX6kUFlEOCw3ELVd9oNNRBwKQtXj1huM | |||
6Sf26va2a1tnC5zP01hN+EY3S9T5T1gcgPGBcqRWKoXJEbRzCrLsb/TMj5cMpIje | 6Sf26va2a1tnC5zP01hN+EY3S9T5T1gcgPGBcqRWKoXJEbRzCrLsb/TMj5cMpIje | |||
AHZoBojVAmvL1AIH/BnGAQj0+XqaJ0axHvlqJa8iX8QwKqhp+o6sv/atY2QDDRmE | AHZoBojVAmvL1AIH/BnGAQj0+XqaJ0axHvlqJa8iX8QwKqhp+o6sv/atY2QDDRmE | |||
Yjq/VrBVKu5VsDY2Lr29HszA | Yjq/VrBVKu5VsDY2Lr29HszA | |||
-----END X509 CRL----- | -----END X509 CRL----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | ||||
The CA certificate is issued by the trust anchor. This | The CA certificate is issued by the trust anchor. This | |||
certificate grants authority over one IPv4 address block | certificate grants authority over one IPv4 address block | |||
(192.0.2.0/24) and two AS numbers (64496 and 64497).</t> | (192.0.2.0/24) and two AS numbers (64496 and 64497).</t> | |||
<sourcecode type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIIE7DCCA9SgAwIBAgIUcyCzS10hdfG65kbRq7toQAvRDLkwDQYJKoZIhvcNAQEL | MIIE7DCCA9SgAwIBAgIUcyCzS10hdfG65kbRq7toQAvRDLkwDQYJKoZIhvcNAQEL | |||
BQAwFTETMBEGA1UEAxMKZXhhbXBsZS10YTAeFw0yMzA5MjMxNTU1MzhaFw0yNDA5 | BQAwFTETMBEGA1UEAxMKZXhhbXBsZS10YTAeFw0yMzA5MjMxNTU1MzhaFw0yNDA5 | |||
MjIxNTU1MzhaMDMxMTAvBgNVBAMTKDNBQ0UyQ0VGNEZCMjFCN0QxMUUzRTE4NEVG | MjIxNTU1MzhaMDMxMTAvBgNVBAMTKDNBQ0UyQ0VGNEZCMjFCN0QxMUUzRTE4NEVG | |||
QzFFMjk3QjM3Nzg2NDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc | QzFFMjk3QjM3Nzg2NDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc | |||
zz1qwTxC2ocw5rqp8ktm2XyYkl8riBVuqlXwfefTxsR2YFpgz9vkYUd5Az9EVEG7 | zz1qwTxC2ocw5rqp8ktm2XyYkl8riBVuqlXwfefTxsR2YFpgz9vkYUd5Az9EVEG7 | |||
6wGIyZbtmhK63eEeaqbKz2GHub467498BXeVrYysO+YuIGgCEYKznNDZ4j5aaDbo | 6wGIyZbtmhK63eEeaqbKz2GHub467498BXeVrYysO+YuIGgCEYKznNDZ4j5aaDbo | |||
j5+4/z0Qvv6HEsxQd0f8br6lKJwgeRM6+fm7796HNPB0aqD7Zj9NRCLXjbB0DCgJ | j5+4/z0Qvv6HEsxQd0f8br6lKJwgeRM6+fm7796HNPB0aqD7Zj9NRCLXjbB0DCgJ | |||
liH6rXMKR86ofgll9V2mRjesvhdKYgkGbOif9rvxVpLJ/6zdru5CE9yeuJZ59l+n | liH6rXMKR86ofgll9V2mRjesvhdKYgkGbOif9rvxVpLJ/6zdru5CE9yeuJZ59l+n | |||
YH/r6PzdJ4Q7yKrJX8qD6A60j4+biaU4MQ72KpsjhQNTTqF/HRwi0N54GDaknEwE | YH/r6PzdJ4Q7yKrJX8qD6A60j4+biaU4MQ72KpsjhQNTTqF/HRwi0N54GDaknEwE | |||
skipping to change at line 1048 ¶ | skipping to change at line 958 ¶ | |||
b24ueG1sMDAGCCsGAQUFBzAFhiRyc3luYzovL3Jwa2kuZXhhbXBsZS5uZXQvcmVw | b24ueG1sMDAGCCsGAQUFBzAFhiRyc3luYzovL3Jwa2kuZXhhbXBsZS5uZXQvcmVw | |||
b3NpdG9yeS8wHwYIKwYBBQUHAQcBAf8EEDAOMAwEAgABMAYDBADAAAIwIQYIKwYB | b3NpdG9yeS8wHwYIKwYBBQUHAQcBAf8EEDAOMAwEAgABMAYDBADAAAIwIQYIKwYB | |||
BQUHAQgBAf8EEjAQoA4wDDAKAgMA+/ACAwD78TANBgkqhkiG9w0BAQsFAAOCAQEA | BQUHAQgBAf8EEjAQoA4wDDAKAgMA+/ACAwD78TANBgkqhkiG9w0BAQsFAAOCAQEA | |||
arIrZWb22wFmP+hVjhdg3IsKHB6fQdMuUR0u2DyZTVvbL6C+HyGAH32pi5mR/QLX | arIrZWb22wFmP+hVjhdg3IsKHB6fQdMuUR0u2DyZTVvbL6C+HyGAH32pi5mR/QLX | |||
FAfdqALaB7r68tQTGLIW6bGljT+BqUPJmZcj56x3cBLJlltxwFatTloypjFt3cls | FAfdqALaB7r68tQTGLIW6bGljT+BqUPJmZcj56x3cBLJlltxwFatTloypjFt3cls | |||
xFCuuD9J2iBxc6odTKi6u0mhQjD+C9m4xkbe8XXWWx85IHm1s6rYbpGgiMWxBC80 | xFCuuD9J2iBxc6odTKi6u0mhQjD+C9m4xkbe8XXWWx85IHm1s6rYbpGgiMWxBC80 | |||
qqAzmBHGROWKUEvh00EYIYdiAvyFcrj7QtDiRJL5TDOySVd9pWJkerDzhqwE1IaZ | qqAzmBHGROWKUEvh00EYIYdiAvyFcrj7QtDiRJL5TDOySVd9pWJkerDzhqwE1IaZ | |||
rpHck+lkYTS7jTD++6v32HG62GdsmryOQUk3aU1rLb3kS8vzaGbrgHpGPid0Hd0x | rpHck+lkYTS7jTD++6v32HG62GdsmryOQUk3aU1rLb3kS8vzaGbrgHpGPid0Hd0x | |||
ZSl1AoIMpp5mZ7/h9aW5+A== | ZSl1AoIMpp5mZ7/h9aW5+A== | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | The CRL is issued by the CA.</t> | |||
The CRL issued by the CA.</t> | <sourcecode type=""><![CDATA[ | |||
<figure><artwork><![CDATA[ | ||||
-----BEGIN X509 CRL----- | -----BEGIN X509 CRL----- | |||
MIIBrTCBlgIBATANBgkqhkiG9w0BAQsFADAzMTEwLwYDVQQDEygzQUNFMkNFRjRG | MIIBrTCBlgIBATANBgkqhkiG9w0BAQsFADAzMTEwLwYDVQQDEygzQUNFMkNFRjRG | |||
QjIxQjdEMTFFM0UxODRFRkMxRTI5N0IzNzc4NjQyFw0yMzA5MjMxNTU1MzhaFw0y | QjIxQjdEMTFFM0UxODRFRkMxRTI5N0IzNzc4NjQyFw0yMzA5MjMxNTU1MzhaFw0y | |||
MzEwMjMxNTU1MzhaoC8wLTAfBgNVHSMEGDAWgBQ6zizvT7IbfRHj4YTvweKXs3eG | MzEwMjMxNTU1MzhaoC8wLTAfBgNVHSMEGDAWgBQ6zizvT7IbfRHj4YTvweKXs3eG | |||
QjAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQsFAAOCAQEACwCNzcAoqbMcUL1kBY65 | QjAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQsFAAOCAQEACwCNzcAoqbMcUL1kBY65 | |||
YhL95OnBqAcuc99pD4i9c1BmVOl7bXU3cJqLaOZ6Z8CmN0kBbcHyqlHBJ9oA/aYD | YhL95OnBqAcuc99pD4i9c1BmVOl7bXU3cJqLaOZ6Z8CmN0kBbcHyqlHBJ9oA/aYD | |||
ByhxsjzKk7jxtM2IlTpEvCEqvnGLSVihgS3h0NA+sgWqHGL3Rhcj6hVsi+j9GENc | ByhxsjzKk7jxtM2IlTpEvCEqvnGLSVihgS3h0NA+sgWqHGL3Rhcj6hVsi+j9GENc | |||
T6F9np1mxbI3i2xhgeDJG1pryvH0hWXh7yJiYS8ItNEaIIXDT3szK/J9wnPjukTR | T6F9np1mxbI3i2xhgeDJG1pryvH0hWXh7yJiYS8ItNEaIIXDT3szK/J9wnPjukTR | |||
5MITiK9P3TCFujawb3O7rIT5PPgkM6eiCdwDgt6gjmw6cow5+rMjNHSRa+GOviSd | 5MITiK9P3TCFujawb3O7rIT5PPgkM6eiCdwDgt6gjmw6cow5+rMjNHSRa+GOviSd | |||
gXljVDfJvF4tKHmw59Jc2aFnSGfX1/ITDNiNfXYpUYFOcsqxkYf8F0uO7AtbRmTF | gXljVDfJvF4tKHmw59Jc2aFnSGfX1/ITDNiNfXYpUYFOcsqxkYf8F0uO7AtbRmTF | |||
2w== | 2w== | |||
-----END X509 CRL----- | -----END X509 CRL----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | The end entity certificate is issued by the CA. This | |||
The end-entity certificate is issued by the CA. This | ||||
certificate grants signature authority for one IPv4 address block | certificate grants signature authority for one IPv4 address block | |||
(192.0.2.0/24). Signature authority for AS numbers is not needed | (192.0.2.0/24). Signature authority for AS numbers is not needed | |||
for geofeed data signatures, so no AS numbers are included in the | for geofeed data signatures, so no AS numbers are included in the | |||
end-entity certificate.</t> | end entity certificate.</t> | |||
<sourcecode type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
-----BEGIN CERTIFICATE----- | -----BEGIN CERTIFICATE----- | |||
MIIEVjCCAz6gAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZvAwDQYJKoZIhvcNAQEL | MIIEVjCCAz6gAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZvAwDQYJKoZIhvcNAQEL | |||
BQAwMzExMC8GA1UEAxMoM0FDRTJDRUY0RkIyMUI3RDExRTNFMTg0RUZDMUUyOTdC | BQAwMzExMC8GA1UEAxMoM0FDRTJDRUY0RkIyMUI3RDExRTNFMTg0RUZDMUUyOTdC | |||
Mzc3ODY0MjAeFw0yMzA5MjMxNTU1MzhaFw0yNDA3MTkxNTU1MzhaMDMxMTAvBgNV | Mzc3ODY0MjAeFw0yMzA5MjMxNTU1MzhaFw0yNDA3MTkxNTU1MzhaMDMxMTAvBgNV | |||
BAMTKDkxNDY1MkEzQkQ1MUMxNDQyNjAxOTg4ODlGNUM0NUFCRjA1M0ExODcwggEi | BAMTKDkxNDY1MkEzQkQ1MUMxNDQyNjAxOTg4ODlGNUM0NUFCRjA1M0ExODcwggEi | |||
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycTQrOb/qB2W3i3Ki8PhA/DEW | MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycTQrOb/qB2W3i3Ki8PhA/DEW | |||
yii2TgGo9pgCwO9lsIRI6Zb/k+aSiWWP9kSczlcQgtPCVwr62hTQZCIowBN0BL0c | yii2TgGo9pgCwO9lsIRI6Zb/k+aSiWWP9kSczlcQgtPCVwr62hTQZCIowBN0BL0c | |||
K0/5k1imJdi5qdM3nvKswM8CnoR11vB8pQFwruZmr5xphXRvE+mzuJVLgu2V1upm | K0/5k1imJdi5qdM3nvKswM8CnoR11vB8pQFwruZmr5xphXRvE+mzuJVLgu2V1upm | |||
BXuWloeymudh6WWJ+GDjwPXO3RiXBejBrOFNXhaFLe08y4DPfr/S/tXJOBm7QzQp | BXuWloeymudh6WWJ+GDjwPXO3RiXBejBrOFNXhaFLe08y4DPfr/S/tXJOBm7QzQp | |||
tmbPLYtGfprYu45liFFqqP94UeLpISfXd36AKGzqTFCcc3EW9l5UFE1MFLlnoEog | tmbPLYtGfprYu45liFFqqP94UeLpISfXd36AKGzqTFCcc3EW9l5UFE1MFLlnoEog | |||
skipping to change at line 1102 ¶ | skipping to change at line 1008 ¶ | |||
BzAChlByc3luYzovL3Jwa2kuZXhhbXBsZS5uZXQvcmVwb3NpdG9yeS8zQUNFMkNF | BzAChlByc3luYzovL3Jwa2kuZXhhbXBsZS5uZXQvcmVwb3NpdG9yeS8zQUNFMkNF | |||
RjRGQjIxQjdEMTFFM0UxODRFRkMxRTI5N0IzNzc4NjQyLmNlcjAfBggrBgEFBQcB | RjRGQjIxQjdEMTFFM0UxODRFRkMxRTI5N0IzNzc4NjQyLmNlcjAfBggrBgEFBQcB | |||
BwEB/wQQMA4wDAQCAAEwBgMEAMAAAjANBgkqhkiG9w0BAQsFAAOCAQEAlxt25FUe | BwEB/wQQMA4wDAQCAAEwBgMEAMAAAjANBgkqhkiG9w0BAQsFAAOCAQEAlxt25FUe | |||
e0+uCidTH+4p7At3u2ncgHcGTsag3UcoPjcE/I1JgQJRu9TiM4iNB1C7Lbdd131g | e0+uCidTH+4p7At3u2ncgHcGTsag3UcoPjcE/I1JgQJRu9TiM4iNB1C7Lbdd131g | |||
MdliL5GQ3P4QfKnfkuPR6S1V8suq6ZT1KQRyLJx+EPgDN2rb/iji0TOK6RKPNBdG | MdliL5GQ3P4QfKnfkuPR6S1V8suq6ZT1KQRyLJx+EPgDN2rb/iji0TOK6RKPNBdG | |||
lXVLjth4x/uu1O4V54GLEhDAPQC8IUm5intL/Hx1M1x2ptN/+j5HD3XUXd3x13yi | lXVLjth4x/uu1O4V54GLEhDAPQC8IUm5intL/Hx1M1x2ptN/+j5HD3XUXd3x13yi | |||
s6u758nbA7ND40JNhGG5JNGQgDchL4IQzIhylMNC+bKUiyyMHz3MqoVAklIB86IW | s6u758nbA7ND40JNhGG5JNGQgDchL4IQzIhylMNC+bKUiyyMHz3MqoVAklIB86IW | |||
Ucv72Mekq+i46T/w3RnaGn4x7RAJctVJWw3e5YMrFnQcuuaGOs0QcoxW7Bi4W7Eg | Ucv72Mekq+i46T/w3RnaGn4x7RAJctVJWw3e5YMrFnQcuuaGOs0QcoxW7Bi4W7Eg | |||
8fK1fd/f6fjZ9w== | 8fK1fd/f6fjZ9w== | |||
-----END CERTIFICATE----- | -----END CERTIFICATE----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | The end entity certificate is displayed below in detail. For | |||
The end-entity certificate is displayed below in detail. For | ||||
brevity, the other two certificates are not.</t> | brevity, the other two certificates are not.</t> | |||
<sourcecode type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
0 1110: SEQUENCE { | 0 1110: SEQUENCE { | |||
4 830: SEQUENCE { | 4 830: SEQUENCE { | |||
8 3: [0] { | 8 3: [0] { | |||
10 1: INTEGER 2 | 10 1: INTEGER 2 | |||
: } | : } | |||
13 20: INTEGER | 13 20: INTEGER | |||
: 27 AD 39 40 83 D7 F2 B5 B9 9B 86 70 C7 75 B2 B9 | : 27 AD 39 40 83 D7 F2 B5 B9 9B 86 70 C7 75 B2 B9 | |||
: 6E E1 66 F0 | : 6E E1 66 F0 | |||
35 13: SEQUENCE { | 35 13: SEQUENCE { | |||
37 9: OBJECT IDENTIFIER | 37 9: OBJECT IDENTIFIER | |||
skipping to change at line 1290 ¶ | skipping to change at line 1194 ¶ | |||
: EE 15 E7 81 8B 12 10 C0 3D 00 BC 21 49 B9 8A 7B | : EE 15 E7 81 8B 12 10 C0 3D 00 BC 21 49 B9 8A 7B | |||
: 4B FC 7C 75 33 5C 76 A6 D3 7F FA 3E 47 0F 75 D4 | : 4B FC 7C 75 33 5C 76 A6 D3 7F FA 3E 47 0F 75 D4 | |||
: 5D DD F1 D7 7C A2 B3 AB BB E7 C9 DB 03 B3 43 E3 | : 5D DD F1 D7 7C A2 B3 AB BB E7 C9 DB 03 B3 43 E3 | |||
: 42 4D 84 61 B9 24 D1 90 80 37 21 2F 82 10 CC 88 | : 42 4D 84 61 B9 24 D1 90 80 37 21 2F 82 10 CC 88 | |||
: 72 94 C3 42 F9 B2 94 8B 2C 8C 1F 3D CC AA 85 40 | : 72 94 C3 42 F9 B2 94 8B 2C 8C 1F 3D CC AA 85 40 | |||
: 92 52 01 F3 A2 16 51 CB FB D8 C7 A4 AB E8 B8 E9 | : 92 52 01 F3 A2 16 51 CB FB D8 C7 A4 AB E8 B8 E9 | |||
: 3F F0 DD 19 DA 1A 7E 31 ED 10 09 72 D5 49 5B 0D | : 3F F0 DD 19 DA 1A 7E 31 ED 10 09 72 D5 49 5B 0D | |||
: DE E5 83 2B 16 74 1C BA E6 86 3A CD 10 72 8C 56 | : DE E5 83 2B 16 74 1C BA E6 86 3A CD 10 72 8C 56 | |||
: EC 18 B8 5B B1 20 F1 F2 B5 7D DF DF E9 F8 D9 F7 | : EC 18 B8 5B B1 20 F1 F2 B5 7D DF DF E9 F8 D9 F7 | |||
: } | : } | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | To allow reproduction of the signature results, the end entity | |||
To allow reproduction of the signature results, the end-entity | ||||
private key is provided. For brevity, the other two private | private key is provided. For brevity, the other two private | |||
keys are not.</t> | keys are not.</t> | |||
<sourcecode type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
-----BEGIN RSA PRIVATE KEY----- | -----BEGIN RSA PRIVATE KEY----- | |||
MIIEpQIBAAKCAQEAsnE0Kzm/6gdlt4tyovD4QPwxFsootk4BqPaYAsDvZbCESOmW | MIIEpQIBAAKCAQEAsnE0Kzm/6gdlt4tyovD4QPwxFsootk4BqPaYAsDvZbCESOmW | |||
/5Pmkollj/ZEnM5XEILTwlcK+toU0GQiKMATdAS9HCtP+ZNYpiXYuanTN57yrMDP | /5Pmkollj/ZEnM5XEILTwlcK+toU0GQiKMATdAS9HCtP+ZNYpiXYuanTN57yrMDP | |||
Ap6EddbwfKUBcK7mZq+caYV0bxPps7iVS4LtldbqZgV7lpaHsprnYellifhg48D1 | Ap6EddbwfKUBcK7mZq+caYV0bxPps7iVS4LtldbqZgV7lpaHsprnYellifhg48D1 | |||
zt0YlwXowazhTV4WhS3tPMuAz36/0v7VyTgZu0M0KbZmzy2LRn6a2LuOZYhRaqj/ | zt0YlwXowazhTV4WhS3tPMuAz36/0v7VyTgZu0M0KbZmzy2LRn6a2LuOZYhRaqj/ | |||
eFHi6SEn13d+gChs6kxQnHNxFvZeVBRNTBS5Z6BKIKraC6CgAbdCJDhRingvxIHm | eFHi6SEn13d+gChs6kxQnHNxFvZeVBRNTBS5Z6BKIKraC6CgAbdCJDhRingvxIHm | |||
gXVi3uOvXXQva0H7ecOoOnJsRvmmA3SBAd+M6wIDAQABAoIBAQCyB0FeMuKm8bRo | gXVi3uOvXXQva0H7ecOoOnJsRvmmA3SBAd+M6wIDAQABAoIBAQCyB0FeMuKm8bRo | |||
18aKjFGSPEoZi53srIz5bvUgIi92TBLez7ZnzL6Iym26oJ+5th+lCHGO/dqlhXio | 18aKjFGSPEoZi53srIz5bvUgIi92TBLez7ZnzL6Iym26oJ+5th+lCHGO/dqlhXio | |||
pI50C5Yc9TFbblb/ECOsuCuuqKFjZ8CD3GVsHozXKJeMM+/o5YZXQrORj6UnwT0z | pI50C5Yc9TFbblb/ECOsuCuuqKFjZ8CD3GVsHozXKJeMM+/o5YZXQrORj6UnwT0z | |||
ol/JE5pIGUCIgsXX6tz9s5BP3lUAvVQHsv6+vEVKLxQ3wj/1vIL8O/CN036EV0GJ | ol/JE5pIGUCIgsXX6tz9s5BP3lUAvVQHsv6+vEVKLxQ3wj/1vIL8O/CN036EV0GJ | |||
skipping to change at line 1325 ¶ | skipping to change at line 1227 ¶ | |||
FGSli+3KxQhCNIJJfgWzq4bE0ioAMjdGbYXzIYQFAoGBAM6tuDJ36KDU+hIS6wu6 | FGSli+3KxQhCNIJJfgWzq4bE0ioAMjdGbYXzIYQFAoGBAM6tuDJ36KDU+hIS6wu6 | |||
O2TPSfZhF/zPo3pCWQ78/QDb+Zdw4IEiqoBA7F4NPVLg9Y/H8UTx9r/veqe7hPOo | O2TPSfZhF/zPo3pCWQ78/QDb+Zdw4IEiqoBA7F4NPVLg9Y/H8UTx9r/veqe7hPOo | |||
Ok7NpIzSmKTHkc5XfZ60Zn9OLFoKbaQ40a1kXoJdWEu2YROaUlAe9F6/Rog6PHYz | Ok7NpIzSmKTHkc5XfZ60Zn9OLFoKbaQ40a1kXoJdWEu2YROaUlAe9F6/Rog6PHYz | |||
vLE5qscRbu0XQhLkN+z7bg5bAoGBAKDsbDEb/dbqbyaAYpmwhH2sdRSkphg7Niwc | vLE5qscRbu0XQhLkN+z7bg5bAoGBAKDsbDEb/dbqbyaAYpmwhH2sdRSkphg7Niwc | |||
DNm9qWa1J6Zw1+M87I6Q8naRREuU1IAVqqWHVLr/ROBQ6NTJ1Uc5/qFeT2XXUgkf | DNm9qWa1J6Zw1+M87I6Q8naRREuU1IAVqqWHVLr/ROBQ6NTJ1Uc5/qFeT2XXUgkf | |||
taMKv61tuyjZK3sTmznMh0HfzUpWjEhWnCEuB+ZYVdmO52ZGw2A75RdrILL2+9Dc | taMKv61tuyjZK3sTmznMh0HfzUpWjEhWnCEuB+ZYVdmO52ZGw2A75RdrILL2+9Dc | |||
PvDXVubRAoGAdqXeSWoLxuzZXzl8rsaKrQsTYaXnOWaZieU1SL5vVe8nK257UDqZ | PvDXVubRAoGAdqXeSWoLxuzZXzl8rsaKrQsTYaXnOWaZieU1SL5vVe8nK257UDqZ | |||
E3ng2j5XPTUWli+aNGFEJGRoNtcQvO60O/sFZUhu52sqq9mWVYZNh1TB5aP8X+pV | E3ng2j5XPTUWli+aNGFEJGRoNtcQvO60O/sFZUhu52sqq9mWVYZNh1TB5aP8X+pV | |||
iFcZOLUvQEcN6PA+YQK5FU11rAI1M0Gm5RDnVnUl0L2xfCYxb7FzV6Y= | iFcZOLUvQEcN6PA+YQK5FU11rAI1M0Gm5RDnVnUl0L2xfCYxb7FzV6Y= | |||
-----END RSA PRIVATE KEY----- | -----END RSA PRIVATE KEY----- | |||
]]></artwork></figure> | ]]></sourcecode> | |||
<t> | ||||
<t> | The signing of "192.0.2.0/24,US,WA,Seattle," (terminated by CR and LF) | |||
Signing of "192.0.2.0/24,US,WA,Seattle," (terminated by CR and LF), | ||||
yields the following detached CMS signature.</t> | yields the following detached CMS signature.</t> | |||
<sourcecode><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
# RPKI Signature: 192.0.2.0/24 | # RPKI Signature: 192.0.2.0/24 | |||
# MIIGQAYJKoZIhvcNAQcCoIIGMTCCBi0CAQMxDTALBglghkgBZQMEAgEwDQYLKoZ | # MIIGQAYJKoZIhvcNAQcCoIIGMTCCBi0CAQMxDTALBglghkgBZQMEAgEwDQYLKoZ | |||
# IhvcNAQkQAS+gggRaMIIEVjCCAz6gAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZv | # IhvcNAQkQAS+gggRaMIIEVjCCAz6gAwIBAgIUJ605QIPX8rW5m4Zwx3WyuW7hZv | |||
# AwDQYJKoZIhvcNAQELBQAwMzExMC8GA1UEAxMoM0FDRTJDRUY0RkIyMUI3RDExR | # AwDQYJKoZIhvcNAQELBQAwMzExMC8GA1UEAxMoM0FDRTJDRUY0RkIyMUI3RDExR | |||
# TNFMTg0RUZDMUUyOTdCMzc3ODY0MjAeFw0yMzA5MjMxNTU1MzhaFw0yNDA3MTkx | # TNFMTg0RUZDMUUyOTdCMzc3ODY0MjAeFw0yMzA5MjMxNTU1MzhaFw0yNDA3MTkx | |||
# NTU1MzhaMDMxMTAvBgNVBAMTKDkxNDY1MkEzQkQ1MUMxNDQyNjAxOTg4ODlGNUM | # NTU1MzhaMDMxMTAvBgNVBAMTKDkxNDY1MkEzQkQ1MUMxNDQyNjAxOTg4ODlGNUM | |||
# 0NUFCRjA1M0ExODcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycT | # 0NUFCRjA1M0ExODcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycT | |||
# QrOb/qB2W3i3Ki8PhA/DEWyii2TgGo9pgCwO9lsIRI6Zb/k+aSiWWP9kSczlcQg | # QrOb/qB2W3i3Ki8PhA/DEWyii2TgGo9pgCwO9lsIRI6Zb/k+aSiWWP9kSczlcQg | |||
# tPCVwr62hTQZCIowBN0BL0cK0/5k1imJdi5qdM3nvKswM8CnoR11vB8pQFwruZm | # tPCVwr62hTQZCIowBN0BL0cK0/5k1imJdi5qdM3nvKswM8CnoR11vB8pQFwruZm | |||
# r5xphXRvE+mzuJVLgu2V1upmBXuWloeymudh6WWJ+GDjwPXO3RiXBejBrOFNXha | # r5xphXRvE+mzuJVLgu2V1upmBXuWloeymudh6WWJ+GDjwPXO3RiXBejBrOFNXha | |||
skipping to change at line 1368 ¶ | skipping to change at line 1268 ¶ | |||
# mAgEDgBSRRlKjvVHBRCYBmIifXEWr8FOhhzALBglghkgBZQMEAgGgazAaBgkqhk | # mAgEDgBSRRlKjvVHBRCYBmIifXEWr8FOhhzALBglghkgBZQMEAgGgazAaBgkqhk | |||
# iG9w0BCQMxDQYLKoZIhvcNAQkQAS8wHAYJKoZIhvcNAQkFMQ8XDTIzMDkyMzE1N | # iG9w0BCQMxDQYLKoZIhvcNAQkQAS8wHAYJKoZIhvcNAQkFMQ8XDTIzMDkyMzE1N | |||
# TUzOFowLwYJKoZIhvcNAQkEMSIEICvi8p5S8ckg2wTRhDBQzGijjyqs5T6I+4Vt | # TUzOFowLwYJKoZIhvcNAQkEMSIEICvi8p5S8ckg2wTRhDBQzGijjyqs5T6I+4Vt | |||
# BHypfcEWMA0GCSqGSIb3DQEBAQUABIIBAKZND7pKdVdfpB6zaJN89wTt+sXd0io | # BHypfcEWMA0GCSqGSIb3DQEBAQUABIIBAKZND7pKdVdfpB6zaJN89wTt+sXd0io | |||
# 0WULMc+o6gRJFt3wmKNW2nYPrDbocJ+Q/rDMGxbp4QetJ0MQtn1+AYAS8v5jPDO | # 0WULMc+o6gRJFt3wmKNW2nYPrDbocJ+Q/rDMGxbp4QetJ0MQtn1+AYAS8v5jPDO | |||
# 4a63U4/mJ2D3wSnQsDP0lUVknqRzfnS66HgHqiOVdHB0U+OnMEJuqHNTLx0dknb | # 4a63U4/mJ2D3wSnQsDP0lUVknqRzfnS66HgHqiOVdHB0U+OnMEJuqHNTLx0dknb | |||
# L3zwxyDJTHdo+dMB0U9xdcjwpsPM3xqg57EXj5EIQK5JbardXCjrsysAnEdktUY | # L3zwxyDJTHdo+dMB0U9xdcjwpsPM3xqg57EXj5EIQK5JbardXCjrsysAnEdktUY | |||
# oyayGNbbQelANYJcOmuHhSXArR+qqzvNP2MDRqqKEcpd65YW6FSnqlVMIBH2M3P | # oyayGNbbQelANYJcOmuHhSXArR+qqzvNP2MDRqqKEcpd65YW6FSnqlVMIBH2M3P | |||
# D2F0p3sdm4IeGAZWaERVB4AXO1PUFDNdhamr4XpIwqIoAig7xiLm7j8qu5Oc= | # D2F0p3sdm4IeGAZWaERVB4AXO1PUFDNdhamr4XpIwqIoAig7xiLm7j8qu5Oc= | |||
# End Signature: 192.0.2.0/24 | # End Signature: 192.0.2.0/24 | |||
]]></artwork></figure> | ]]></sourcecode> | |||
</section> | ||||
<section anchor="acks" numbered="false"> | ||||
<name>Acknowledgments</name> | ||||
<t>Thanks to <contact fullname="Rob Austein"/> for the CMS and detached | ||||
signature clue, <contact fullname="George Michaelson"/> for the first | ||||
and substantial external review, and <contact fullname="Erik Kline"/> | ||||
who was too shy to agree to coauthorship. Additionally, we express our | ||||
gratitude to early implementors, including <contact fullname="Menno | ||||
Schepers"/>, <contact fullname="Flavio Luciani"/>, <contact | ||||
fullname="Eric Dugas"/>, and <contact fullname="Kevin Pack"/>. Also, | ||||
thanks to the following geolocation providers who are consuming geofeeds | ||||
with this described solution: <contact fullname="Jonathan Kosgei | ||||
(ipdata.co)"/>, <contact fullname="Ben Dowling"/> (ipinfo.io), and | ||||
<contact fullname="Pol Nisenblat"/> (bigdatacloud.com). For an amazing | ||||
number of helpful reviews, we thank <contact fullname="Job Snijders"/>, | ||||
who also found an ASN.1 'inherit' issue, <contact fullname="Adrian | ||||
Farrel"/>, <contact fullname="Antonio Prado"/>, <contact | ||||
fullname="Francesca Palombini"/>, <contact fullname="Jean-Michel Combes | ||||
(INTDIR)"/>, <contact fullname="John Scudder"/>, <contact fullname="Kyle | ||||
Rose (SECDIR)"/>, <contact fullname="Martin Duke"/>, <contact | ||||
fullname="Mohamed Boucadair"/>, <contact fullname="Murray Kucherawy"/>, | ||||
<contact fullname="Paul Kyzivat (GENART)"/>, <contact fullname="Rob | ||||
Wilton"/>, <contact fullname="Roman Danyliw"/>, and <contact fullname="Tie | ||||
s de Kock"/>.</t> | ||||
</section> | ||||
</back> | ||||
</section> | <!--[rfced] | |||
</back> | Additionally, the expanded phrase "end-entity certificate" is used | |||
</rfc> | throughout Appendix A after this abbreviation is introduced. Would you | |||
like to change them to "EE certificate"? | ||||
--> | ||||
</rfc> | ||||
End of changes. 190 change blocks. | ||||
459 lines changed or deleted | 454 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |