Thank you Eric

From: Eric Rescorla <e...@rtfm.com>
Date: Tuesday, March 7, 2017 at 2:50 PM
To: Roelof Du Toit <roelof_dut...@symantec.com>
Cc: David Benjamin <david...@chromium.org>, "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Allow KeyShare in HelloRetry if not advertised in 
ClientHello?

This appears in https://tlswg.github.io/tls13-spec/#resumption-and-psk

"As the server is authenticating via a PSK, it does not send a Certificate or a 
CertificateVerify message. When a client offers resumption via PSK, it SHOULD 
also supply a “key_share” extension to the server to allow the server to 
decline resumption and fall back to a full handshake, if needed. "

-Ekr




On Tue, Mar 7, 2017 at 11:35 AM, Roelof Du Toit 
<roelof_dut...@symantec.com<mailto:roelof_dut...@symantec.com>> wrote:
Thank you.

The following text in 4.2.7 prompted my scenario:
""
A server which receives an “early_data” extension MUST behave in one of three 
ways:"
..
- Request that the client send another ClientHello by responding with a 
HelloRetryRequest. A client MUST NOT include the “early_data” extension in its 
followup ClientHello.
""

My conclusion from your replies is that the burden is on the client to avoid 
the scenario by including an empty key_share (with corresponding sigalgs and 
supported_groups) when sending early_data with psk_ke mode (vs psk_dhe_ke).  It 
might be worth warning implementers about that in the spec.

--Roelof

From: David Benjamin <david...@chromium.org<mailto:david...@chromium.org>>
Date: Tuesday, March 7, 2017 at 1:05 PM
To: Eric Rescorla <e...@rtfm.com<mailto:e...@rtfm.com>>, Roelof Du Toit 
<roelof_dut...@symantec.com<mailto:roelof_dut...@symantec.com>>
Cc: "tls@ietf.org<mailto:tls@ietf.org>" <tls@ietf.org<mailto:tls@ietf.org>>
Subject: Re: [TLS] Allow KeyShare in HelloRetry if not advertised in 
ClientHello?

On Tue, Mar 7, 2017 at 12:49 PM Eric Rescorla 
<e...@rtfm.com<mailto:e...@rtfm.com>> wrote:
On Tue, Mar 7, 2017 at 9:44 AM, Roelof Du Toit 
<roelof_dut...@symantec.com<mailto:roelof_dut...@symantec.com>> wrote:
All,

The current language in https://tlswg.github.io/tls13-spec/#rfc.section.4.1.4 
states:
As with ServerHello, a HelloRetryRequest MUST NOT contain any extensions that 
were not first offered by the client in its ClientHello, with the exception of 
optionally the “cookie” (see Section 
4.2.2<https://tlswg.github.io/tls13-spec/#cookie>) extension.

I am analyzing the following message flow:
ClientHello
+ early_data
+ psk_key_exchange_modes = psk_ke
+ pre_shared_key --------->
(Early Data) ---------> *reject*
<--------- HelloRetryRequest (not allowed to add key_share)
ClientHello
+ supported_groups
+ key_share ---------> *not supported*

At that point in the flow the server is not allowed to send another 
HelloRetryRequest.  To avoid that the client would need some hints in the 
HelloRetryRequest.
Would it be possible to allow an exception to send key_share and/or 
supported_groups in a HelloRetryRequest if not offered in ClientHello?

I would prefer not. If the client is willing to do DH, it should offer KeyShare 
in its initial ClientHello.

 In particular, per 4.2.5:

"Clients MAY send an empty client_shares vector in order to request group 
selection from the server at the cost of an additional round trip."

David

_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to