Skip to content

External DDoS Support for Retry Token Timestamp Disablement #5006

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

Open
kmmago opened this issue Apr 15, 2025 · 2 comments
Open

External DDoS Support for Retry Token Timestamp Disablement #5006

kmmago opened this issue Apr 15, 2025 · 2 comments
Labels
Area: API Area: Core Related to the shared, core protocol logic Area: Security Related to security or quality testing feature request A request for new functionality
Milestone

Comments

@kmmago
Copy link

kmmago commented Apr 15, 2025

Describe the feature you'd like supported

MsQuic Retry Token mechanism uses Timestamp to identify the Key phase. Ask is to make use of Timestamp as an option that can be disabled i.e. if disabled timestamp is not used to get key phase, but rather all active keys (currently 2) are used to decrypt.

Proposed solution

For Ddos and MsQuic shared key Retry Token mechanism to work effectively, it is crucial that the two systems are clock synchronized. This should not be an issue for solutions running within Azure as NTP should take care of that, but can we make this configurable so that it can be disabled when any discrepancies are found with clock synchronization and it starts affecting customers because ddos generated tokens are not correctly verified by msquic server because of drift in timestamps.

Additional context

No response

@kmmago kmmago added the feature request A request for new functionality label Apr 15, 2025
@ProjectsByJackHe
Copy link
Contributor

Tagging our crypto SME @anrossi

Just clarifying:

You're saying that purely using timestamp as a source of truth for synchronizing cryptography is not enough / can be wrong when there is clock drift.

I am having some trouble understanding the proposed solution (not the biggest expert in crypto/RSA).
Is it possible to run through an example scenario?

@nibanks nibanks added Area: API Area: Security Related to security or quality testing Area: Core Related to the shared, core protocol logic labels Apr 16, 2025
@nibanks nibanks added this to the Future milestone Apr 16, 2025
@nibanks
Copy link
Member

nibanks commented Apr 16, 2025

We could build on my proposal for #5005 and change the proposed QUIC_PARAM_GLOBAL_RETRY_CONFIG parameter take an additional parameter to indicate "manual" or "rolling" mode, and if manual mode is specified, N secrets (should we hard code to 2?) may be supplied instead of the base one.

The big downside of manual mode is the requirement to do trial decryption (i.e., try all secrets).

@nibanks nibanks moved this to Planned in DPT Iteration Tracker Apr 24, 2025
@nibanks nibanks changed the title Configuration to disable - Timestamp to detect key phase External DDoS Support for Retry Token Timestamp Disablement Apr 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: API Area: Core Related to the shared, core protocol logic Area: Security Related to security or quality testing feature request A request for new functionality
Projects
Status: Planned
Development

No branches or pull requests

3 participants