[DNSOP] On trust anchors, roots of trust, humans and indirection

Michael StJohns <msj@nthpermutation.com> Mon, 26 March 2018 18:28 UTC

Return-Path: <msj@nthpermutation.com>
X-Original-To: dnsop@ietfa.amsl.com
Delivered-To: dnsop@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2F3CC1250B8 for <dnsop@ietfa.amsl.com>; Mon, 26 Mar 2018 11:28:03 -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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=nthpermutation-com.20150623.gappssmtp.com
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 ox2QIHpcoKjq for <dnsop@ietfa.amsl.com>; Mon, 26 Mar 2018 11:28:00 -0700 (PDT)
Received: from mail-qt0-x232.google.com (mail-qt0-x232.google.com [IPv6:2607:f8b0:400d:c0d::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8E256126CE8 for <dnsop@ietf.org>; Mon, 26 Mar 2018 11:28:00 -0700 (PDT)
Received: by mail-qt0-x232.google.com with SMTP id j3so9117017qtn.9 for <dnsop@ietf.org>; Mon, 26 Mar 2018 11:28:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nthpermutation-com.20150623.gappssmtp.com; s=20150623; h=to:from:subject:message-id:date:user-agent:mime-version :content-language; bh=r2ODQ8cRgzhVVQrIO8XMLlWr2u3QNOyQcC2qYaD7uB8=; b=SiCrWYT9zSPGRf/KYRh8yPcOnY0zVa1W/W0j0oFtglEHHYhoMygnSj9jqMIKHDlXWX dEdmFbahQ4RXnLqwR9WGCXM1v3MwJTyYMcMwD7CKtiMW9wMpPhSuz+a5M5CjEy4+arkN t9+5md3bkPdH2RkSF3yy9goE6yKajQfZXXnqVjhbRS/56esfrqv3PgoG/6+Tp+bLhdIL vxksWzZ2+3Tj7PDpGUn3E9z/TLUft38CspgPtJkAHj9X4tqB/TaltcxFyLjLilhD3+l1 SeEUdjtfVuKdUMvEj/F9jTGieGWxq6OdjOEWSm+EiLqznOemhx8EO0U+Hg83BHZSSmJT +IeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language; bh=r2ODQ8cRgzhVVQrIO8XMLlWr2u3QNOyQcC2qYaD7uB8=; b=Rd5RkdqcdJJUHBWEyYowYJATR2V1QbUXPX8khURJ1A5n6CZjD4aY6ejfnmea/ZM00Q tWtPiRQya2HKv48CZ3n2C9TlN48M2J/L6N/j/vGivIoQCcwHA4fsOR394JaHNW54hu7F 4N/zS+eJhifupY7+MjuTLNrQRkJ5Jb0nJ5+zQSdXJgnAwX83Gx+B8GF3dTy2cKPF3Q8g d7y8XYo7gBxp2uyjX+xYIt6AsyX9EgLchKMUBLrG4Y3pol1agEjO5TP4Sz9sGC26TcCm MwSAyvbIynRI7PD90n2OhaHLBD+n57MnsROxu+rctxyLXO0NWUDwMwmzG/9sAD426h0J ZNXg==
X-Gm-Message-State: AElRT7G3J314pZ+nLDPQ0rAC1tG1aMOqlMqxooQ4p9r+hMI2SGvPQtdE 04k/TVKcB5szQngsLyOfUfCQp2Xm
X-Google-Smtp-Source: AG47ELuTfKKo9IxRGNd7NN2gUz3LC+EQ9JkpNQYwxlbOorZQ8hoq5lzMIcBUObfDHwRLa2ejSEdY5g==
X-Received: by 10.237.42.56 with SMTP id c53mr57332510qtd.199.1522088879005; Mon, 26 Mar 2018 11:27:59 -0700 (PDT)
Received: from ?IPv6:2601:152:4400:4013:4c03:95e6:333c:4239? ([2601:152:4400:4013:4c03:95e6:333c:4239]) by smtp.gmail.com with ESMTPSA id b201sm8388354qkg.48.2018.03.26.11.27.53 for <dnsop@ietf.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 26 Mar 2018 11:27:57 -0700 (PDT)
To: "dnsop@ietf.org" <dnsop@ietf.org>
From: Michael StJohns <msj@nthpermutation.com>
Message-ID: <a9bd794f-41bc-9593-db0d-5424c84431a3@nthpermutation.com>
Date: Mon, 26 Mar 2018 14:27:52 -0400
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------672A6E375249C3CE4350D540"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/jKFMiv1w06TsnL4RyeAJhnsgIRQ>
Subject: [DNSOP] On trust anchors, roots of trust, humans and indirection
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnsop>, <mailto:dnsop-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop/>
List-Post: <mailto:dnsop@ietf.org>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnsop>, <mailto:dnsop-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 26 Mar 2018 18:28:03 -0000

Hi -

Joe Abley introduced draft-jabley-dnsop-bootstrap-validator [jabbootval] 
at the DNSOP session this past week.  I was the only (one of the few?) 
person who suggested that this was a bad idea. Later that week, we ran 
into each other in the bar and chatted for not long enough to sync, but 
long enough for him to get the gist of why I was thinking what I'm 
thinking.  I thought I'd try and get on the record my reasoning.

If you don't want to read this then consider this instead (my conclusion 
at the end):

> So before we head off to Joe's draft or its ilk, I'd like to suggest 
> to the chairs that we first review RFC4986 and see if there are 
> changes to be made there.  If the environment has changed such that 
> the requirements are changed, then a change in the way the root trust 
> anchors are managed in validators *might* be in order.

These are all described from the point of view of a single resolver.  
Assume that the text is written understanding that there are many ways a 
given resolver may manage their trust stores, but that this discussion 
is looking at no human in the loop after initial root of trust 
establishment.

Terms:

  * Root of trust - the actual key from which trust may be traced.
  * DNS Root Trust anchor - the highest point in the DNS from which
    trust may be traced - usually the same as Root of trust, but not the
    case in the referenced draft

Proposition 1 (P1):  The initial selection of a root of trust (ROT) on 
behalf of a validator ALWAYS involves a human in the loop.  It may not 
be obvious which human(s), but it is always the case someone (not a 
computer) decided.  The selector may be the person configuring the 
validator or the set of people who compile the code with the validator, 
or linux distribution manager, but the initial selection always involves 
a judgement call of some sort by a human.  In many cases, this is a 
judgement call is based on external information (like widespread 
publication of the ROT information or multiple third party endorsements 
(e.g. reputation evaluation)).

[Note:  There are HITL both at the publication and validation points - 
this discussion concerns the validation points.  A human will almost 
always be involved on the publication side for invalidating, issuing and 
updating trust public keys.]

Proposition 2 (P2):  If you have an existing ROT, then you can 
replace/supercede the ROT information by doing the process for initial 
selection of a root of trust, or by extending the trust you already have 
in the current ROT and tracing the chain of trust from that ROT to a new 
trusted key.  Depending on the model, the new trusted key either becomes 
another link in the chain (a subsidiary trust point ), becomes an 
additional co-equal ROT (5011s model and transitory ICANN DNS Root 
model), or replaces the ROT (ICANN's steadys-state DNS Root model).

Proposition 3 (P3):  If you have an existing ROT, then you can 
replace/supercede subsidiary trust information by simply re-signing 
replacement information.  This is [jabbootval]'s model.  Note that the 
ROT of trust for DNS in [jabbootval] is no longer any of the DNS Root 
Trust Anchors, but the CA's key.

Corollary 1 (C1): If P3 is true, the mitigation of a compromised of a 
DNS Trust anchor under a CA ROT may be accomplished automatically with 
no need for a human in the loop at the validator side ([jabbootval]'s 
model).

Proposition 4 (P4):  The compromise of a singleton ROT (or more 
generally of all ROTs) leading to the "no trust" condition, requires 
repeating the "initial root of trust selection process". From the point 
of view of the validator, this is almost always a manual action either 
directly to the validator (manual configuration update, manual firmware 
update), or indirectly through a validators control point (e.g. pushed 
by a NOC).

Corollary 2 (C2): If P2 and P4 are true, and assuming there is more than 
one ROT, the compromise of a single ROT key does not NECESSARILY require 
repeating the initial root of trust selection process.   However, each 
validator will need to know the process for automatically invalidating 
the compromised ROT, and for replacing it in a trustworthy manner.  5011 
specifies a process for doing trust anchor updates.  Most CAs do not.  
However, see Russ Housley's 
https://datatracker.ietf.org/doc/draft-housley-hash-of-root-key-cert-extn/ 
- an extension for a CA to specify its NEXT public key as a possible 
approach for CAs.

Corollary 3 (C3): If P4, C1 and P1 are true, simply moving the ROT from 
the DNS Root Trust Anchor set to one or more CA ROTs does not mitigate 
against ROT compromise, it only moves the responsibility for mitigating 
the problem from the DNSSEC system to the CA system.

Corollary 4 (C4): If C3 and P3 are true, and the requirements from 
RFC4986 remain unchanged, then a change to a CA centric DNS Root of 
Trust will probably require a set of protocols and procedures to update 
the set of CA roots of trust in the validators.   That might be as 
simple as a firmware or config file update, but then begs the question 
of what triggers the updates? E.g. do we require a HITL to deal with 
cataclysmic failures (CA compromise?).

_____________________________________________________


All of this is a long way of saying that TANSTAAFL - There ain't no such 
thing as a free lunch.  We could push the ROT management out of the DNS 
space, but then we have other similar problems to solve to deal with the 
same set of risks and issues at the CA level or whereever.  Indirection 
doesn't solve problems, it just moves them.

So before we head off to Joe's draft or its ilk, I'd like to suggest to 
the chairs that we first review RFC4986 and see if there are changes to 
be made there.  If the environment has changed such that the 
requirements are changed, then a change in the way the root trust 
anchors are managed in validators *might* be in order.

Mike

ps - a question for extra credit:  If we change the DNS ROT to a CA or 
set of CAs, what does that do for the trust model for DANE?