Re: [dnssd] Genart last call review of draft-ietf-dnssd-push-20

Tom Pusateri <pusateri@bangj.com> Wed, 10 July 2019 19:56 UTC

Return-Path: <pusateri@bangj.com>
X-Original-To: dnssd@ietfa.amsl.com
Delivered-To: dnssd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1F2FF120345; Wed, 10 Jul 2019 12:56:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] 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 SripAzsTL7Fa; Wed, 10 Jul 2019 12:56:46 -0700 (PDT)
Received: from oj.bangj.com (69-77-154-174.static.skybest.com [69.77.154.174]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id BCD0712004D; Wed, 10 Jul 2019 12:56:46 -0700 (PDT)
Received: from [172.16.25.117] (69-77-155-155.static.skybest.com [69.77.155.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by oj.bangj.com (Postfix) with ESMTPSA id 4CF7734610; Wed, 10 Jul 2019 15:56:45 -0400 (EDT)
Content-Type: multipart/alternative; boundary="Apple-Mail-C5C431DE-1300-449A-BC12-F3B9CD5030CC"
Mime-Version: 1.0 (1.0)
From: Tom Pusateri <pusateri@bangj.com>
X-Mailer: iPad Mail (16F203)
In-Reply-To: <CAPDSy+4xfo46oJNc7Qxk2NqQCWDKB8LyvzdpFu=9MFRXBwFf3A@mail.gmail.com>
Date: Wed, 10 Jul 2019 15:56:44 -0400
Cc: Stuart Cheshire <cheshire@apple.com>, Robert Sparks <rjsparks@nostrum.com>, draft-ietf-dnssd-push.all@ietf.org, DNSSD <dnssd@ietf.org>, Eric Rescorla <ekr@rtfm.com>
Content-Transfer-Encoding: 7bit
Message-Id: <162B893B-00F6-448A-A4F1-3C10EA38BFE3@bangj.com>
References: <156175221593.21875.9525138908968318905@ietfa.amsl.com> <9E6DE124-9262-4870-A920-4E707A38DC08@bangj.com> <CAPDSy+7om=cBW51cyuPea9nabgJuRV3M+++gA7sy8VzfNpkn6Q@mail.gmail.com> <9F8CFF4A-ABC1-4005-AE65-6CE64940B59F@apple.com> <CAPDSy+6V+ooWDe7XezmWA_XKNQXRAOex8DE5CiTnZdz8zc-9CA@mail.gmail.com> <F6DD5CEF-E644-46E3-84B5-18309F6B44C5@apple.com> <CAPDSy+4xfo46oJNc7Qxk2NqQCWDKB8LyvzdpFu=9MFRXBwFf3A@mail.gmail.com>
To: David Schinazi <dschinazi.ietf@gmail.com>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnssd/KfpcLJSmCKNNTibLjkhPofbK-U4>
Subject: Re: [dnssd] Genart last call review of draft-ietf-dnssd-push-20
X-BeenThere: dnssd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussion of extensions to DNS-based service discovery for routed networks." <dnssd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dnssd>, <mailto:dnssd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnssd/>
List-Post: <mailto:dnssd@ietf.org>
List-Help: <mailto:dnssd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dnssd>, <mailto:dnssd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 10 Jul 2019 19:56:55 -0000

I pointed out earlier that now that we have a RETRY DELAY TLV in DNS Stateful Operations, we can do better than just a TCP RST by not only signaling that a fatal error occurred but also, inform the client not to try reconnecting for a long time.

This means we would always close with a TLS close_notify and if a fatal error occurs, we set the RETRY DELAY. This would keep the broken client from connecting right away again and then following the same error path.

So we should discuss this more before restoring the old behavior.

Tom

> On Jul 10, 2019, at 1:32 PM, David Schinazi <dschinazi.ietf@gmail.com> wrote:
> 
> Thanks Stuart, that makes sense to me - I hadn't loaded the entire context back into memory... Apologies.
> 
> Basically a "graceful" close should always use a TLS close_notify, but any catastrophic failure can use TCP RST.
> 
> David
> 
>> On Tue, Jul 9, 2019 at 7:22 PM Stuart Cheshire <cheshire@apple.com> wrote:
>> On 8 Jul 2019, at 16:05, David Schinazi <dschinazi.ietf@gmail.com> wrote:
>> 
>> > In general the "TLS Alerts" error codes are specific to the operation of TLS itself, not the application running over TLS.
>> > 
>> > If you want to send a graceful close, the tool of choice is close_notify.
>> > If you detect an unrecoverable error and want to abort the connection, I see two options:
>> > (1) forcibly terminate the connection at the DNS layer by sending a DNS error message followed by a TLS close_notify
>> > (2) forcibly terminate the connection at the TCP layer by sending a RST
>> > 
>> > As a client sending, I don't see much value in (1) since all the server can do in either case is free the resources associated with this connection.
>> > As a server sending, I suspect (1) is best unless you were unable to parse anything in which case (2) makes sense.
>> 
>> This is a great candidate for some serious discussion in Montréal.
>> 
>> The draft *used* to say to respond to fatal errors by forcibly aborting the connection with a TCP RST. This is consistent with RFC 8490, DNS Stateful Operations, the underlying technology used by draft-ietf-dnssd-push.
>> 
>> I believe it was actually you who suggested using TLS close_notify:
>> 
>> > From: David Schinazi <dschinazi.ietf@gmail.com>
>> > Subject: Re: [dnssd] Genart last call review of draft-ietf-dnssd-push-20
>> > Date: 2 July 2019 at 12:36:09 PDT
>> > To: Tom Pusateri <pusateri@bangj.com>
>> > Cc: Robert Sparks <rjsparks@nostrum.com>, draft-ietf-dnssd-push.all@ietf.org, DNSSD <dnssd@ietf.org>
>> > Resent-From: alias-bounces@ietf.org
>> > Resent-To: pusateri@bangj.com, cheshire@apple.com, dschinazi.ietf@gmail.com, bs7652@att.com, evyncke@cisco.com, suresh@kaloom.com, Tim Wicinski <tjw.ietf@gmail.com>, tjw.ietf@gmail.com
>> > 
>> > Hi Tom,
>> > 
>> > If the protocol is restricted to TLS over TCP, it should send a TLS close_notify, not a TCP RST.
>> > TLS close_notify is cryptographically guaranteed to originate from the peer,
>> > whereas TCP RST can be injected by an on-path entity to cause truncation attacks.
>> > 
>> > Thanks,
>> > David
>> 
>> I suspect we have a miscommunication going on here.
>> 
>> Robert Sparks, in his Genart review, said:
>> 
>> > Page 23, top of page: Since section 4 restricts this protocol to TLS over TCP,
>> > the "(or equivalent for other protocols)" phrase should be removed.
>> 
>> This is a fine observation.
>> 
>> You then suggested changing TCP RST to TLS close_notify, not realizing (a) this is only for fatal errors, and (b) the precedent already set by RFC 8490.
>> 
>> We have in fact updated the document, but I think this was too hasty, and we should revert it back to the way it was before.
>> 
>> If not, we at least need to have a thorough DNSSD Working Group discussion about this before making a last-minute change to the protocol.
>> 
>> Stuart Cheshire
>>