-
Notifications
You must be signed in to change notification settings - Fork 635
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
Tighten up ticketer decryption #2022
Conversation
Benchmark resultsInstruction countsSignificant differencesClick to expand
Other differencesClick to expand
Wall-timeSignificant differencesThere are no significant wall-time differences Other differencesClick to expand
Additional informationCheckout details:
|
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2022 /- ##
==========================================
Coverage 94.24% 94.25% 0.01%
==========================================
Files 97 97
Lines 21724 21787 63
==========================================
Hits 20473 20535 62
- Misses 1251 1252 1 ☔ View full report in Codecov by Sentry. |
827b6f1
to
25eca49
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, just two non-blocking comments/questions.
25eca49
to
2640200
Compare
See RFC5077 for the semantics and purpose of this. Included it in the AAD, but also early-reject incorrect values. This is belt-and-braces, we could remove either without a security problem. This should slightly improve the performance of `TicketSwitcher`. Note that `key_name` is not really a secret: tickets are issued and offered in plaintext in TLS1.2, and issued privately but offered in plaintext in TLS1.3. Therefore it is visible to an attacker in privileged network position, or able to complete a handshake with the server.
It is impossible in this interface for the caller to notice that trailing data was present (compared to `Codec::read`), so this function must do it. The immediate impetus for this change is the usage of `ServerSessionValue::read_bytes()` after ticket decryption. Fix a test in handshake_test that was sensitive to this.
2640200
to
81b68f4
Compare
These changes aim to make it harder to mount any theoretical attack against AEAD decryption due to the AEADs we use being not key-committing. The best current attacks against this aren't better than brute force, so there is no security issue here.
The last commit is a little unrelated, but is along for the ride after I noticed the poor error in the test changed in the second commit.
fixes #2023