On Sun, Nov 24, 2019 at 10:46 PM Rob Sayre <say...@gmail.com> wrote:

> Hi,
>
> This client now interoperates with Cloudflare and the https://defo.ie
> copy of OpenSSL. It's tri-licensed under the Apache 2, MIT, and ISC
> licenses. It won't be merged until draft-06 is out, at a minimum.
>
> https://github.com/ctz/rustls/pull/318/files
>
> I found some things confusing in the draft:
>
> 1) The draft uses field names that carry a lot of weight, but they're not
> always explained in prose.
> 2) I think the draft could benefit from a more procedural description of
> the steps required, like one might read in a WHATWG draft. This preference
> could just be what I'm used to, though.
>

This isn't really IETF style, nor do I think it's clearer.


3) It's not clear what to do if the server doesn't consult the (E)SNI at
> all. For example, Cloudflare doesn't seem to check things for big clients
> like medium.com, which presumably have a dedicated IP. In newer PRs and
> proposals, should a bogus encrypted SNI from the client trigger a retry
> request even if the server doesn't need the SNI?
>

The handling of SNI is defined in 6066. This document just inherits that.


4) The draft seems to require more precise explanation around the key
> exchange, since it uses some functions from the TLS 1.3 key schedule in a
> novel way. I saw weird names and patterns in both rustls and NSS. For
> example, in rustls, the secret input "Z" ended up being named
> "premaster_secret". It works, but there's a semantic mismatch.
>

This seems like an implementation matter, especially as the term
premaster_secret doesn't appear in 8446 at all.

-Ekr


> thanks,
> Rob
>
> [0] Example:
> https://html.spec.whatwg.org/multipage/browsers.html#crossorigingetownpropertyhelper-(-o,-p-)
>
> On Sat, Oct 26, 2019 at 3:31 PM Rob Sayre <say...@gmail.com> wrote:
>
>> Hi,
>>
>> I think I have a working ESNI client, but I'm encountering a strange
>> error testing with Cloudflare.
>>
>> I initially tested with "cloudflare.com", but found this was a bad idea,
>> because that host doesn't seem to require an SNI or ESNI. So, a bogus ESNI
>> triggered no errors..
>>
>> When my client sends an ESNI to a Cloudfront-fronted domain, I get a
>> handshake_failure error (40). According to the -02 draft, this should only
>> happen if the server fails to negotiate TLS 1.3. I've got my client
>> configured for TLS 1.3 only, so this shouldn't be an issue. When I add an
>> unencrypted SNI to an otherwise identical ClientHello, everything works
>> over TLS 1.3. If there are problems with my ESNI encryption, I should see
>> other errors. Things like "illegal_parameter" or "decrypt_error", right?
>>
>> In Wireshark, I can at least see that my encrypted_server_name extension
>> matches Firefox's cipher and key share entries, and the lengths of
>> record_digest and encrypted_sni are the same. Firefox does send some
>> extensions I don't, like ALPN. Does the absence of unencrypted SNI imply
>> the presence of other extensions?
>>
>> I also wondered about extension order. Since the ClientHello.key_share is
>> part of the ESNI calculation, does it need to appear first in the
>> extensions list?
>>
>> thanks,
>> Rob
>>
> _______________________________________________
> 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