Re: [DNSOP] Working Group Last Call for: Message Digest for DNS Zones

Michael StJohns <msj@nthpermutation.com> Sun, 05 January 2020 21:17 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 5908F120089 for <dnsop@ietfa.amsl.com>; Sun, 5 Jan 2020 13:17:44 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 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, SPF_HELO_NONE=0.001, SPF_NONE=0.001] 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 Ay2eYbUm-Umt for <dnsop@ietfa.amsl.com>; Sun, 5 Jan 2020 13:17:41 -0800 (PST)
Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) (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 5E31C120020 for <dnsop@ietf.org>; Sun, 5 Jan 2020 13:17:41 -0800 (PST)
Received: by mail-qt1-x843.google.com with SMTP id e5so41053440qtm.6 for <dnsop@ietf.org>; Sun, 05 Jan 2020 13:17:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nthpermutation-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=8vByRZCe8gXFy1Bkb49qtcxXcJ/+QX3HnzY70wdv7mA=; b=1NJ8fR2uFLDg3cTxYAkejmj5Afje6B3fWN9MBL92R3qlbZar2cyYbrOMEDm5Ut9VvN CqRxAalkeXCNZrdSSmoCWd2fzfaXo+NFdNft7+8ucBp5wZjhacveW4RGiOQb2FvXI4yb 2y6dGFXqQTvxtJGvVCqDHmp0Ak05n6S6NGi/zix24RPpNgEatslZzNMUzi4shbvg08jk wFTd4Kh6/n5vsJMChzsIQKIa7G80ZZbMqinpumDbdj54Nlp6B6kbXpjS93ckehAJWHkp FyeW8gM9bK4r5+jJyheJHXxBHsrI6Mx55aF3lcGBNCrcLhb+lXJ5Pa8WvXznAk6HzHuB Bigw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=8vByRZCe8gXFy1Bkb49qtcxXcJ/+QX3HnzY70wdv7mA=; b=Ti5Huz4r/Pa+VlPaCi+Ihtvcya6ozVQ+2EqYjK226QtF2IAeudXDtEpIFycDO/81vn V9Z7OJ9mmcmhNcpPeyKNZbrx3bQ90BSqnTF1dSm7zM0ebhKNYNEGfd/f5+kHk4dmbdza AiwHIA9U2BllV5pD69GAtbPfku9vPT3bUkoEZn/b3SF8lHLh8RCweuNClySZoYqIV4mX oROMpZSkc57lhRbySlkUqNkbISBv9dofiwddza/RgcCBfYOvDRCx9YYMl+GuIiVCGElq oOFP/w728gxTitcPquzUS2FCyY11rCI83lxPBuYU891pJh9QZPZrVkd8kRqotCDRrjC4 7ZjA==
X-Gm-Message-State: APjAAAWvu4Ca+ueH7kra8yYunqqvPeYK+gMAXG7BlOBQg0duZKgUbQSM 9eH3d4l8kPQ2PHvythk4TrwGDcUx7gk=
X-Google-Smtp-Source: APXvYqyl+zP6yAKefC6u9HK9WXwobpxDn+K0/MAKj/HqZIGLrb0pojAZcwGXzEnhuzXkr5OCzb63Cw==
X-Received: by 2002:ac8:276a:: with SMTP id h39mr65304144qth.207.1578259059964; Sun, 05 Jan 2020 13:17:39 -0800 (PST)
Received: from ?IPv6:2601:152:4400:437c:c942:b505:785e:6190? ([2601:152:4400:437c:c942:b505:785e:6190]) by smtp.gmail.com with ESMTPSA id e3sm20683272qtj.30.2020.01.05.13.17.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Jan 2020 13:17:39 -0800 (PST)
To: John Levine <johnl@taugh.com>, dnsop@ietf.org
References: <20200105190035.753B411FCFEF@ary.qy>
From: Michael StJohns <msj@nthpermutation.com>
Message-ID: <9952199f-9ea5-2d51-a5d2-6aaf805774a5@nthpermutation.com>
Date: Sun, 05 Jan 2020 16:17:38 -0500
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <20200105190035.753B411FCFEF@ary.qy>
Content-Type: multipart/alternative; boundary="------------30BE96167BDB1EFD7D103DE4"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/ROsQiJkCtugF9-4YP3XGi1wBAPo>
Subject: Re: [DNSOP] Working Group Last Call for: Message Digest for DNS Zones
X-BeenThere: dnsop@ietf.org
X-Mailman-Version: 2.1.29
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: Sun, 05 Jan 2020 21:17:44 -0000

On 1/5/2020 2:00 PM, John Levine wrote:
> In article <84650844-1d13-9377-c913-23dcbc76dc37@nthpermutation.com> you write:
>> 1) A recommendation for the maximum size of the zone (and for that
>> matter the maximum churn rate). This is hinted at in the abstract, but
>> missing from the body of the document.
> I don't get it.  The draft makes it clear that ZONEMD in this
> implementation is intended for statically signed zones.  If Verisign
> wants to put a ZONEMD in the daily download of the three hundred
> million record .com zone file, I think that would be dandy.  If your
> zone of whatever size is updated too often to deal with recomputing
> ZONEMD, then don't.

