-
Notifications
You must be signed in to change notification settings - Fork 8
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
Review: Key generation #201
Comments
TODOs noted on first review pass:
About:
About
About
About
About
About
|
The early data key generation is hard to follow at the moment. The logic is this: When establishing which PSK to use, the peers call While it may be true that the server stops parsing PSK binders immediately once it found an acceptable PSK, and thus the last call to Finally, the early secret is then re-generated in |
Suggestion: |
Logically, we need to take care of the following layers of key schedule:
Plus, one function specifically for the PSK -> PSK binder derivation. The core functions for those steps are
all of which have already been upstreamed. The functions that this issue is about are the convenience functions built on top of this. Specifically, the following functions provide some flattening of (2)+(3):
Nitpick: Not every secret generated in (2) is converted to a traffic secret in (3). For example, the exporter secrets aren't. Should we reflect this in the naming of the functions? E.g. Beyond that, we currently have the following:
|
The purpose of this task is to review the following functions and prepare them for upstreaming:
mbedtls_ssl_generate_handshake_traffic_keys()
mbedtls_ssl_tls1_3_derive_master_secret()
mbedtls_ssl_generate_resumption_master_secret()
mbedtls_ssl_generate_application_traffic_keys()
mbedtls_ssl_generate_early_data_keys()
mbedtls_ssl_create_binder()
Those are mostly simple wrappers around the HKDF-based key derivation functions of TLS 1.3 which have already been upstreamed.
Those functions operate on the whole SSL context. Ideally, they'd be standalone like the other key schedule functions. If that's no feasible, it should be documented which fields of the SSL context are required as input, and which fields are being set -- this gives us a chance to write some unit tests nonetheless.
Acceptance criterion:
ssl_tls13_keys.[ch]
as it is in the prototype.The text was updated successfully, but these errors were encountered: