| < draft-ietf-opsawg-finding-geofeeds-02.txt | draft-ietf-opsawg-finding-geofeeds-03.txt > | |||
|---|---|---|---|---|
| Network Working Group R. Bush | Network Working Group R. Bush | |||
| Internet-Draft IIJ & Arrcus | Internet-Draft IIJ & Arrcus | |||
| Intended status: Standards Track M. Candela | Intended status: Standards Track M. Candela | |||
| Expires: August 12, 2021 NTT | Expires: August 20, 2021 NTT | |||
| W. Kumari | W. Kumari | |||
| R. Housley | R. Housley | |||
| Vigil Security | Vigil Security | |||
| February 8, 2021 | February 16, 2021 | |||
| Finding and Using Geofeed Data | Finding and Using Geofeed Data | |||
| draft-ietf-opsawg-finding-geofeeds-02 | draft-ietf-opsawg-finding-geofeeds-03 | |||
| 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 August 12, 2021. | This Internet-Draft will expire on August 20, 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 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
| 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 . . . . . . . . . . . . . . . . . 6 | 5. Operational Considerations . . . . . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 9 | 9.2. Informative References . . . . . . . . . . . . . . . . . 8 | |||
| 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) [RFC4012] inetnum: class [INETNUM] to | Specification Language (RPSL) [RFC4012] inetnum: class [RFC2725] and | |||
| refer to geofeed data, and how to prudently use them. In all places | [INETNUM] to refer to geofeed data, and how to prudently use them. | |||
| inetnum: is used, inet6num: should also be assumed [INET6NUM]. | In all places inetnum: is used, inet6num: should also be assumed | |||
| [RFC4012] and [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 | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| skipping to change at page 5, line 19 ¶ | skipping to change at page 5, line 19 ¶ | |||
| 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 | |||
| the long run, for the purposes of this document, a self-signed root | the long run, for the purposes of this document, a self-signed root | |||
| trust anchor is used. | trust anchor is used. | |||
| Borrowing detached signatures from [RFC5485], after text file | Borrowing detached signatures from [RFC5485], after text file | |||
| canonicalization (Sec 2.2), the Cryptographic Message Syntax (CMS) | canonicalization (Sec 2.2), the Cryptographic Message Syntax (CMS) | |||
| [RFC3852] would be used to create a detached DER encoded signature | [RFC5652] would be used to create a detached DER encoded signature | |||
| which is then BASE64 encoded and line wrapped to 72 or fewer | which is then BASE64 encoded and line wrapped to 72 or fewer | |||
| characters. | characters. | |||
| Both the address ranges of the signing certificate and of the | Both the address ranges of the signing certificate and of the | |||
| inetnum: MUST cover all prefixes in the geofeed file; and the address | inetnum: MUST cover all prefixes in the geofeed file; and the address | |||
| range of the signing certificate must cover that of the inetnum:. | range of the signing certificate must cover that of the inetnum:. | |||
| 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 because | identical to or a subset of A. 'Address range' is used here because | |||
| inetnum: objects and RPKI certificates need not align on CIDR prefix | inetnum: objects and RPKI certificates need not align on CIDR prefix | |||
| boundaries, while those of geofeed lines must. | boundaries, while those of geofeed lines must. | |||
| As the signer would need to specify the covered RPKI resources | As the signer would need to specify the covered RPKI resources | |||
| relevant to the signature, the RPKI certificate covering the inetnum: | relevant to the signature, the RPKI certificate covering the inetnum: | |||
| object's address range would be included in the [RFC3852] CMS | object's address range would be included in the [RFC5652] CMS | |||
| SignedData certificates field. | SignedData certificates field. | |||
| Identifying the private key associated with the certificate, and | Identifying the private key associated with the certificate, and | |||
| getting the department with the HSM to sign the CMS blob is left as | getting the department with the HSM to sign the CMS blob is left as | |||
| an exercise for the implementor. On the other hand, verifying the | an exercise for the implementor. On the other hand, verifying the | |||
| signature requires no complexity; the certificate, which can be | signature requires no complexity; the certificate, which can be | |||
| validated in the public RPKI, has the needed public key. | validated in the public RPKI, has the needed public key. | |||
| Until [RFC8805] is updated to formally define such an appendix, it | Until [RFC8805] is updated to formally define such an appendix, it | |||
| MUST be 'hidden' as a series of "#" comments at the end of the | MUST be 'hidden' as a series of "#" comments at the end of the | |||
| skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 24 ¶ | |||
| To create the needed inetnum: objects, an operator wishing to | To create the needed inetnum: objects, an operator wishing to | |||
| register the location of their geofeed file needs to coordinate with | register the location of their geofeed file needs to coordinate with | |||
| their RIR/NIR and/or any provider LIR which has assigned prefixes to | their RIR/NIR and/or any provider LIR which has assigned prefixes to | |||
| them. RIRs/NIRs provide means for assignees to create and maintain | them. RIRs/NIRs provide means for assignees to create and maintain | |||
| inetnum: objects. They also provide means of [sub-]assigning IP | inetnum: objects. They also provide means of [sub-]assigning IP | |||
| address resources and allowing the assignee to create whois data, | address resources and allowing the assignee to create whois data, | |||
| including inetnum: objects, and thereby referring to geofeed files. | including inetnum: objects, and thereby referring to geofeed files. | |||
| The geofeed files SHOULD be published over and fetched using https | The geofeed files SHOULD be published over and fetched using https | |||
| [RFC2818]. | [RFC8446]. | |||
| When using data from a geofeed file, one MUST ignore data outside of | When using data from a geofeed file, one MUST ignore data outside of | |||
| the referring inetnum: object's inetnum: attribute address range. | the referring inetnum: object's inetnum: attribute address range. | |||
| Iff the geofeed file is not signed per Section 4, then multiple | Iff the geofeed file is not signed per Section 4, then multiple | |||
| inetnum: objects MAY refer to the same geofeed file, and the consumer | inetnum: objects MAY refer to the same geofeed file, and the consumer | |||
| MUST use only geofeed lines where the prefix is covered by the | MUST use only geofeed lines where the prefix is covered by the | |||
| address range of the inetnum: object they have followed. | address range of the inetnum: object they have followed. | |||
| To minimize the load on RIR whois [RFC3912] services, use of the | To minimize the load on RIR whois [RFC3912] services, use of the | |||
| skipping to change at page 7, line 39 ¶ | skipping to change at page 7, line 39 ¶ | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| IANA is asked to register object identifiers for one content type in | IANA is asked to register object identifiers for one content type in | |||
| the "SMI Security for S/MIME CMS Content Type | the "SMI Security for S/MIME CMS Content Type | |||
| (1.2.840.113549.1.9.16.1)" registry as follows: | (1.2.840.113549.1.9.16.1)" registry as follows: | |||
| 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. Acknowledgments | |||
| 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, Job Snijders who provided a CLI | Schepers, Flavio Luciani, Eric Dugas, Job Snijders who provided a CLI | |||
| demo, and Kevin Pack. Also to geolocation providers that are | demo, and Kevin Pack. Also to geolocation providers that are | |||
| consuming geofeeds with this described solution, Jonathan Kosgei | consuming geofeeds with this described solution, Jonathan Kosgei | |||
| (ipdata.co), and Ben Dowling (ipinfo.io). For reviews, we thank | (ipdata.co), Ben Dowling (ipinfo.io), and Pol Nisenblat | |||
| Antonio Prado. | (bigdatacloud.com). For reviews, we thank Adrian Farrel Antonio | |||
| Prado, and George Michaelson, the document shepherd. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [INET6NUM] | ||||
| RIPE, "Description of the INET6NUM Object", | ||||
| <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>. | ||||
| [INETNUM] RIPE, "Description of the INETNUM Object", | ||||
| <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>. | ||||
| [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>. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2725] Villamizar, C., Alaettinoglu, C., Meyer, D., and S. | |||
| DOI 10.17487/RFC2818, May 2000, | Murphy, "Routing Policy System Security", RFC 2725, | |||
| <https://www.rfc-editor.org/info/rfc2818>. | DOI 10.17487/RFC2725, December 1999, | |||
| <https://www.rfc-editor.org/info/rfc2725>. | ||||
| [RFC3852] Housley, R., "Cryptographic Message Syntax (CMS)", | ||||
| RFC 3852, DOI 10.17487/RFC3852, July 2004, | ||||
| <https://www.rfc-editor.org/info/rfc3852>. | ||||
| [RFC4012] Blunk, L., Damas, J., Parent, F., and A. Robachevsky, | [RFC4012] Blunk, L., Damas, J., Parent, F., and A. Robachevsky, | |||
| "Routing Policy Specification Language next generation | "Routing Policy Specification Language next generation | |||
| (RPSLng)", RFC 4012, DOI 10.17487/RFC4012, March 2005, | (RPSLng)", RFC 4012, DOI 10.17487/RFC4012, March 2005, | |||
| <https://www.rfc-editor.org/info/rfc4012>. | <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>. | |||
| [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | ||||
| RFC 5652, DOI 10.17487/RFC5652, September 2009, | ||||
| <https://www.rfc-editor.org/info/rfc5652>. | ||||
| [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>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | ||||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | ||||
| <https://www.rfc-editor.org/info/rfc8446>. | ||||
| [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 | |||
| Feeds", RFC 8805, DOI 10.17487/RFC8805, August 2020, | Feeds", RFC 8805, DOI 10.17487/RFC8805, August 2020, | |||
| <https://www.rfc-editor.org/info/rfc8805>. | <https://www.rfc-editor.org/info/rfc8805>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [geofeed-finder] | [geofeed-finder] | |||
| Massimo Candela, "geofeed-finder", | Massimo Candela, "geofeed-finder", | |||
| <https://github.com/massimocandela/geofeed-finder>. | <https://github.com/massimocandela/geofeed-finder>. | |||
| [I-D.michaelson-rpki-rta] | [I-D.michaelson-rpki-rta] | |||
| Michaelson, G., Huston, G., Harrison, T., Bruijnzeels, T., | Michaelson, G., Huston, G., Harrison, T., Bruijnzeels, T., | |||
| and M. Hoffmann, "A profile for Resource Tagged | and M. Hoffmann, "A profile for Resource Tagged | |||
| Attestations (RTAs)", draft-michaelson-rpki-rta-02 (work | Attestations (RTAs)", draft-michaelson-rpki-rta-02 (work | |||
| in progress), November 2020. | in progress), November 2020. | |||
| [INET6NUM] | ||||
| RIPE, "Description of the INET6NUM Object", | ||||
| <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>. | ||||
| [INETNUM] RIPE, "Description of the INETNUM Object", | ||||
| <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>. | ||||
| [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | [RFC0959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |||
| STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | STD 9, RFC 959, DOI 10.17487/RFC0959, October 1985, | |||
| <https://www.rfc-editor.org/info/rfc959>. | <https://www.rfc-editor.org/info/rfc959>. | |||
| [RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, | [RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912, | |||
| DOI 10.17487/RFC3912, September 2004, | DOI 10.17487/RFC3912, September 2004, | |||
| <https://www.rfc-editor.org/info/rfc3912>. | <https://www.rfc-editor.org/info/rfc3912>. | |||
| [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | |||
| End of changes. 17 change blocks. | ||||
| 35 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/ | ||||