To quote one of my favorite movies:  " I don't think that means what you 
think it means"

The abstract text which is usually not considered normative says:

>     As specified at this time, ZONEMD is not designed for use in large,
>     dynamic zones due to the time and resources required for digest
>     calculation.  The ZONEMD record described in this document includes a
>     field intended to enable future work to support large, dynamic zones.

Define: "Large" and define "Dynamic"  and define "large AND dynamic".   
A large fairly static zone (e.g. 100K records with changes once a month) 
might be a candidate.  A small dynamic zone (e.g 20 records changing 
hourly) might also be a candidate.

> Also, advice about what's too big or too slow doesn't age well.  I
> expect most of use remember a time when the idea of a million record
> zone file seemed absurd.

Tim represented that "the authors feel they've performed their 
experiments" and I would assume that the experiments have given them 
some ideas on which zone size and churn don't cause problems.  E.g. how 
long does it take to canonicalize and hash various sizes of zones given 
a particular (or several different) hardware implementation(s)?


>
>
>> 2) For each of the use cases, an explanation of how this RRSet actually
>> mitigates or solves the identified problem.
> I don't get this either.  ZONEMD lets you verify that you got the
> entire zone correctly.  If anything, I'd take most of this section out
> since the list of places where people get zone files isn't likely to
> age well either.

Let's take one example:

>   As the
>     root zone spreads beyond its traditional deployment boundaries, the
>     need for verification of the completeness of the zone contents
>     becomes increasingly important.

I read this (and the motivation section), and I still don't know why 
this is a problem.   Nor what the receiver of the zone should do if it 
detects "missing" data for some definition of missing.

(Note that the "parent tells you whether the child has a zonemd record" 
thing won't work here, so it's going to have to be some sort of 
configuration option for the receiver to tell it what to do - e.g. pull 
it again, yell at the root signers???).

1.3.4 comes the closest to specifying a real use.  The rest - not so 
much.  1.3.3 basically seems to be saying - RPZ didn't do it right and 
rather than fixing it by checking DNSSEC, do this instead.


>
>>>      This specification utilizes ZONEMD RRs located at the zone apex.
>>>      Non-apex ZONEMD RRs are not forbidden, but have no meaning in this
>>>      specification.
>> Instead - "non-apex ZONEMD RRs MUST be ignored by the receiving client".
> Does ignore mean they aren't included in the computation of an apex ZONEMD?  Ugh.
>
> ZONEMD RRs MUST NOT appear anywhere other than the apex of a zone.

What does a client do if it sees a non-apex ZONEMD RR because someone 
will put it there?  E.g. it "ignores it as a verifiable item".  The rest 
of the processing rules apply.


>
>>>      A zone MAY contain multiple ZONEMD RRs to support algorithm agility
>>>      [RFC7696] and rollovers.  Each ZONEMD RR MUST specify a unique Digest
>>>      Type and Parameter tuple.
>> "A client that receives multiple ZONEMD RRs with the same DT and
>> Parameter MUST try to verify each in turn and MUST accept the zone if
>> any verify".
> I think that's an error.  If they have the same DT and parameter, either they
> have the same serial and they're duplicates, or one of them is obsolete.

Yup.  Or the zone issuer failed to update the serial number... know any 
zones (or more to the point zone operators) like this?


>
>>>    It is RECOMMENDED that a zone include only
>>>      one ZONEMD RR, unless the zone publisher is in the process of
>>>      transitioning to a new Digest Type.
>> Lower case "recommended" here please.
> I'd take it out altogether.  What problem does multiple signatures cause?
>
> Agree with most of the other editorial advice.
>
>> 13) Missing a section 4.2 which says what you do when a zone doesn't
>> verify.  Otherwise, what's the point?
> That seems extremely dependent on the context.  What I would do on a
> secondary name server AXFR'ing a zone for which it's authoritative vs.
> one of the thousand daily CZDS zip file downloads is rather different.

If a computer can't figure out what to do with a failed validation 
absent human interaction then you might as well say:

"ZONEMD RRs may be safely ignored by all but the geekiest of DNS human 
operators as there is no guidance on what to do if you see a zone that 
appears to be incomplete due to ZONEMD RR validation as it might not 
actually be incomplete"


>
> With respect to updated zones, perhaps it should say that if zone
> updates are distributed with IXFR, each update should either have an
> updated ZONEMD with the new checksum for the full zone or delete the
> now obsolete old ZONEMD.  That seems obvious, but you never know.

Humans do stupid things, and tools don't always prevent them from doing 
so.  DNS is both a transport/query protocol and a data protocol, and the 
data protocol is subject to some really interesting constraints that are 
easily evaded by human error or intention.

The check on the data protocol is what the client/receiver does with it 
in the face of errors.

Later, Mike


>
> R's,
> John