On Wed, Oct 17, 2018 at 4:41 PM Martin Rex <m...@sap.com> wrote:

> Eric Rescorla <e...@rtfm.com> wrote:
> > Martin Rex <m...@sap.com> wrote:
> >
> > > Sean Turner <s...@sn3rd.com> wrote:
> > > >
> > > > This is the working group last call for the
> > > > "Issues and Requirements for SNI Encryption in TLS"
> > > > draft available at
> > > > http://datatracker.ietf.org/doc/draft-ietf-tls-sni-encryption/.
> > > > Please review the document and send your comments to the list
> > > > by 2359 UTC on 31 October 2018.
> > >
> > >
> > > I think the idea of encrypted SNI is inherently flawed in its concept.
> > >
> >
> > It's pretty late to raise this point
>
> Nope, I've raised this *EVERY* time on the list when the dead horse was
> newly beaten.
>

And there have been multiple consensus calls to the contrary, so this
is just re-raising a decided issue.


>> As it is, there are a number of servers which desperately require
> >> the presence of TLS extension SNI, or will fail TLS handshakes either
> >> by choking and dropping connections (Microsoft IIS 8.5+) or by
> >> very unhelpful alerts (several others), and also HTTP/2.0 requires
> >> unconditional cleartext presence of TLS extension SNI.  Any kind of
> >> heuristics-based approach for clients to guess whether or not to
> >> send TLS extension SNI is flawed from the start.  If a network
> >> middlebox can make a client present a cleartext TLS extension SNI
> >> by refusing connections without cleartext TLS extension SNI,
> >> the entire effort becomes pretty useless.
> >
> > Yes, clients must not fall back to cleartext SNI in this case.
>
> Please give a clear deterministic algorithm how a client can
> tell apart a server that requires cleartext SNI from a server
> that does not want cleartext SNI.
>

This isn't really the relevant question, as there are many servers
now which do not require SNI.

The relevant question is how a client can be made aware that
a server does support ESNI and can have high confidence that
it will accept it. Such an algorithm is provided in:
https://tools.ietf.org/html/draft-ietf-tls-esni-01#section-4

Note that as explained in detail, it is not necessary that all clients
send ESNI to that server.





>   It is necessary
> > > that the client knows reliably that a hostname must not be sent
> > > in the clear, including when the connection fails for unknown reasons,
> > > and only a new URI method will reliably provide such a clear
> distinction.
> > >
> >
> > I don't agree with this claim, given that we have a number of other
> proposed
> > mechanisms for the client to know when ESNI is allowed, including DNS.
>
> DNS is a non-starter for several reasons.
>

> Ever heard of firewalled networks, private DNS universes and HTTP CONNECT
> proxies?
>

Yes, I've heard of all of these. They're not relevant to the question at
hand.



> >> By sending TLS extension SNI in the clear to a server, the client
> >> tells that server:  I am going to perform an rfc2818 "HTTP over TLS"
> >> section 3.1 "Server Endpoint Identification" matching
> >
> > I don't know where you get this from, given that RFC 6066 doesn't
> > even cite 2818.
>
> Simply to avoid a downref.  I should not have to explain this to you.
>
> rfc2818, section 3.1:
>
>    3.1.  Server Identity
>
>    In general, HTTP/TLS requests are generated by dereferencing a URI.
>    As a consequence, the hostname for the server is known to the client.
>    If the hostname is available, the client MUST check it against the
>    server's identity as presented in the server's Certificate message,
>    in order to prevent man-in-the-middle attacks.
>
> rfc6066, section 3:
>
>    3.  Server Name Indication
>
>    TLS does not provide a mechanism for a client to tell a server the
>    name of the server it is contacting.  It may be desirable for clients
>    to provide this information to facilitate secure connections to
>    servers that host multiple 'virtual' servers at a single underlying
>    network address.
>
>
> It looks blatantly obvious to me that
>   rfc2818:  "check the hostname of the server agains the server's identity
>              as presented in the server's Certifcate messag"
> and
>   rfc6066:  "a mechanism for a client to tell a server the name of the
> server
>              it is contacting"
>

It may be obvious to you, but I don't believe it's correct. For instance,
the server might be using some form of certificates other than X.509.

> In protocol version SSLv3->TLSv1.2, encryption keys are only established

> >
> >> *AFTER* successful authentication of the server through its server
> >> certificate. So it was obviously impossible to encrypt the information
> >> whose only purpose it was to allow the server to decide *which* TLS
> Server
> >> certificate to use for authentication (hen-and-egg).
> >
> > This isn't really correct: the mechanism for encrypting SNI itself would
> > actually work fine in previous versions of TLS as well.
>
> Actually, no, it will not work at all in TLSv1.2
> (this would not be TLSv1.2 anymore, or an entirely different TLS extension)
>
> My server-side implementation of TLS extension SNI is entirely outside
> of the TLS protocol stack.


This is actually quite compatible with the encrypted SNI mechanism
specified in draft-ietf-tls-esni, because it was designed to work
with split architectures.

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

Reply via email to