Re: [DNSOP] mixfr - issue #10 - Client RRSIG logic simplification

Mark Andrews <marka@isc.org> Wed, 04 April 2018 13:52 UTC

Return-Path: <marka@isc.org>
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 07A4D126BF7 for <dnsop@ietfa.amsl.com>; Wed, 4 Apr 2018 06:52:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.91
X-Spam-Level:
X-Spam-Status: No, score=-6.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, TVD_PH_BODY_ACCOUNTS_PRE=0.001, T_RP_MATCHES_RCVD=-0.01] 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 G_8IF2v1KzdO for <dnsop@ietfa.amsl.com>; Wed, 4 Apr 2018 06:52:26 -0700 (PDT)
Received: from mx.pao1.isc.org (mx.pao1.isc.org [149.20.64.53]) (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 A244D1204DA for <dnsop@ietf.org>; Wed, 4 Apr 2018 06:52:26 -0700 (PDT)
Received: from zmx1.isc.org (zmx1.isc.org [149.20.0.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.pao1.isc.org (Postfix) with ESMTPS id 233C13AB003; Wed, 4 Apr 2018 13:52:26 +0000 (UTC)
Received: from zmx1.isc.org (localhost [127.0.0.1]) by zmx1.isc.org (Postfix) with ESMTPS id E041D160054; Wed, 4 Apr 2018 13:52:25 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1]) by zmx1.isc.org (Postfix) with ESMTP id BC5D1160055; Wed, 4 Apr 2018 13:52:25 +0000 (UTC)
Received: from zmx1.isc.org ([127.0.0.1]) by localhost (zmx1.isc.org [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id xKB7rUl8hkiC; Wed, 4 Apr 2018 13:52:25 +0000 (UTC)
Received: from [172.30.42.91] (c27-253-115-14.carlnfd2.nsw.optusnet.com.au [27.253.115.14]) by zmx1.isc.org (Postfix) with ESMTPSA id AC404160054; Wed, 4 Apr 2018 13:52:24 +0000 (UTC)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
From: Mark Andrews <marka@isc.org>
In-Reply-To: <e8f1874c-1be5-2ca5-d3fd-e733234833d6@pletterpet.nl>
Date: Wed, 04 Apr 2018 23:52:22 +1000
Cc: Frederico A C Neves <fneves@registro.br>, dnsop@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <84EFDB04-35E5-4484-AAD7-6C093A17F607@isc.org>
References: <20180329184513.GF62218@registro.br> <c62db666-fc1b-8ef8-8fbb-42443e1b69a0@pletterpet.nl> <20180404013246.GE10662@registro.br> <e8f1874c-1be5-2ca5-d3fd-e733234833d6@pletterpet.nl>
To: Matthijs Mekking <matthijs@pletterpet.nl>
X-Mailer: Apple Mail (2.3273)
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/pVM5yajKu7HPJDPoBqNmOzhEx7I>
Subject: Re: [DNSOP] mixfr - issue #10 - Client RRSIG logic simplification
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: Wed, 04 Apr 2018 13:52:31 -0000

> On 4 Apr 2018, at 8:26 pm, Matthijs Mekking <matthijs@pletterpet.nl> wrote:
> 
> Hi Frederico,
> 
> On 04-04-18 03:32, Frederico A C Neves wrote:
>> Hi Matthijs,
>> On Tue, Apr 03, 2018 at 02:37:12PM +0200, Matthijs Mekking wrote:
>>> Hi Frederico,
>>> 
>>> On 03/29/2018 08:45 PM, Frederico A C Neves wrote:
>>>> I was looking at our server to evaluate the MIXFR implementation and
>>>> it seams to me that the current text covering dnssec aware client
>>>> logic don't take in account that a posterior record at the addition
>>>> section, by an MIXFR DNSSEC aware server, will implicitly replace the
>>>> RRSIG RRset.
>>> 
>>> I am unclear what case you are covering.
>> Any situation that you have an updated RRset. It is implicit that
>> you'll have to update the signature, so I was arguing that this is
>> afterward covered by 3.6 Replace a RRset. My "simplified" logic take
>> this in account to don't impose this extra logic at the client for
>> updated RRsets, only for removed RRsets, explicit or when a removal of
>> RR causes it.
> 
> I get it now, thanks for clarifying.
> 
> Still, I think the savings in complexity is minimal, since the logic should exist for RR deletion, so it's a small effort to also enable it for RR addition.
> 
> Looking at your examples, there is very little difference on the wire. So it would only be for client logic purposes I assume. I doubt that the logic is simplified though:
> 
> If you want to prevent implicit RRSIG deletion in the "Replace RRset" case, you now have to have logic to verify there is no RR in the addition section of the MIXFR.
> 
> Note that implicit RRSIG deletion is idempotent, so it does not matter if two RRs in the MIXFR trigger it.

Not if you are processing the additions on a RR by RR basis. You can add a new RRSIG
before you add the covering RR.  You need to perform two passes over the addition section.
1 - to perform implicit deletions.
2 - to perform explicit additions.

Note there are some RR deletions / addition pairs that DO NOT change RRSIGs. e.g. case changes
in domain names that are subject to canonicalisation.  There is no requirement to regenerate
RRSIGs for such changes though most implementations will do so.


> Best regards,
> 
> Matthijs
> 
> 
>> So the actual difference on the wire is one server replacing the RRSIG
>> and the other adding it. For the client processing is RRSIG removal
>> logic only at RRset removal in one case and at any change for the
>> other. Bellow a zone at serial 1 and 2 and the two MIXFR versions.
>> example.	IN	SOA	serial=1
>> example.	IN	RRSIG SOA
>> a.example.	IN	A	192.0.2.1
>> a.example.	IN	RRSIG A
>> b.example.	IN	A	192.0.2.2
>> b.example.	IN	A	192.0.2.3
>> b.example.	IN	RRSIG A
>> example.	IN	SOA	serial=2
>> example.	IN	RRSIG SOA
>> b.example.	IN	A	192.0.2.3
>> b.example.	IN	A	192.0.2.4
>> b.example.	IN	RRSIG A
>> c.example.	IN	A	192.0.2.5
>> c.example.	IN	RRSIG A
>> # "simplified MIXFR"
>> example.	IN	SOA	serial=2
>> example.	IN	SOA	serial=1
>> a.example.	ANY	A
>> b.example.	IN	A	192.0.2.2
>> example.	IN	SOA	serial=2
>> b.example.	IN	A	192.0.2.4
>> b.example.	ANY	RRSIG A > c.example.	IN	A	192.0.2.5
>> c.example.	IN	RRSIG A
>> example.	IN	SOA	serial=2
>> # "implicit RRSIG removal at any change"
>> example.	IN	SOA	serial=2
>> example.	IN	SOA	serial=1
>> a.example.	ANY	A
>> b.example.	IN	A	192.0.2.2
>> example.	IN	SOA	serial=2
>> b.example.	IN	A	192.0.2.4
>> b.example.	IN	RRSIG A
>> c.example.	IN	A	192.0.2.5
>> c.example.	IN	RRSIG A
>> example.	IN	SOA	serial=2
>>> 
>>>> Logic could be simplified only to Deletions of RRs, when they conclude
>>>> a removal of a RRset, or RRsets by itself.
>>> 
>>> No, also if there is an RR addition, it means the RRset has changed, so
>>> existing RRSIG records can be implicitly removed.
>>> 
>> That is true but in this case you imply that it will be later added. I
>> was proposing to replace it.
>>>> All the other cases, addition or replacement, will be covered
>>>> automatically by an addition or replace of a RRSIG RRset. There is no
>>>> need to extra client logic to remove RRSIG, at addition of a RR, and
>>>> at deletion of a RR if it not remove the RRset.
>>> 
>>> Note there is no such thing as an RRSIG RRset. I tried to clarify this
>>> in the terminology bis document:
>> So how do you call, two RR for the same name, type and class in a
>> double signed zone? Never mind I was not aware of this, thanks! Change
>> "a RRSIG RRset" by "any RRSIGs" and the logic still stands.
>>> 
>>>    https://www.ietf.org/mail-archive/web/dnsop/current/msg22118.html
>>> 
>>> Note that adding an RRSIG is different than replacing an RRSIG.
>> Ok, but we could achive the same end result with both logics and
>> operations.
>>> 
>>>> This is documented as issue #10 and includes proposed text.
>>>> 
>>>> https://github.com/matje/mixfr/issues/10
>>> 
>>> I think it makes more sense to keep the text as is, that is when
>>> changing an RRset implicitly remove the corresponding RRSIG records. I
>>> am opposed to only removing corresponding RRSIG on a RR deletion.
>>> 
>> I think my version is easyer imposing less checks on clients but I can
>> live with the current text
>> I just realized the draft needs a new example for 4.2. The current one
>> is based on "Delete All RRsets of a Type". This operations was removed
>> in the current version of the draft.
>>> Best regards,
>>>    Matthijs
>> Fred
> 
> _______________________________________________
> DNSOP mailing list
> DNSOP@ietf.org
> https://www.ietf.org/mailman/listinfo/dnsop

-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742              INTERNET: marka@isc.org