Re: [sidr] I-D Action: draft-ietf-sidr-rpki-validation-reconsidered-00.txt

Tim Bruijnzeels <tim@ripe.net> Thu, 24 July 2014 20:14 UTC

Return-Path: <tim@ripe.net>
X-Original-To: sidr@ietfa.amsl.com
Delivered-To: sidr@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7B5461ABB2E for <sidr@ietfa.amsl.com>; Thu, 24 Jul 2014 13:14:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-0.001, WEIRD_PORT=0.001] autolearn=ham
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 dqMIjpoewopA for <sidr@ietfa.amsl.com>; Thu, 24 Jul 2014 13:14:50 -0700 (PDT)
Received: from koko.ripe.net (koko.ripe.net [IPv6:2001:67c:2e8:11::c100:1348]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EEA711ABB27 for <sidr@ietf.org>; Thu, 24 Jul 2014 13:14:49 -0700 (PDT)
Received: from titi.ripe.net ([193.0.23.11]) by koko.ripe.net with esmtps (UNKNOWN:AES256-GCM-SHA384:256) (Exim 4.72) (envelope-from <tim@ripe.net>) id 1XAPPZ-0002pW-Fd; Thu, 24 Jul 2014 22:14:47 +0200
Received: from s258-sslvpn-1.ripe.net ([193.0.20.231] helo=vpn-73.ripe.net) by titi.ripe.net with esmtps (TLSv1:AES128-SHA:128) (Exim 4.72) (envelope-from <tim@ripe.net>) id 1XAPPY-0001u6-58; Thu, 24 Jul 2014 22:14:45 +0200
Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\))
Content-Type: multipart/alternative; boundary="Apple-Mail=_FA0B68B2-4661-408B-8C8B-54699DC88214"
From: Tim Bruijnzeels <tim@ripe.net>
In-Reply-To: <53D151F0.80808@bbn.com>
Date: Thu, 24 Jul 2014 16:14:40 -0400
Message-Id: <C838412C-D16C-4C88-B022-85484789444A@ripe.net>
References: <20140702012717.18291.24295.idtracker@ietfa.amsl.com> <415BB336-1A6C-48DD-BD0F-BC9EB0C3506F@ripe.net> <53CFFF3C.2040406@bbn.com> <BB01407F-A226-4531-9FDD-50E1B0A238F0@ripe.net> <53D151F0.80808@bbn.com>
To: Stephen Kent <kent@bbn.com>
X-Mailer: Apple Mail (2.1510)
X-RIPE-Spam-Level: --
X-RIPE-Spam-Report: Spam Total Points: -2.9 points pts rule name description ---- ---------------------- ------------------------------------ -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain 0.0 WEIRD_PORT URI: Uses non-standard port number for HTTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.0 HTML_MESSAGE BODY: HTML included in message
X-RIPE-Signature: 784d7acfe6559f2a0b602ec6519a0719fd56ae66617bb71b38d3351209aaef67
Archived-At: http://mailarchive.ietf.org/arch/msg/sidr/o0UNUSfDeEn955o8aHHmWt5oaW4
Cc: sidr@ietf.org
Subject: Re: [sidr] I-D Action: draft-ietf-sidr-rpki-validation-reconsidered-00.txt
X-BeenThere: sidr@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Thu, 24 Jul 2014 20:14:53 -0000

Hi,

a few more comments.. after this I think it's better (from my end) to discuss tomorrow in the working group.


On Jul 24, 2014, at 2:35 PM, Stephen Kent <kent@bbn.com> wrote:

> Tim,
> 
>> ...
>>>> 
>>>> The first approach has my strong preference. I believe it's simple to explain and implement, effective against both concerns, and I do not see any security issues with it. The change boils down to this: when doing top-down validation, just accept the *intersection* of resources listed on a certificate, and its parent. The idea of keeping track of resources explicitly is not new: we already have this when using 'inherit'. We have running code in our validator for this. It took us a day to implement this. The feature is off by default of course, but it's enabled without problems on a public instance that we're running: http://localcert.ripe.net:8088/
>> 
>> What I forgot to mention above is that we do issue warnings on over claiming certificates. So this is visible, although so-far we have not seen these warnings in the RIR production repositories.
> Can you says what tests you perform and how will they change if we adopt a relaxed path validation alg?

