Re: [tcpinc] TCP's treatment of data in SYN packets
Derek Fawcus <dfawcus+lists-tcpcrypt@employees.org> Sun, 31 July 2016 21:26 UTC
Return-Path: <dfawcus@employees.org>
X-Original-To: tcpinc@ietfa.amsl.com
Delivered-To: tcpinc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 05AEF12D0D8 for <tcpinc@ietfa.amsl.com>; Sun, 31 Jul 2016 14:26:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.566
X-Spam-Level:
X-Spam-Status: No, score=-0.566 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_SORBS_WEB=0.77, SPF_HELO_PASS=-0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=employees.org; domainkeys=pass (1024-bit key) header.from=dfawcus+lists-tcpcrypt@employees.org header.d=employees.org
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 xsfdz0zPSPx2 for <tcpinc@ietfa.amsl.com>; Sun, 31 Jul 2016 14:26:50 -0700 (PDT)
Received: from incoming.kjsl.com (inbound02.kjsl.com [IPv6:2001:1868:2002::144]) (using TLSv1.2 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 016E912D0A8 for <tcpinc@ietf.org>; Sun, 31 Jul 2016 14:26:48 -0700 (PDT)
Received: from cowbell.employees.org ([65.50.211.142]) by ironport02.kjsl.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jul 2016 21:26:47 +0000
Received: from cowbell.employees.org (localhost [127.0.0.1]) by cowbell.employees.org (Postfix) with ESMTP id 3E6A19CC81; Sun, 31 Jul 2016 14:26:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=employees.org; h=date:from :to:cc:subject:message-id:references:mime-version:content-type :in-reply-to; s=selector1; bh=CfVC6fv4T3fnRBxoYrDDfFqsFws=; b=NB sD2a9vwFJSjPmLUJBucXf704zIExfmyHF83A1SMtGwYW/yIdMtJJYi7hA/1DrDNx Hlu1tYFAQdvf3DOOklpzTpd75VTRSKUXdGp6q4u9ljxYGosKkYpqUZddOuvprp6c vuYg6z4luzrQ3LCjCgXwP4P+fb6HrzLvlQTeuD9gI=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=employees.org; h=date:from :to:cc:subject:message-id:references:mime-version:content-type :in-reply-to; q=dns; s=selector1; b=dzsSgkIJ0R9FxX0vcbfcDXtWErrz xcj8rzH8NqIpq/GrwmQyFTxFCowjTPpSMhWaa1zE2q/3nnyRDSuAZnMzI3LbcdNK FsBuorT+fp2YU9qzhQMKlaPbpo/rCfjHRlsef0BjJQsLE5ssJkhj9KQOuxRYpk3R 5gG138JFjKlhivk=
Received: by cowbell.employees.org (Postfix, from userid 1736) id 2B5689CC7C; Sun, 31 Jul 2016 14:26:46 -0700 (PDT)
Date: Sun, 31 Jul 2016 22:26:46 +0100
From: Derek Fawcus <dfawcus+lists-tcpcrypt@employees.org>
To: Joe Touch <touch@isi.edu>
Message-ID: <20160731212646.GA46181@cowbell.employees.org>
References: <CAJU8_nUPrm9JJMrrMbL5+FpP-9CKC6EkidCry9UuZA5ZfyJtoA@mail.gmail.com> <579A8223.8050308@isi.edu> <CAJU8_nXSxr7ykC1TwptBmyP8pNccz52ozq=hF7-EYiaMdDeLBQ@mail.gmail.com> <579BA470.3000405@isi.edu> <CAJU8_nXjhHH1eEXPA3hvhJ3YXsP_v2djGX=X2p9+wyn767Hm5A@mail.gmail.com> <adcaa33a-3bf5-e63a-bd19-fd165b16aa7d@wizmail.org> <87oa5fniu0.fsf@ta.scs.stanford.edu> <6E733C6E-DCEE-43A9-B320-E1266E7CE827@isi.edu> <87lh0ioggw.fsf@ta.scs.stanford.edu> <579D6A2B.9060209@isi.edu>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <579D6A2B.9060209@isi.edu>
User-Agent: Mutt/1.6.1 (2016-04-27)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpinc/u8v4DeAovb0zXkaOcAW_sqNQzek>
Cc: David Mazieres expires 2016-10-28 PDT <mazieres-j4dcjhhagft96r5khghrdhdeus@temporary-address.scs.stanford.edu>, tcpinc@ietf.org, Jeremy Harris <jgh@wizmail.org>
Subject: Re: [tcpinc] TCP's treatment of data in SYN packets
X-BeenThere: tcpinc@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Discussion list for adding encryption to TCP." <tcpinc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpinc>, <mailto:tcpinc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpinc/>
List-Post: <mailto:tcpinc@ietf.org>
List-Help: <mailto:tcpinc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpinc>, <mailto:tcpinc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 31 Jul 2016 21:26:52 -0000
On Sat, Jul 30, 2016 at 08:02:03PM -0700, Joe Touch wrote:
>
> On 7/30/2016 4:26 PM, David Mazieres expires 2016-10-28 PDT wrote:
> > No, I'm saying *if* the application knows the other end of a connection
> > supports ENO,
> It doesn't until the SYN-ACK.
>
> Let me put it this way - if you know the other end supports ENO, then
> you clearly don't need to negotiate it in the SYN. Is that what you do?
If I am contacting a server I control from some arbitrary point within the
internet, then I do know what the far end supports. It may well be that
a middlebox interfers with the connection, but I can know a priori how
the other end would respond assuming no interfering middleboxes.
So for some scenario's:
a) connecting to my home machines from my parents network - I know I will
have an unadulterated connection between machines I control.
b) connecting to my home machines from my office - I have a NAT'ed
connection with known characteristics.
c) connecting so my home machine from say an airport lounge - I almost
certainly have a NAT'ed connection, and with unknown characteristics.
So I can know the box I am connecting to should have a known set of capabilities.
As to why ENO still needs to be negotiated, well because the box connecting
to my home machine may well be from one which does not support ENO.
> > and in particular *if* the application intends to abort an
> > unencrypted connection anyway,
> TCP needs to be the one making that decision, because an "app" that
> doesn't make that decision could be experiencing TCP semantics that are
> incorrect.
>
> > *then* it probably makes sense for the
> > application to send data in a SYN segment.
> An app doesn't make that decision - it can do things to prevent it from
> happening (i.e., waiting for the connection to be open before writing
> data), but it can't force this behavior. It's not in the user interface
> defined in RFC793, so you can't assume it (unless you're creating this
> definition solely for ENO, which seems far out of scope to me).
I don't really view the model APIs mentioned in RFCs as perscriptive,
rather the over the wire formats are. So if something can be sent over
the wire, a user interface can be created to exercise it.
[snip]
> Then there's the part about non-compliant hosts - actually, "using" data
> in the SYN violates the semantics of TCP for *compliant* hosts.
Well RFC793 implies that, I've closest I/ come to spotting the bit stating
that is the text saying data in the syn is handled in the established state.
However, other than strictly legalistic reading, I can't see a valid objection.
A syn can contain data. A syn-act can contain data. The syn-ack data could be
perceived to be a function of the syn data, but how does it harm any third party
if it is or is not? The worst that can happen (in this case) would seem to be
a failure to establish an connection, and a wasted RTT (or two).
> The answer is simple - if the receiver (ENO or otherwise) uses the
> information in the SYN data (i.e., it changes its behavior in any way
> based on that content), then it MUST happen after TFO only (at this
> point) or a true equivalent. There is *no* aspect of ENO that currently
> supports that level of equivalence - i.e., *validated* by a SYN cookie.
> You don't get to make that assumption based on any "belief" of the other
> end's state
But one does based upon knowledge of the other ends state; so it won't
necessarily be available for opportunistic cases, but for some cases
connecting to know end nodes it will.
> > You also did not answer my question
> > about whether you would support a sentence saying active openers SHOULD
> > abort non-ENO connections if they have sent SYN data (though at this
> > point I think such a sentence would be good).
> MUST, and it MUST occur inside TCP. You can't assume that happens at the
> application (user) layer.
>
> Note that I already said this when I gave you two choices:
> a) never send anything you can't retract in the SYN-ACK
> or
> b) always abort - inside TCP - a connection where you would have needed
> to do that retraction
So in the scenario I give above, if the host one know's about does not
support ENO, then there is a MITM messing with things, and I'd suggest
one should abort the connection. As to if the stack should then attempt
an automatic retry w/o ENO, I've not given enough though.
DF
- Re: [tcpinc] TCP's treatment of data in SYN packe… Black, David
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Black, David
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Black, David
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Black, David
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Derek Fawcus
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Jeremy Harris
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] [tcpm] TCP's treatment of data in SY… Derek Fawcus
- [tcpinc] TCP's treatment of data in SYN packets Kyle Rose
- Re: [tcpinc] [tcpm] TCP's treatment of data in SY… Joe Touch
- Re: [tcpinc] [tcpm] TCP's treatment of data in SY… Gavin McCullagh
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Jeremy Harris
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Derek Fawcus
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Jeremy Harris
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Wesley Eddy
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Joe Touch
- Re: [tcpinc] TCP's treatment of data in SYN packe… Derek Fawcus
- Re: [tcpinc] TCP's treatment of data in SYN packe… David Mazieres
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Kyle Rose
- Re: [tcpinc] TCP's treatment of data in SYN packe… Yuchung Cheng