| < draft-ietf-opsawg-finding-geofeeds-01.txt | draft-ietf-opsawg-finding-geofeeds-02.txt > | |||
|---|---|---|---|---|
| Network Working Group M. Candela | Network Working Group R. Bush | |||
| Internet-Draft NTT | Internet-Draft IIJ & Arrcus | |||
| Intended status: Standards Track R. Bush | Intended status: Standards Track M. Candela | |||
| Expires: July 23, 2021 IIJ & Arrcus | Expires: August 12, 2021 NTT | |||
| W. Kumari | W. Kumari | |||
| R. Housley | R. Housley | |||
| Vigil Security | Vigil Security | |||
| January 19, 2021 | February 8, 2021 | |||
| Finding and Using Geofeed Data | Finding and Using Geofeed Data | |||
| draft-ietf-opsawg-finding-geofeeds-01 | draft-ietf-opsawg-finding-geofeeds-02 | |||
| Abstract | Abstract | |||
| This document describes how to find and authenticate geofeed data. | This document describes how to find and authenticate geofeed data. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 23, 2021. | This Internet-Draft will expire on August 12, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 14 ¶ | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Geofeed Files . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Geofeed Files . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. inetnum: Class . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. inetnum: Class . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Authenticating Geofeed Data . . . . . . . . . . . . . . . . . 4 | 4. Authenticating Geofeed Data . . . . . . . . . . . . . . . . . 4 | |||
| 5. Operational Considerations . . . . . . . . . . . . . . . . . 5 | 5. Operational Considerations . . . . . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 8 | 9.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 9 | Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 1. Introduction | 1. Introduction | |||
| Providers of Internet content and other services may wish to | Providers of Internet content and other services may wish to | |||
| customize those services based on the geographic location of the user | customize those services based on the geographic location of the user | |||
| of the service. This is often done using the source IP address used | of the service. This is often done using the source IP address used | |||
| to contact the service. Also, infrastructure and other services | to contact the service. Also, infrastructure and other services | |||
| might wish to publish the locale of their services. [RFC8805] | might wish to publish the locale of their services. [RFC8805] | |||
| defines geofeed, a syntax to associate geographic locales with IP | defines geofeed, a syntax to associate geographic locales with IP | |||
| addresses. But it does not specify how to find the relevant geofeed | addresses. But it does not specify how to find the relevant geofeed | |||
| data given an IP address. | data given an IP address. | |||
| This document specifies how to augment the Routing Policy | This document specifies how to augment the Routing Policy | |||
| Specification Language (RPSL) [RFC2622] inetnum: class [INETNUM] to | Specification Language (RPSL) [RFC4012] inetnum: class [INETNUM] to | |||
| refer to geofeed data, and how to prudently use them. In all places | refer to geofeed data, and how to prudently use them. In all places | |||
| inetnum: is used, inet6num: should also be assumed [INET6NUM]. | inetnum: is used, inet6num: should also be assumed [INET6NUM]. | |||
| An optional, but utterly awesome, means for authenticating geofeed | An optional, but utterly awesome, means for authenticating geofeed | |||
| data is also defined. | data is also defined. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| skipping to change at page 3, line 23 ¶ | skipping to change at page 3, line 23 ¶ | |||
| Section 3 this document specifies how to find the relevant geofeed | Section 3 this document specifies how to find the relevant geofeed | |||
| file given an IP address. | file given an IP address. | |||
| Geofeed data for large providers with significant horizontal scale | Geofeed data for large providers with significant horizontal scale | |||
| and high granularity can be quite large. The size of a file can be | and high granularity can be quite large. The size of a file can be | |||
| even larger if an unsigned geofeed file combines data for many | even larger if an unsigned geofeed file combines data for many | |||
| prefixes, as may be likely if the location data are maintained by a | prefixes, as may be likely if the location data are maintained by a | |||
| different department than address management, dual IPv4/IPv6 spaces | different department than address management, dual IPv4/IPv6 spaces | |||
| are represented, etc. | are represented, etc. | |||
| [RFC8805] geofeed data may reveal the approximate location of an IP | ||||
| address, which might in turn reveal the approximate location of an | ||||
| individual user. Unfortunately, [RFC8805] provides no privacy | ||||
| guidance on avoiding or ameliorating possible damage due to this | ||||
| exposure of the user. In publishing pointers to geofeed files as | ||||
| described in this document the operator should be aware of this | ||||
| exposure in geofeed data and be cautious. All the privacy | ||||
| considerations of [RFC8805] Section 4 apply to this document. | ||||
| This document also suggests optional data for geofeed files to | This document also suggests optional data for geofeed files to | |||
| provide stronger authenticity to the data. | provide stronger authenticity to the data. | |||
| 3. inetnum: Class | 3. inetnum: Class | |||
| RPSL, [RFC2622], as used by the Regional Internet Registries (RIRs), | RPSL, [RFC4012], as used by the Regional Internet Registries (RIRs), | |||
| has been augmented with the inetnum: [INETNUM] and the inet6num: | has been augmented with the inetnum: [INETNUM] and the inet6num: | |||
| [INET6NUM] classes; each of which describes an IP address range and | [INET6NUM] classes; each of which describes an IP address range and | |||
| its attributes. | its attributes. | |||
| Ideally, RPSL would be augmented to define a new RPSL geofeed: | Ideally, RPSL would be augmented to define a new RPSL geofeed: | |||
| attribute in the inetnum: class. Until such time, this document | attribute in the inetnum: class. Until such time, this document | |||
| defines the syntax of a Geofeed remarks: attribute which contains an | defines the syntax of a Geofeed remarks: attribute which contains an | |||
| HTTPS URL of a geofeed file. The format MUST be as in this example, | HTTPS URL of a geofeed file. The format MUST be as in this example, | |||
| "remarks: Geofeed " followed by a URL which will vary. | "remarks: Geofeed " followed by a URL which will vary. | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 50 ¶ | |||
| "Comment" attribute must be treated as "remarks". | "Comment" attribute must be treated as "remarks". | |||
| 4. Authenticating Geofeed Data | 4. Authenticating Geofeed Data | |||
| The question arises of whether a particular geofeed data set is | The question arises of whether a particular geofeed data set is | |||
| valid, i.e. authorized by the 'owner' of the IP address space and is | valid, i.e. authorized by the 'owner' of the IP address space and is | |||
| authoritative in some sense. The inetnum: which points to the | authoritative in some sense. The inetnum: which points to the | |||
| geofeed file provides some assurance. Unfortunately the RPSL in many | geofeed file provides some assurance. Unfortunately the RPSL in many | |||
| repositories is weakly authenticated at best. An approach where RPSL | repositories is weakly authenticated at best. An approach where RPSL | |||
| was signed a la [RFC7909] would be good, except it would have to be | was signed a la [RFC7909] would be good, except it would have to be | |||
| deployed by all RPSL registries, and there are a fair number of them. | deployed by all RPSL registries, and there is a fair number of them. | |||
| An optional authenticator MAY be appended to a geofeed file. It | An optional authenticator MAY be appended to a geofeed file. It | |||
| would be essentially a digest of the main body of the file signed by | would be essentially a digest of the main body of the file signed by | |||
| the private key of the relevant RPKI certificate for the covering | the private key of the relevant RPKI certificate for the covering | |||
| address range. One needs a format that bundles the relevant RPKI | address range. One needs a format that bundles the relevant RPKI | |||
| certificate with the signature and the digest of the geofeed text. | certificate with the signature and the digest of the geofeed text. | |||
| [I-D.michaelson-rpki-rta] describes a Cryptographic Message Syntax | [I-D.michaelson-rpki-rta] describes a Cryptographic Message Syntax | |||
| (CMS) profile for a general purpose Resource Tagged Attestation (RTA) | (CMS) profile for a general purpose Resource Tagged Attestation (RTA) | |||
| based on the RPKI. While this is expected to become applicable in | based on the RPKI. While this is expected to become applicable in | |||
| skipping to change at page 6, line 51 ¶ | skipping to change at page 7, line 20 ¶ | |||
| use other sources to cross-validate the data. All of the Security | use other sources to cross-validate the data. All of the Security | |||
| Considerations of [RFC8805] apply here as well. | Considerations of [RFC8805] apply here as well. | |||
| As mentioned in Section 4, many RPSL repositories have weak if any | As mentioned in Section 4, many RPSL repositories have weak if any | |||
| authentication. This would allow spoofing of inetnum: objects | authentication. This would allow spoofing of inetnum: objects | |||
| pointing to malicious geofeed files. Section 4 suggests an | pointing to malicious geofeed files. Section 4 suggests an | |||
| unfortunately complex method for stronger authentication based on the | unfortunately complex method for stronger authentication based on the | |||
| RPKI. | RPKI. | |||
| If an inetnum: for a wide prefix (e.g. a /16) points to an RPKI- | If an inetnum: for a wide prefix (e.g. a /16) points to an RPKI- | |||
| signed geofeed file, a customer or attacker could publish a unsigned | signed geofeed file, a customer or attacker could publish an unsigned | |||
| equal or narrower (e.g. a /24) inetnum: in a whois registry which has | equal or narrower (e.g. a /24) inetnum: in a whois registry which has | |||
| weak authorization. | weak authorization. | |||
| The RPSL providers have had to throttle fetching from their servers | The RPSL providers have had to throttle fetching from their servers | |||
| due to too-frequent queries. Usually they throttle by the querying | due to too-frequent queries. Usually they throttle by the querying | |||
| IP address or block. Similar defenses will likely need to be | IP address or block. Similar defenses will likely need to be | |||
| deployed by geofeed file servers. | deployed by geofeed file servers. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| skipping to change at page 7, line 28 ¶ | skipping to change at page 7, line 45 ¶ | |||
| Description OID Specification | Description OID Specification | |||
| ----------------------------------------------------------------- | ----------------------------------------------------------------- | |||
| id-ct-geofeedCSVwithCRLF 1.2.840.113549.1.9.16.1.47 [RFC-TBD] | id-ct-geofeedCSVwithCRLF 1.2.840.113549.1.9.16.1.47 [RFC-TBD] | |||
| 8. Acknowledgements | 8. Acknowledgements | |||
| Thanks to Rob Austein for CMS and detached signature clue. George | Thanks to Rob Austein for CMS and detached signature clue. George | |||
| Michaelson for the first, and a substantial, external review. Erik | Michaelson for the first, and a substantial, external review. Erik | |||
| Kline who was too shy to agree to co-authorship. Additionally, we | Kline who was too shy to agree to co-authorship. Additionally, we | |||
| express our gratitude to early implementors, including Menno | express our gratitude to early implementors, including Menno | |||
| Schepers, Flavio Luciani, Eric Dugas, and Kevin Pack. Also to | Schepers, Flavio Luciani, Eric Dugas, Job Snijders who provided a CLI | |||
| geolocation providers that are consuming geofeeds with this described | demo, and Kevin Pack. Also to geolocation providers that are | |||
| solution, Jonathan Kosgei (ipdata.co), and Ben Dowling (ipinfo.io). | consuming geofeeds with this described solution, Jonathan Kosgei | |||
| (ipdata.co), and Ben Dowling (ipinfo.io). For reviews, we thank | ||||
| Antonio Prado. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [INET6NUM] | [INET6NUM] | |||
| RIPE, "Description of the INET6NUM Object", | RIPE, "Description of the INET6NUM Object", | |||
| <https://www.ripe.net/manage-ips-and- | <https://www.ripe.net/manage-ips-and- | |||
| asns/db/support/documentation/ripe-database-documentation/ | asns/db/support/documentation/ripe-database-documentation/ | |||
| rpsl-object-types/4-2-descriptions-of-primary- | rpsl-object-types/4-2-descriptions-of-primary- | |||
| skipping to change at page 8, line 10 ¶ | skipping to change at page 8, line 27 ¶ | |||
| <https://www.ripe.net/manage-ips-and- | <https://www.ripe.net/manage-ips-and- | |||
| asns/db/support/documentation/ripe-database-documentation/ | asns/db/support/documentation/ripe-database-documentation/ | |||
| rpsl-object-types/4-2-descriptions-of-primary- | rpsl-object-types/4-2-descriptions-of-primary- | |||
| objects/4-2-4-description-of-the-inetnum-object>. | objects/4-2-4-description-of-the-inetnum-object>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2622] Alaettinoglu, C., Villamizar, C., Gerich, E., Kessens, D., | ||||
| Meyer, D., Bates, T., Karrenberg, D., and M. Terpstra, | ||||
| "Routing Policy Specification Language (RPSL)", RFC 2622, | ||||
| DOI 10.17487/RFC2622, June 1999, | ||||
| <https://www.rfc-editor.org/info/rfc2622>. | ||||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
| DOI 10.17487/RFC2818, May 2000, | DOI 10.17487/RFC2818, May 2000, | |||
| <https://www.rfc-editor.org/info/rfc2818>. | <https://www.rfc-editor.org/info/rfc2818>. | |||
| [RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)", | [RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)", | |||
| RFC 3852, DOI 10.17487/RFC3852, July 2004, | RFC 3852, DOI 10.17487/RFC3852, July 2004, | |||
| <https://www.rfc-editor.org/info/rfc3852>. | <https://www.rfc-editor.org/info/rfc3852>. | |||
| [RFC4012] Blunk, L., Damas, J., Parent, F., and A. Robachevsky, | ||||
| "Routing Policy Specification Language next generation | ||||
| (RPSLng)", RFC 4012, DOI 10.17487/RFC4012, March 2005, | ||||
| <https://www.rfc-editor.org/info/rfc4012>. | ||||
| [RFC5485] Housley, R., "Digital Signatures on Internet-Draft | [RFC5485] Housley, R., "Digital Signatures on Internet-Draft | |||
| Documents", RFC 5485, DOI 10.17487/RFC5485, March 2009, | Documents", RFC 5485, DOI 10.17487/RFC5485, March 2009, | |||
| <https://www.rfc-editor.org/info/rfc5485>. | <https://www.rfc-editor.org/info/rfc5485>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8805] Kline, E., Duleba, K., Szamonek, Z., Moser, S., and W. | [RFC8805] Kline, E., Duleba, K., Szamonek, Z., Moser, S., and W. | |||
| Kumari, "A Format for Self-Published IP Geolocation | Kumari, "A Format for Self-Published IP Geolocation | |||
| skipping to change at page 18, line 46 ¶ | skipping to change at page 18, line 46 ¶ | |||
| # 0GCSqGSIb3DQEBAQUABIIBAHUrA4PaJG42BD3hpF8U0usnV3Dg5NQh97SfyKTk7 | # 0GCSqGSIb3DQEBAQUABIIBAHUrA4PaJG42BD3hpF8U0usnV3Dg5NQh97SfyKTk7 | |||
| # YHhhwu/936gkmAew8ODRTCddMvMObWkjj7/XeR+WKffaTF1EAdZ1L6REV+GlV91 | # YHhhwu/936gkmAew8ODRTCddMvMObWkjj7/XeR+WKffaTF1EAdZ1L6REV+GlV91 | |||
| # cYnFkT9ldn4wHQnNNncfAehk5PClYUUQ0gqjdJT1hdaolT83b3ttekyYIiwPmHE | # cYnFkT9ldn4wHQnNNncfAehk5PClYUUQ0gqjdJT1hdaolT83b3ttekyYIiwPmHE | |||
| # xRaNkSvKenlNqcriaaf3rbQy9dc2d1KxrL2429n134ICqjKeRnHkXXrCWDmyv/3 | # xRaNkSvKenlNqcriaaf3rbQy9dc2d1KxrL2429n134ICqjKeRnHkXXrCWDmyv/3 | |||
| # imwYkXpiMxw44EZqDjl36MiWsRDLdgoijBBcGbibwyAfGeR46k5raZCGvxG+4xa | # imwYkXpiMxw44EZqDjl36MiWsRDLdgoijBBcGbibwyAfGeR46k5raZCGvxG+4xa | |||
| # O8PDTxTfIYwAnBjRBKAqAZ7yX5xHfm58jUXsZJ7Ileq1S7G6Kk= | # O8PDTxTfIYwAnBjRBKAqAZ7yX5xHfm58jUXsZJ7Ileq1S7G6Kk= | |||
| # End Signature: 192.0.2.0/24 | # End Signature: 192.0.2.0/24 | |||
| Authors' Addresses | Authors' Addresses | |||
| Massimo Candela | ||||
| NTT | ||||
| Siriusdreef 70-72 | ||||
| Hoofddorp 2132 WT | ||||
| Netherlands | ||||
| Email: massimo@ntt.net | ||||
| Randy Bush | Randy Bush | |||
| IIJ & Arrcus | IIJ & Arrcus | |||
| 5147 Crystal Springs | 5147 Crystal Springs | |||
| Bainbridge Island, Washington 98110 | Bainbridge Island, Washington 98110 | |||
| United States of America | United States of America | |||
| Email: randy@psg.com | Email: randy@psg.com | |||
| Massimo Candela | ||||
| NTT | ||||
| Siriusdreef 70-72 | ||||
| Hoofddorp 2132 WT | ||||
| Netherlands | ||||
| Email: massimo@ntt.net | ||||
| Warren Kumari | Warren Kumari | |||
| 1600 Amphitheatre Parkway | 1600 Amphitheatre Parkway | |||
| Mountain View, CA 94043 | Mountain View, CA 94043 | |||
| US | US | |||
| Email: warren@kumari.net | Email: warren@kumari.net | |||
| Russ Housley | Russ Housley | |||
| End of changes. 16 change blocks. | ||||
| 32 lines changed or deleted | 42 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||