Benjamin Kaduk has entered the following ballot position for draft-ietf-opsawg-finding-geofeeds-12: Discuss
When responding, please keep the subject line intact and reply to all email addresses included in the To and CC lines. (Feel free to cut this introductory paragraph, however.) Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html for more information about DISCUSS and COMMENT positions. The document, along with other ballot positions, can be found here: https://datatracker.ietf.org/doc/draft-ietf-opsawg-finding-geofeeds/ ---------------------------------------------------------------------- DISCUSS: ---------------------------------------------------------------------- Roman and Russ did the heavy lifting already, but I think I have a bit more fiddling to do regarding the validation procedures (just getting them internally consistent, I think)... (1) Here: As the signer specifies the covered RPKI resources relevant to the signature, the RPKI certificate covering the inetnum: object's address range is included in the [RFC5652] CMS SignedData certificates field. we say that the signing certificate is included in the SignedData certificates field. That makes sense, as SignedData is a SEQUENCE including "certificates [0] IMPLICIT CertificateSet OPTIONAL", and CertificateSet, as a SET OF CertificateChoices, allows for the literal "Certificate" branch of CertificateChoices. But later on, we say that: 1. Obtain the signer's certificate from an RPKI Repository. The certificate SubjectKeyIdentifier extension [RFC5280] MUST match the SubjectKeyIdentifier in the CMS SignerInfo SignerIdentifier [RFC5286]. If the key identifiers do not match, then validation MUST fail. which entails fetching the certificate from a directory, based on the SubjectKeyIdentifier. Why do we need to obtain the certificate twice in two different ways? (2) We are careful to note that: The bracketing "# RPKI Signature:" and "# End Signature:" MUST be present exactly as shown. How do we construct the bits (CIDR block?) that come after the quoted strings? Do they only matter for matching start/end, or are we supposed to check them in the validation procedure? ---------------------------------------------------------------------- COMMENT: ---------------------------------------------------------------------- Thanks to Kyle Rose for the secdir review, and all who participated in the subsequent discussion. Publishing this document on the stanards-track does make one wonder whether RFC 8805 should be adopted at least into the IETF stream and possibly to the standards-track as well... My colleagues have done a great job commenting on aspects that I also was unsure about; I will try (and no doubt fail) to deduplicate. The length of my comments notwithstanding, thank you for putting together this document: it seems useful without trying to boil any oceans, and I hope my comments can help improve it. Section 1 This document specifies how to augment the Routing Policy Specification Language (RPSL) [RFC2622] inetnum: class to refer Interestingly, I don't see "inetnum" at all in RFC 2622 (but the treatment in RFC 2725 is helpful to some extent). Should we be referencing 2725 (or something else) in addition to 2622? Section 3 The URL's use of the web PKI can not provide authentication of IP address space ownership. It is only used to authenticate a pointer to the geofeed file, [...] I'm a little confused by the use of the phrase "authenticate a pointer to the geofeed file". My understanding is that the "pointer to the geofeed file" is the URL itself, i.e., it is a pointer from the RPSL stanza to the geofeed file, and that dereferencing the URL retrieves the geofeed file itself (i.e., not a pointer). In particular, the URL (and any Web PKI usage therein) does not do anything to authenticate the RPLS stanza in which the URL appears. IIUC, it would be okay to just drop that bit and say "It is only used to authenticate the domain name in the URL, and provide confidentiality and integrity for the geofeed file in transit". Am I missing something? If a geofeed CSV file describes multiple disjoint ranges of IP address space, there are likely to be geofeed references from multiple inetnum: objects. We might note that such files with geofeed references from multiple inetnum: objects are not compatible with our signing procedure (right?) and thus vaguely discouraged. Section 4 address range. One needs a format that bundles the relevant RPKI certificate with the signature and the digest of the geofeed text. If the signature is distributed alongside the file being signed, why is it necessary to bundle the digest of the file being signed with the signature? This just invites security-relevant implementation bugs where the validator just accepts the precomputed digest and does not validate that the contents of the geofeed file actually have that digest. (There is, however, value in the CMS SignedData including the digest *algorithms* used in signatures. I don't know if that was the intent here.) text. Trailing space characters MUST NOT appear on a line of text. That is, the space or tab characters must not be followed by the <CRLF> sequence. [...] Is the restriction on Unicode characters of category "space separator" ("space characters") or the two listed characters? (Why just those two, and not form feed as well?) The address range of the signing certificate MUST cover all prefixes in the geofeed file it signs; and therefore must be covered by the range of the inetnum:. Maybe I'm just confused about what "covered by he range of the inetnum:" means, but I only see (at least so far) requirements that the signing cert cover all addresses in the file, and that we fetch from the most-specific inetnum: object with a geofeed reference. Can't I still sign with a cert that covers a broader range of addresses than the intenum: object used to fetch? Identifying the private key associated with the certificate, and getting the department with the Hardware Security Module (HSM) to sign the CMS blob is left as an exercise for the implementor. On the I thought there was some previous discussion of this but now I can't find it: I assume that a HSM is not mandatory for holding the RPKI certificate's private key. In that case, I'd consider "getting the department that controls the private key (which might be trapped in a Hardware Security Module, HSM)". 1. Obtain the signer's certificate from an RPKI Repository. The certificate SubjectKeyIdentifier extension [RFC5280] MUST match the SubjectKeyIdentifier in the CMS SignerInfo SignerIdentifier [RFC5286]. If the key identifiers do not match, then validation MUST fail. We want RFC 5652 again, here (5286 is IP Fast Reroute: Loop-Free Alternates, which is of no relevance to this document). 4. Verify that the IP Address Delegation certificate extension [RFC3779] covers the address range of the geofeed file. If the address range is not covered, then validation MUST fail. "address range of the geofeed file" is probably under-specified, since the file could in theory include multiple disjoint ranges. I assume we want to say something like "covers all the addresses and/or address ranges in the geofeed file" and make the grammar in the last sentence match. 5. Validation of the signing certificate MUST ensure that it is part of the current manifest and that the resources are covered by the RPKI certificate. Is "the signing certificate" different from "the RPKI certificate"? Also, I suggest clarifying what "the resources" are that are covered. Also^2, "the current manifest" would be a great place to put in a reference to the relevant document(s) Section 5 If and only if the geofeed file is not signed per Section 4, then multiple inetnum: objects MAY refer to the same geofeed file, and the consumer MUST use only geofeed lines where the prefix is covered by the address range of the inetnum: object they have followed. Does "geofeed lines" here mean "lines/entries in the geofeed file", as opposed to "the geofeed: attribute in the intenum: class"? (Also, didn't we say earlier that geofeed files could have entries that don't map up to a CIDR block and thus don't have a well-defined prefix?) To minimize the load on RIR whois [RFC3912] services, use of the RIR's FTP [RFC0959] services SHOULD be the preferred access. This Preferred access for which objects/resources? If an inetnum: for a wide prefix (e.g. a /16) points to an RPKI- 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 weak authorization. I might reiterate that the rule for fetching from the most-specific inetnum: object with a geofeed reference means that the spoofed data will take effect (for the affected prefix), and possibly also that if validators could always require signatures, the attack would be stymied (but of course that is not happening anytime soon). Appendix A Those are some interesting Subject CNs in the non-root certs, but I guess they work... I only did some cursory spot-checking of the examples, and not a full work-up. NITS Section 1 of the service. This is often done using the source IP address used to contact the service. [...] I'd consider s/using/by using/ or s/using/based on/ Section 2 Content providers and other parties who wish to locate an IP address to a geographic locale need to find the relevant geofeed data. In I'd suggest s/to locate/to associate/ 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 prefixes, dual IPv4/IPv6 spaces are represented, etc. I'm not sure how the unsigned nature of the geofeed file is relevant for discussing its large size. Section 3 The Routing Policy Specification Language (RPSL), and [RFC2622] and [RFC4012] used by the Regional Internet Registries (RIRs) specifies Is the ", and" needed? Section 4 Should the authenticator be syntactically incorrect per the above, the authenticator is invalid. "The above" seems to be mostly discussing the geofeed file being signed, not the authenticator per se. Borrowing detached signatures from [RFC5485], after file canonicalization, the Cryptographic Message Syntax (CMS) [RFC5652] would be used to create a detached DER encoded signature which is Why "would be used" (vs "is used")? All of these steps MUST be successful to consider the geofeed file signature as valid. As the signer specifies the covered RPKI resources relevant to the signature, the RPKI certificate covering the inetnum: object's address range is included in the [RFC5652] CMS SignedData certificates field. Identifying the private key associated with the certificate, and getting the department with the Hardware Security Module (HSM) to sign the CMS blob is left as an exercise for the implementor. On the other hand, verifying the signature requires no complexity; the certificate, which can be validated in the public RPKI, has the needed public key. The last two paragraphs here seem to be copy/paste leftovers, as they (or a edited copy) already appeared prior to the detailed/enumerated validation procedure. [I-D.spaghetti-sidrops-rpki-rsc] describes and provides code for a Cryptographic Message Syntax (CMS) profile for a general purpose listing of checksums (a 'checklist'), for use with the Resource Public Key Infrastructure (RPKI). It provides usable, albeit complex, code to sign geofeed files. I don't see any code in the draft itself ("provides"), but probably there is code referenced from it. Section 5 their RIR/NIR and/or any provider LIR which has assigned prefixes to Interestingly, RIR is not listed as "well-known" at https://www.rfc-editor.org/materials/abbrev.expansion.txt (and LIR not listed at all!). This is the first time we use LIR, so we should expand it. 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 RPKI CA may issue a subordinate certificate exclusively for the purpose as shown in Appendix A. "subordinate certificate" seems to be a very uncommon phrase (and mostly only appears as part of "subordinate certificate authority"). Perhaps "a dedicated certificate" or "a leaf certificate" would work just as well? _______________________________________________ OPSAWG mailing list OPSAWG@ietf.org https://www.ietf.org/mailman/listinfo/opsawg