Re: [tcpinc] Review of draft-bittau-tcpinc-tcpeno-01

David Mazieres <> Mon, 24 August 2015 22:48 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id ADCC81AD352 for <>; Mon, 24 Aug 2015 15:48:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -0.91
X-Spam-Status: No, score=-0.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HK_RANDOM_ENVFROM=0.001, HK_RANDOM_FROM=1, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 4-iYQfV5wAIC for <>; Mon, 24 Aug 2015 15:48:49 -0700 (PDT)
Received: from ( [IPv6:2001:470:806d:1::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C5F6B1B29C5 for <>; Mon, 24 Aug 2015 15:48:49 -0700 (PDT)
Received: from ( []) by (8.14.7/8.14.7) with ESMTP id t7OMmfUW014240; Mon, 24 Aug 2015 15:48:41 -0700 (PDT)
Received: (from dm@localhost) by (8.14.7/8.14.7/Submit) id t7OMmejl005073; Mon, 24 Aug 2015 15:48:40 -0700 (PDT)
X-Authentication-Warning: dm set sender to using -f
From: David Mazieres <>
To: Stephen Farrell <>, Stephen Kent <>,
In-Reply-To: <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
Date: Mon, 24 Aug 2015 15:48:39 -0700
Message-ID: <>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <>
Subject: Re: [tcpinc] Review of draft-bittau-tcpinc-tcpeno-01
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: David Mazieres expires 2015-11-22 PST <>
List-Id: "Discussion list for adding encryption to TCP." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 24 Aug 2015 22:48:50 -0000

Stephen Farrell <> writes:

>> The issue relates to ciphers because TCP-ENO can be used to negotiate
>> cipher suites.  
> It is not at all clear to me that that'd be a good plan. I think
> the gross-hack that it may one-day open up is unlikely to be worth
> it, and negotiating once is bad enough so it'd seem like a bad
> plan to do it twice, which I think would be the inevitable outcome.

Sorry, I can't reconcile the first and last sentence of that paragraph.
If negotiated TCP-ENO spec implies a specific cipher suite, then you
only negotiate once.  If TCP-ENO specs have multiple cipher suites, then
you have two negotiations, first the ENO-level meta-negotiation on how
to negotiate, then a second cipher suite within the particular
encryption spec.

Your first sentence reads like a recommendation *not* to tie a single
cipher suite to a single TCP-ENO suboption, in which case you'd need a
separate cipher suite negotiation mechanism.  Your second sentence
implies you consider two rounds of negotiation a bad idea, in which case
why wouldn't you want ENO to negotiate the cipher suite.  We value your
opinion on this question, so please clarify!

> But so long as tcpcrypt is not a WG document that's your call I guess.

We are currently rewriting tcpcrypt to consume three ENO suboptions, one
for P-256+AES-128, one for P-512+AES-256, and one for
Curve25519+Chacha/Poly1305.  Compared to the existing draft, this lets
us ditch PKCONF and pretty much everything except the DH parameters in
INIT1 and INIT2 messages.  We are also ditching RSA (which at this point
was there "just in case," because tcpcrypt had to be future compatible
with things other than DH, but now ENO frees us from worrying about
future compatibility).  The result is a much simpler document.

But this is all easy to change until we've updated the code to match the
forthcoming document, so high-level feedback now would be appreciated.

> My take fwiw would be that a TCP option should really only signal
> turning on TCPINC full stop. And that TCPINC initially ought only
> have two ciphersuites defined, one for use now and a backup. But
> TPCINC will have to support some form of algorithm agility so that
> that pair of ciphersuites can be changed over time. So yes some
> form of agility is needed but it's not clear to me that a TLS-like
> scheme is best.

Given that latency is critical, at a minimum we have to start the
public-key cipher negotiation in the SYN-ACK of a three-way handshake.
So why not have the TCP-ENO suboption just specify the ciphersuite?

> If/when practical deployment of DH values becomes feasible then
> it'd be time to discuss how to use that. But not now when that is
> not, if I understand correctly, possible to do that.

Well, it is possible today.  What's not not possible is to do that and
enable TCP timestamp for the same connection.