On Wed, Oct 21, 2015 at 11:13 AM, Short, Todd <tsh...@akamai.com> wrote:

> I like the idea. If the functionality is to be merged, perhaps harmonizing
> the names and contents of the messages (if possible)?
>

Yes. My plan is to name it HelloRetryRequest and get rid of
HelloVerifyRequest.

-Ekr


> -Todd Short
> // tsh...@akamai.com
> // "One if by land, two if by sea, three if by the Internet."
>
> On Oct 21, 2015, at 1:32 PM, Eric Rescorla <e...@rtfm.com> wrote:
>
> Folks,
>
> Several of the remaining TLS 1.3 issues have to do with the
> ClientHello/HelloRetryRequest interaction. To recap, if the
> ClientHello does not contain a KeyShare with an acceptable group, the
> server sends a HelloRetryRequest indicating the correct group,
> and the client sends a ClientHello with the correct group:
>
>          Client                                               Server
>
>          ClientHello
>            + KeyShare              -------->
>                                    <--------       HelloRetryRequest
>
>          ClientHello
>            + KeyShare              -------->
>                                                          ServerHello
>                                                           + KeyShare
>          ...
>
>
> DTLS has a very similar mechanism where the server provides a
> HelloVerifyRequest containing a cookie in order to force the client to
> provide proof of routabilty at its claimed address. The client
> re-sends the ClientHello with the cookie and the handshake restarts.
>
> It seems natural to try to merge these mechanisms, but this raises
> the question of whether the handshake hashes should continue through
> the rejection exchange (https://github.com/tlswg/tls13-spec/issues/104
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_tlswg_tls13-2Dspec_issues_104&d=CwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=QBEcQsqoUDdk1Q26CzlzNPPUkKYWIh1LYsiHAwmtRik&m=qs-tzs_SwwiU6AH8Y7_q_TnVqYX4ruwLo5qqkgP8HDw&s=o3UsBAmOLmYeA_GnNYIEo3Ila7mxSbS5EkfOOuVR4dY&e=>
> ).
> The tension here is that you want to be able to have a stateless
> rejection (to avoid DoS in the DTLS scenario) but having things
> makes it much harder to analyze the handshake's resistance to
> downgrade attacks.
>
> Recently, Karthik, Martin Thomson, and I were talking and I think we've
> come to a good resolution. The basic observation is that it's possible
> to continue the handshake hash through the rejection exchange while
> still being stateless. We are aware of two main techniques here:
>
> - The server offloads its handshake hash state into the cookie
>   it provides in the HelloRetryRequest (we'll need the cookie here
>   in any case to support the DTLS case. The cookie obviously needs
>   to be cryptographically protected, but that's what you're supposed
>   to do for DTLS anyway
>   (see: https://tools.ietf.org/html/rfc6347#section-4.2.1
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__tools.ietf.org_html_rfc6347-23section-2D4.2.1&d=CwMFaQ&c=96ZbZZcaMF4w0F4jpN6LZg&r=QBEcQsqoUDdk1Q26CzlzNPPUkKYWIh1LYsiHAwmtRik&m=qs-tzs_SwwiU6AH8Y7_q_TnVqYX4ruwLo5qqkgP8HDw&s=FqKoPI3ZlKRELrbW0Jr1_9Vs29f-gFLX0bVRoOy3rJk&e=>
> )
>
> - The server reconstructs the original ClientHello and HelloRetryRequest
>   based on the re-sent ClientHello. This is possible because there are
>   very strict rules about re-sent ClientHello construction
>   (namely: send the same ClientHello except just add a KeyShareEntry
>   for the indicated group). The cookie should also allow the server
>   to double-check this (and will also need to indicate the reason
>   for rejection).
>
> Because the handshake hash is continued through the entire handshake,
> it's much easier to analyze the downgrade properties. Moreover,
> servers which don't need stateless reject (because there is some
> other connection construct as with TLS over TCP or DTLS with
> ICE) don't need either of these techniques. They can just continue
> the handshake hash in the usual way.
>
> This seems like it fulfills both imperatives, at the primary cost of
> some additional complexity on servers who really care about
> statelesness (the client is indifferent to the server's implementation
> strategy).
>
> If this sounds good to people, I'll work up a PR for this, but
> really all it is is saying that you don't reset the hash and
> then a non-normative appendix describing stateless implementation
> techniques.
>
> Thoughts? Does anyone see anything wrong with this?
> -Ekr
> _______________________________________________
> TLS mailing list
> TLS@ietf.org
> https://www.ietf.org/mailman/listinfo/tls
>
>
>
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to