Re: [DNSOP] [Ext] Re: Resolver behaviour with multiple trust anchors

Edward Lewis <> Wed, 01 November 2017 13:48 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 2179B13F90F for <>; Wed, 1 Nov 2017 06:48:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id FxOcf4k1CfxQ for <>; Wed, 1 Nov 2017 06:48:05 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 5D4BF13F4FC for <>; Wed, 1 Nov 2017 06:48:05 -0700 (PDT)
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1178.4; Wed, 1 Nov 2017 06:48:03 -0700
Received: from ([]) by PMBX112-W1-CA-1.PEXCH112.ICANN.ORG ([]) with mapi id 15.00.1178.000; Wed, 1 Nov 2017 06:48:03 -0700
From: Edward Lewis <>
To: Patrik Wallstrom <>, Ólafur Guðmundsson <>
CC: Moritz Muller <>, "" <>
Thread-Topic: [Ext] Re: [DNSOP] Resolver behaviour with multiple trust anchors
Thread-Index: AQHTUiwiqVxvIHBV0Uun1GqDhxVA26L+vEmAgAErf4CAABlJgA==
Date: Wed, 01 Nov 2017 13:48:02 +0000
Message-ID: <>
References: <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
user-agent: Microsoft-MacOutlook/f.27.0.171010
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: []
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha1"; boundary="B_3592374482_1189918501"
MIME-Version: 1.0
Archived-At: <>
Subject: Re: [DNSOP] [Ext] Re: Resolver behaviour with multiple trust anchors
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: IETF DNSOP WG mailing list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 01 Nov 2017 13:48:07 -0000

On 11/1/17, 08:17, "DNSOP on behalf of Patrik Wallstrom" < on behalf of> wrote:

>    If I remember the discussions correctly, there was a sense that the
>    resolver decides the local policy. And that yes, those are the three
>    options. Perhaps the options should be made more clear in a text somewhere.

The reason why I'm digging into this is that "things change."

Back about 15-20 years ago, when the design work was done, the original workshopping, documentation and re-documentation that led to the current RFCs on DNSSEC (numbering 4033-4035), the concerns were a bit different than perhaps they are now that we have operational experience.

Local policy is and remains the overriding philosophy of validation.  It is purely up to the receiver to determine what they trust.  But there's also the operational reality that most users will unbox a tool and rely on default settings until they realize they are unhappy with it and realize how to tweak it.

Besides local policy, the principle that plays a role here is maintaining as much robustness as possible.  Robustness means - getting answers to user's questions if at all possible.  DNSSEC, as an example of "slapped on security" (over an existing system, will inherently cause some once valid states to be invalid, for reasons based on "security."  To counter act that (not eliminate it), being conservative on what to block (SERVFAIL) was thought to be a design goal.

The desire to maximize robustness is something that might be subject to "things change."  During the time of design, there wasn't a mature registration economy (registries, DNS hosting, registrars, etc.), little thought was given to malicious mis-dealings in delegations.  I'm thinking in this direction based on a statement that "perfering a local trusted key over the DS record" is "the only way to go" because a "parent could steal a zone."

Perhaps what is needed is to examine the situation when it is found that there is a conflict between a trust anchor rooted-chain and a chain that passes up through a DS record on to an upper trust anchor.  (Keeping in the back of the mind that a resolver is allowed, via local policy, to build any kind of chain it wants, not just a chain that matches the delegation tree.)

1 - What if a higher-level trust anchor and chain validates an RR set but no trust anchor and chain is possible?  I.e., TA(example)->DS(delegation.example)->KEY (delegation.example)->www.delegation.example/IN/NULL validates
TA (delegation.example)->nothing->www.delegation.example/IN/NULL

By "nothing" I mean there's no key matching that cited in any RRSIG(NULL) over www.delegation.example/IN/NULL.

In a benign world, this should work as it is possible that the trust anchor base is outdated.  Perhaps there was a re-delegation, perhaps a misconfiguration.

In a malignant world, this would result from a "corrupted" registry.  (Where corrupted means, not playing by the rules whether intentionally or not.)

2 - The opposite, the trust anchor validates, not the DS chain

This could happen with a child forgetting to tell the parent that they've changed secure entry points, (been there, got a t-shirt and had a cool packet dump to analyze) but also had some population of trust anchor managers playing along.  The latter group didn't have errors, the non-players did experience SERVFAILs.

3 - they both work or both fail

I don't see an issue.

What I'm coming to is ... if there's a choice between being afraid of a malicious registry or being afraid of operational errors, for reasons I don't think are made in this email, I'm still opting to be afraid of operational errors because, well, them I've seen.

Are there cases of "corrupted" registries make the threat of "stolen zones" a real thing?