Re: [TLS] Negotiate only symmetric cipher via cipher suites (was: Ala Carte Cipher suites - was: DSA should die)

Daniel Kahn Gillmor <dkg@fifthhorseman.net> Mon, 13 April 2015 16:50 UTC

Return-Path: <dkg@fifthhorseman.net>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B87D41ACECB for <tls@ietfa.amsl.com>; Mon, 13 Apr 2015 09:50:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9] autolearn=ham
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 6wkC5JyKIAk4 for <tls@ietfa.amsl.com>; Mon, 13 Apr 2015 09:49:59 -0700 (PDT)
Received: from che.mayfirst.org (che.mayfirst.org [209.234.253.108]) by ietfa.amsl.com (Postfix) with ESMTP id C62F51ACEDC for <tls@ietf.org>; Mon, 13 Apr 2015 09:49:59 -0700 (PDT)
Received: from fifthhorseman.net (unknown [38.109.115.130]) by che.mayfirst.org (Postfix) with ESMTPSA id 96370F984 for <tls@ietf.org>; Mon, 13 Apr 2015 12:49:56 -0400 (EDT)
Received: by fifthhorseman.net (Postfix, from userid 1000) id 1C11E20088; Mon, 13 Apr 2015 11:49:45 -0500 (CDT)
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: tls@ietf.org
In-Reply-To: <201504131200.00384.davemgarrett@gmail.com>
References: <CAK9dnSyKf7AY11h1i1h+SudRc-NmTZE5wC682YKhNsxnfV5ShQ@mail.gmail.com> <201504130201.53432.davemgarrett@gmail.com> <87sic4v6sa.fsf@alice.fifthhorseman.net> <201504131200.00384.davemgarrett@gmail.com>
User-Agent: Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu)
Date: Mon, 13 Apr 2015 12:49:45 -0400
Message-ID: <874mokug5y.fsf@alice.fifthhorseman.net>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <http://mailarchive.ietf.org/arch/msg/tls/ekxwFmw8jMpcYYWLRBJUsth8NrE>
Subject: Re: [TLS] Negotiate only symmetric cipher via cipher suites (was: Ala Carte Cipher suites - was: DSA should die)
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 13 Apr 2015 16:50:02 -0000

On Mon 2015-04-13 12:00:00 -0400, Dave Garrett wrote:
> On Monday, April 13, 2015 03:14:45 am Daniel Kahn Gillmor wrote:
>> On Mon 2015-04-13 02:01:52 -0400, Dave Garrett wrote:
>> > Assign points to NamedGroup and
>> > SignatureAlgorithm to negotiate PSK usage via the
>> > extensions. (e.g. NamedGroup=0 for plain PSK)
>> 
>> I'm not convinced that we want to use 0 for PSK (this may be purely
>> aesthetic: it makes PSK sound like the "default", and if we later find
>> other non-DH key exchange we want to stuff in this registry, it'd be
>> nice to group them together, and there are no available neighbors close
>> to 0).  I think i'd be ok using some other currently-unallocated
>> codepoint, though.
>
> The thought process was 0 for N/A in the case of PSK without
> (EC)DHE. I would much prefer that only (EC)DHE_PSK be permitted, which
> would make this a non-issue.

Hm, let's look at the representations of ((EC)DHE_)PSK in the scheme you
propose.  You've split the suite using these terms and mechanisms:

 "symmetric" (indicated by ciphersuite list)

 "handshake" (indicated by known_groups extension)

 "signature" (indicated by signature_algorithms extension)

I'd recommend using slightly different terminology, since at least
"handshake" is already overloaded to mean something broader in TLS.

  "symmetric" (ciphersuite list)

  "key agreement" (known_groups extension)

  "authentication" (signature_algorithms extension)


In this model, ECDHE_PSK would have:

   key agreement: ECDHE
  authentication: PSK

while non-(EC)DHE PSK would have:

   key agreement: PSK
  authentication: PSK

right?

we'd only need a key agreement codepoint for PSK in the case we have
non-(EC)DHE, but i have heard some constrained-devices people arguing
for that in the WG, so that seems like a likely outcome.

So if we have to have non-(EC)DHE PSK, what would it mean if a TLS peer
were to try to negotiate:

  key agreement: PSK
 authentication: RSA-PSS

Do we just say "don't do that"?  clients using existing RSA_PSK
ciphersuites [0] use the server's RSA key to encrypt the, uh,
pre-premaster secret, which is then mixed with the PSK to complete the
key exchange.  This is *not* an RSA signature, and we're getting rid of
the encrypted premaster secret approach in TLS 1.3 entirely.  So the
above seems like a novel (and possibly useless) combination.

As for placing the known_groups codepoint at 0: it's conceivable that in
the future someone wants to resurrect SRP or add some other PAKE or any
other non-DH key agreement scheme (with or without forward secrecy and
with or without authentication), in which case it would be aesthetically
nice to have a block of "neighbors" with similar properties -- using 0
doesn't let us do that grouping.

      --dkg

[0] https://tools.ietf.org/html/rfc4279#section-4