cloudflare / cloudflare/quiche

BoringSSL ML-KEM defaults support

Open
#2,553 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
11.8k
Forks
1.1k
Avg merge
3d 7h
Merged PRs (30d)
16

Description

BoringSSL changed its defaults in its commit https://github.com/google/boringssl/commit/e748facbaa5ef6e53aa51c68328e2b2245325e72 to now enable `SSL_GROUP_X25519_MLKEM768` by default.

This however breaks Quiche's test suite.

As a stopgap, one can of course just disable ML-KEM in the test suite, e.g. by inserting

```
let curves = std::ffi::CString::new("X25519:P-256:P-384").unwrap();
bssl_sys::SSL_CTX_set1_curves_list(ctx_raw as *mut _, curves.as_ptr());
```

at https://github.com/cloudflare/quiche/blob/master/quiche/src/tls/mod.rs#L141, conditionally for tests only - but that's not super great, as it means the test suite runs without PQC coverage.

The problem is just that when changing that default, all the byte lengths of the ClientHello in various tests change, making the change rather involved. I would however suspect that https://github.com/cloudflare/quiche/commit/a6c4dffae95284c7fc73f446cacc7c782daf89cd might be changing the exact set of places that need updating from this?

Contributor guide

Open the contributing guide

Research direction

Start in quiche/src/tls/mod.rs around line 141 and inspect the tests whose ClientHello byte lengths change with BoringSSL's default SSL_GROUP_X25519_MLKEM768. Compare the referenced quiche commit to identify the affected locations, then run the test suite. Done means the tests pass while ML-KEM remains enabled, preserving post-quantum coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking, security, testing
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.