Re: [TLS] Final (hopefully) issues with DTLS 1.2

Eric Rescorla <ekr@rtfm.com> Fri, 03 June 2011 20:09 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 159C2E07A9 for <tls@ietfa.amsl.com>; Fri, 3 Jun 2011 13:09:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.977
X-Spam-Level:
X-Spam-Status: No, score=-102.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-1, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 27LhS3CWq4io for <tls@ietfa.amsl.com>; Fri, 3 Jun 2011 13:09:40 -0700 (PDT)
Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by ietfa.amsl.com (Postfix) with ESMTP id 11FD5E06BF for <tls@ietf.org>; Fri, 3 Jun 2011 13:09:39 -0700 (PDT)
Received: by wwa36 with SMTP id 36so1389520wwa.13 for <tls@ietf.org>; Fri, 03 Jun 2011 13:09:39 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.216.64.209 with SMTP id c59mr5757397wed.41.1307131779007; Fri, 03 Jun 2011 13:09:39 -0700 (PDT)
Received: by 10.216.163.143 with HTTP; Fri, 3 Jun 2011 13:09:38 -0700 (PDT)
In-Reply-To: <4DE93640.1030301@gnutls.org>
References: <BANLkTikjMZpYm4Maef1wqnmH4RJ02-6t1g@mail.gmail.com> <4DDA70B6.9030203@gnutls.org> <BANLkTi=M2-qAmcDYb0zxucXFkaLgV+3KGQ@mail.gmail.com> <4DE93640.1030301@gnutls.org>
Date: Fri, 03 Jun 2011 13:09:38 -0700
Message-ID: <BANLkTi=-BW0X-9WTmQHmyDqnGZgHH7M2MQ@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
To: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
Cc: tls@ietf.org
Subject: Re: [TLS] Final (hopefully) issues with DTLS 1.2
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.12
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: Fri, 03 Jun 2011 20:09:41 -0000

On Fri, Jun 3, 2011 at 12:30 PM, Nikos Mavrogiannopoulos
<nmav@gnutls.org> wrote:
> On 05/30/2011 05:38 PM, Eric Rescorla wrote:
>
>> The effect of this restriction is to require the client to send the
>> same ClientHello
>> (except with the cookie that he sent initially). This maps to the TLS semantics
>> where there is only a single ClientHello message sent which is processed
>> immediately. IMO this makes analysis easier since it makes DTLS behave
>> more like TLS.
>> There's no need for the server to do any negotiation at this point,
>> it should simply generate a HelloVerifyRequest with the highest matching
>> version (regardless of cipher suite considerations) and then process the
>> ClientHello de novo [after checking for matching parameters.] Yes, this leaves
>> open the possibility that the handshake will eventually negotiate to some yet
>> lower TLS version, but that's what happens in one round trip with TLS. I
>> would be happy to add a note to the effect that a yet lower version might
>> be negotiated. Though note that it's arguable that RFC 5246 S 7.4.1.3
>> prohibits conditioning version on ciphersuite even for TLS "This field
>> will contain the lower of that suggested by the client
>> in the client hello and the highest supported by the server.  For this
>> version of the specification, the version is 3.3.  (See
>> Appendix E for details about backward compatibility.)"
>
> My implementation of this HelloVerifyRequest was made without using or
> allocating server state. That means it doesn't even know which (DTLS)
> protocols are enabled or not. It could even be implemented in a
> totally different subsystem (a firewall) in front of the server. Thus it
> might not know information the server knows. For me this packet
> should be as simple as possible. Using a fixed DTLS version would
> satisfy this goal. I see no benefit from doing the DTLS version number
> negotiation at this "stateless" point.

I don't see a problem with the server echoing the client's version number
here. Does anyone disagree with making an explicit exemption in the spec
for that?

-Ekr