pseudo code:

Strict:
  parentresources = parentcertificate.getresources
  childresources = certificate.getresources
  if (parentresources contain childresources) {
     accept childresources
  } else {
     reject
  }

Relaxed:
  parentresources = parentcertificate.getAcceptedResources
  CLAIMED_childresources = certificate.getresources
  if (parentresources contain CLAIMED_childresources) {
     accept CLAIMED_childresources
  } else {
     warn about over-claimed resources
     accept remaining
  }

As mentioned in the other part of this thread: this applies to accepting resources on a certificate, i.e. in connection to a key. For ROAs we do insist that *all* resources that appear in ROA prefixes are accepted on the EE certificate used to sign the ROA. For MFT inherit is mandatory so it's irrelevant. For GBs also use inherit, so here the contact would only be accepted for remaining resources. For router certificates the router key would only be associated with accepted ASNs.



>>> More to the point, we all agree that it is very bad for an RIR or NIR to issue a cert
>>> that would break the current validation algoroithm. In a prior message I suggested several
>>> checks that I thought every CA operating should perform to detect and avoid such errors.
>>> Has RIPE been performing check such as these? Might adoption of relaxed validation rules
>>> minimize the perceived need to perform such checks, i.e., encourage sloppiness?
>> 
>> It is not my intention, and I believe it's safe to say that it's not the intention of others, to encourage sloppiness, but to minimise impact and improve resiliency if an error does occur.
> I understand this motive, but we have seen many examples over time where accepting non-conforming
> data results in progressive degradation of implementations. This is why the RPKI specs mandate
> RP enforcement of the criteria that CAs are supposed to follow in issuing certs.  This is in
> contrast to the normal PKI specs which mandate CA cert generation rules, but do no generally
> require RPs to check that certs have been generated consistent with these rules. In the Web PKI 
> context, this has resulted in a lot of "broken" certs being issued, and then accepted by RPs, 
> with not so great results. So, I think it is hard to increase resilience yet maintain sufficient
> feedback to CAs to help encourage standards compliance.

And I understand that a whole tree being invalidated is a pretty strong motivator for fixing stuff. But I find the operational impact and liability of this happening at the top of the hierarchy disproportionate. Therefore I am advocating a model where the impact is limited to INRs in question. In my opinion that is still bad enough to motivate fixing things.

Very practical example: if we stuff up our TA certificate now we invalidate 2000+ members. With relaxed validation we would only affect a few. And yes, this is still bad enough that we would want to fix it ASAP.

>> Speaking for our own CA implementation. We have code in place to ensure that we cannot create over-claiming certificates. We also have code to re-issue products as needed when resources are shrunk (e.g. omitting certain ROA prefixes when the resources are no longer held by the CA). However, there are a lot of moving parts here, and no software is without bugs. This problem gets worse when certificates are received from, or issued to third parties. In our current software we manage all CAs in our hierarchy locally, so we *know* when something changes and we can do the above. When dealing with 3rd parties there may be a significant time that parent and child are out of sync about the resources held by the child.
> see my question above about how you ensure that certs don't over-claim and how the mechanisms
> would change if path validation were relaxed.

We currently rely on *pro-active* rules in our software that prevent this. But I have no issues with setting up *re-active* self-monitoring on top of this. And I have no problems with appropriate text instructing CAs that they SHOULD or even MUST do the latter.

>>>> The second approach in section 4 was presented at the last IETF (draft-barnes-sidr-tao). Essentially it allows for transfer signalling through an up-down like protocol. Technically this approach can help to deal with transfer issues (2).
>>> The cited approach approach is designed expressly to deal with transfer issues, not with the
>>> more general problem of errors by CAs. One ought not conflate these two issues.
>> 
>> Okay, fair enough. As long as it's clear that this is the scope.
> The first sentence of the Abstract for TAO says:
>    This document defines an extension to the rpki-updown protocol to
>    provide support for transferring Internet Number Resources from one
>    INR holder to another.  
> 
> That seems pretty clear. 

That is indeed pretty clear. It is cited under 'alternative approaches' though, so maybe we would do well to make it clear here that this approach is designed to address one specific set of problems (i.e. transfers), or leave it out.