Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESNI -> ECHO #207

Merged
merged 28 commits into from
Mar 9, 2020
Merged

ESNI -> ECHO #207

merged 28 commits into from
Mar 9, 2020

Conversation

chris-wood
Copy link
Collaborator

@chris-wood chris-wood commented Mar 8, 2020

This change implements the ESNI -> ECHO design discussed in Singapore. There a couple pending TODOs, particularly around cross-CH HRR binding, but the meat is what's currently being analyzed.

cc @davidben, @grittygrease, @martinthomson, @karthikbhargavan

ekr and others added 27 commits November 3, 2019 06:38
the client creates a ClientHelloInner value with the true SNI,
encrypts that, and puts it into an extension in ClientHelloOuter,
which is what is actually sent to the server.

There are a number of open issues here:

- This design protects against the HRR splicing attack by having
  the transcript include ClientHelloInner.nonce, which relies
  on transcript secrecy. An alternative design would be to
  explicitly include it in the key schedule. However, this
  is a bit odd in split mode.

- You have to use trial decryption on the client to determine whether
  the ClientHelloInner or ClientHelloOuter was accepted, and the client
  doesn't even know when it gets HRR whether it applies to the inner or
  outer CH. Should we consider having an extension indicate
  this? Obviously that leaks some information, however the primary thing
  that it leaks is whether the server knew the ESNI key, which can be
  independently determined by sending a new CH with the relevant config.

This whole dual transcript thing is definitely a weak spot that would
need some extensive analysis.
@chris-wood chris-wood requested review from ekr and kazuho March 8, 2020 00:30
@chris-wood chris-wood mentioned this pull request Mar 8, 2020
We replaced multiple "outer_extension" extensions with a single
"outer_extensions" extension.
Copy link
Collaborator

@ekr ekr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still seems a bit rough, but I think better in the spec than out.

@chris-wood chris-wood merged commit 7d53f5b into tlswg:master Mar 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants