Re: [sidr] New Version Notification for draft-madi-sidr-rp-00.txt

Stephen Kent <kent@bbn.com> Wed, 20 July 2016 19:28 UTC

Return-Path: <kent@bbn.com>
X-Original-To: sidr@ietfa.amsl.com
Delivered-To: sidr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8F8EC12DAA8; Wed, 20 Jul 2016 12:28:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.487
X-Spam-Level:
X-Spam-Status: No, score=-5.487 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-1.287, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xo2ZkTaMc6TT; Wed, 20 Jul 2016 12:28:23 -0700 (PDT)
Received: from smtp.bbn.com (smtp.bbn.com [128.33.0.80]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E52E612D629; Wed, 20 Jul 2016 12:28:22 -0700 (PDT)
Received: from ssh.bbn.com ([192.1.122.15]:41550 helo=COMSEC.fios-router.home) by smtp.bbn.com with esmtp (Exim 4.77 (FreeBSD)) (envelope-from <kent@bbn.com>) id 1bPxAH-000HtA-NM; Wed, 20 Jul 2016 15:28:17 -0400
From: Stephen Kent <kent@bbn.com>
To: Oleg Muravskiy <oleg@ripe.net>, Declan Ma <madihello@icloud.com>
References: <20160412100344.32250.28492.idtracker@ietfa.amsl.com> <E3DE4ED0-1BAE-48EE-849B-E0E0813CE411@icloud.com> <F0799243-C489-4BB9-B2C1-FAB115D9536D@ripe.net>
Message-ID: <e8a31ea4-b2b8-c39b-4b43-919663b46419@bbn.com>
Date: Wed, 20 Jul 2016 15:28:17 -0400
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0
MIME-Version: 1.0
In-Reply-To: <F0799243-C489-4BB9-B2C1-FAB115D9536D@ripe.net>
Content-Type: multipart/alternative; boundary="------------2A340A258DBCA8D20FEFB468"
Archived-At: <https://mailarchive.ietf.org/arch/msg/sidr/PippUcd5bC5wuG2f8J-tEic8EDY>
Cc: sidr chairs <sidr-chairs@ietf.org>, IETF SIDR <sidr@ietf.org>
Subject: Re: [sidr] New Version Notification for draft-madi-sidr-rp-00.txt
X-BeenThere: sidr@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Secure Interdomain Routing <sidr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/sidr>, <mailto:sidr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/sidr/>
List-Post: <mailto:sidr@ietf.org>
List-Help: <mailto:sidr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/sidr>, <mailto:sidr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 20 Jul 2016 19:28:26 -0000

Oleg,

Thanks for the feedback on our doc.
> Well, actually there is normative language: 
you're right. those instances of MUST will be changed to lowercase, 
since the intent is that this doc be informational.
> And there are several other places where the normative language is not used, but implied.
the doc is re-iterating what requirements doc say, so it is appropriate 
to use language that conveys what the requirements are, but we do try to 
avoid normative language. We'll revise the doc to remove normative 
(uppercase) language, but we will continue to convey what is mandated 
vs. optional, etc.
>> This doc outlines the RP functions, summarizes them and then gives reference to those precise sections or paragraphs, in order to make life easier for implementers to make sure he/she has addressed all of these requirements.
> I have two comments for this paragraph.
>
> First, it might seem appealing to create a document that will give a "reference to those precise sections or paragraphs", so that the implementer could skip reading those long RFCs in full.  But I do not think it is possible or advisable. Even in your draft you say:
>
>     An RP is required
>     to verify that a resource certificate adheres to the profile
>     established by [RFC6487].  This means that all extensions mandated by
>     [RFC6487] must be present and value of each extension must be within
>     the range specified by this RFC.  Moreover, any extension excluded by
>     [RFC6487] must be omitted.
>
> or
>
>     To determine whether a manifest is valid, the RP is required to
>     perform manifest-specific checks in addition to those specified in
>     [RFC6488].
>
> So very often it is more practical to refer to the whole RFCs, because an implementer has to implement all of it, not just specific paragraphs.
I agree that implementers will have to read the cited RFCs. The goal 
here is to provide an overview of the requirements and to enumerate the 
RFCs that contain such requirements.
> Second, what if, for whatever reason, this document will not list *all* of the requirements?  Will it be OK for the implementer to say "I did everything specified there", or will (s)he be required to double-check with other RFCs you refer to?  Or even with those you do not refer to?
>
> I'm not sure how to define the applicability of such document.
the utility of the doc is that it provides a concise, high level 
description of RP requirements, and pointers to the normative RFCs where 
these requirements are fully specified. The BGPsec overview I-D is 
informational and provides a concise description of what a router needs 
to do to implement BGPsec, but it points to the relevant RFCs that 
provide the full specs for BGPsec, router certs, etc.
>> Any comments and feedbacks are appreciated.
> Here are my comments for some specific sections:
>
>     3.1.  Verifying Resource Certificate and Syntax
>
>     Certificates in the RPKI are called resource certificates, and they
>     are required to conform to the profile [RFC6487].  An RP is required
>     to verify that a resource certificate adheres to the profile
>     established by [RFC6487].  This means that all extensions mandated by
>     [RFC6487] must be present and value of each extension must be within
>     the range specified by this RFC.  Moreover, any extension excluded by
>     [RFC6487] must be omitted.
>
> I think you should not repeat the text of other RFCs, otherwise you risk of being incomplete or going out of sync with referenced RFC.
An informational RFC providing an overview always runs this risk, but 
that doesn't make it a bad idea.
>
>     3.2.  Certificate Path Validation
>
>     In the RPKI, issuer can only assign and/or allocate public INRs
>     belong to it, ...
>
> I don't think assignment or allocation of INR happens in RPKI.
good point. the text will be revised to note that the RPKI _represents_ 
the allocations of INRs.
>
>     3.3.  CRL Processing
>
>     The CRL processing requirements imposed on CAs and RP are described
>     in [RFC6487].  CRLs in the RPKI are tightly constrained; only the
>     AuthorityKeyIndetifier and CRLNumber extensions are allowed, and they
>     MUST be present.  No other CRL extensions are allowed, and no
>     CRLEntry extensions are permitted.  RPs are required to verify that
>     these constraints have been met.  Each CRL in the RPI MUST be
>     verified using the public key from the certificate of the CA that
>     issued the CRL.
>
>
> Apart from using normative language mentioned above, you seem to repeat the text of other RFC.
> Is it the only bit of RFC6487 that is applicable to CRL processing in RPKI validation?
> Aren't any CRL validation (not only in RPKI) requires that CRL must be verified using the public key of it's issuer?
The cited text notes what CRL processing requirements are unique to the 
RPKI. ALL PKIs require that a CRL be validated using the public key of 
the issuer of the CRL.
>
>     4.2.1.  Manifest
>
>     To determine whether a manifest is valid, the RP is required to
>     perform manifest-specific checks in addition to those specified in
>     [RFC6488].
>
>     Specific checks for a Manifest are described in section 4 of
>     [RFC6486].  If any of these checks fails, indicating that the
>     manifest is invalid, then the manifest will be discarded and treated
>     as though no manifest were present.
>
> This description is quite incomplete. Perhaps you should merge the content of section "4.3.  How to Make Use of Manifest Data" in here, but even there I do not see a reference to section 6 (Relying Party Use of Manifests) of RFC6486, which is quite a big omission.
I agree that this needs more work. Your doc describing what the RIPE RP 
code does include examples where you have made choices that are allowed, 
but not mandated, by RFCs. This text wants to say what is mandated and 
what is allowed. I suspect we may add an implementation guidance section 
that will address issues where implementers have options and what 
experience has taught us about the pros and cons of different options.
>
>     4.2.2.  ROA
>
>     To validate a ROA, the RP is required perform all the checks
>     specified in [RFC6488] as well as the additional ROA-specific
>     validation steps.  The IP address delegation extension [RFC3779]
>     present in the end-entity (EE) certificate (contained within the
>     ROA), must encompass each of the IP address prefix(es) in the ROA.
>     More details for ROA validation are specified in section 2 of
>     [RFC6482].
>
> The second sentence is almost a 1-to-1 copy of Section 4 of 6482. What's the point of copying it instead of referencing?
the goal of this doc is both to point to all of the RFCs that establish 
RP requirements, and to provide an overview of the requirements. In some 
cases, the text here will paraphrase the requirements, in other cases it 
may merely restate them.
>
> Section 2 of RFC6482 defines the ROA content-type, not the validation.
god catch, we'll fix that.
>
>
>     4.2.3.  Ghostbusters
>
>     The Ghostbusters Record is optional; a publication point in the RPKI
>     can have zero or more associated Ghostbuster Records.
>
> This is true for all objects except manifest and CRL.
yes, so what?
>     If a CA has at
>     least one Ghostbuster Record, RP is required to verify that this
>     Ghostbusters Record conforms to the syntax of signed object defined
>     in [RFC6488].
>
> And this is also true for any signed object.
ibid.
>     The payload of this signed object is a (severely) profiled vCard.  An
>     RP is required to verify that the payload of Ghostbusters conforms to
>     format as profiled in [RFC6493].
>
> I'm mentioning it here, but it applies to many places in this document: the validation section of RFC6493 already references RFC6488. So why duplicate it here?

Oleg, I think we fundamentally disagree about the utility of a doc like 
this. I agree that this initial cut can be improved, but I disagree with 
you sentiment that it is not a worthwhile document. I have provided you 
and Tim with extensive comments on your RIPE validation description doc, 
and these have identified a number of places where the text needed to be 
clarified or fixed, i.e., it was technically incorrect.  In that light I 
think it would be fair to assume that successive versions of this doc 
can improve as well, and thus refusing to consider it is premature.

Steve