Skip to content

docs: Add gRPC Post-Quantum Cryptography Guide - #14245

Open
lqiu96 wants to merge 1 commit into
mainfrom
pqc-user-guide-grpc
Open

lqiu96 wants to merge 1 commit into
mainfrom
pqc-user-guide-grpc

Conversation

@lqiu96

@lqiu96 lqiu96 commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

This pull request expands the Post-Quantum Cryptography (PQC) User Guide in docs/post_quantum_cryptography_guide.md to cover gRPC transport in addition to HTTP/JSON.

This PR is stacked on top of PR #13963 (pqc-user-guide).

Highlights

  • General PQC Architecture: Updates the guide to introduce PQC concepts, the Store-Now, Decrypt-Later (SNDL) threat model, and hybrid key exchange across Google Cloud Java client libraries.
  • Dedicated gRPC Transport Section (Section 3):
    • Details the default grpc-netty-shaded transport engine bundling BoringSSL (netty-tcnative-boringssl-static) with built-in PQC hybrid key exchange support (X25519MLKEM768) in gRPC-Java 1.83.0+.
    • Explains handshake negotiation with Google Cloud Front End (GFE) endpoints and graceful fallback to classical TLS.
    • Explains gRPC HTTP/2 long-lived multiplexed channels (ManagedChannel) and how TLS overhead occurs once upon connection establishment.
  • Verification (Section 7):
    • Explains why standard JVM -Djavax.net.debug flags do not capture gRPC handshakes when using grpc-netty-shaded.
    • Documents Netty SSL debug logging (-Dio.grpc.netty.shaded.io.netty.handler.ssl=DEBUG) and ClientInterceptor response header verification.
  • Custom Configurations (Section 8):
    • Documents custom Netty SSL context configuration via InstantiatingGrpcChannelProvider.Builder.setChannelConfigurator(...).

@lqiu96
lqiu96 requested review from a team as code owners September 2, 2026 18:39
@lqiu96
lqiu96 marked this pull request as draft September 2, 2026 18:39

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request expands the Post-Quantum Cryptography (PQC) User Guide to cover both gRPC and HTTP/JSON transports, adding comprehensive sections on gRPC transport architecture, platform compatibility, verification methods, and custom configurations. The review feedback suggests correcting the Netty SSL logging instructions to configure the logging framework directly rather than using a JVM system property, and removing an unused import in the gRPC configuration code snippet.

Comment thread docs/post_quantum_cryptography_guide.md Outdated
Comment thread docs/post_quantum_cryptography_guide.md Outdated
Base automatically changed from pqc-user-guide to main September 5, 2026 01:07
@lqiu96
lqiu96 force-pushed the pqc-user-guide-grpc branch 8 times, most recently from 49f06d4 to 8ba5144 Compare September 8, 2026 21:19
@lqiu96
lqiu96 requested a review from blakeli0 September 8, 2026 21:38
@lqiu96
lqiu96 marked this pull request as ready for review September 8, 2026 21:38
- Only the initial **TLS 1.3 cryptographic handshake** performed when establishing a connection to Google Cloud service endpoints. The client automatically negotiates hybrid post-quantum key exchange (`X25519MLKEM768`) instead of classical-only key exchange (`X25519`).

### Supported Key Exchange Algorithms & Negotiation
Across all supported transports, Google Cloud Java client libraries negotiate TLS 1.3 key exchange by offering a preference-ordered list of post-quantum and classical named groups. Today, the primary algorithms negotiated with Google Cloud endpoints are:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

all supported transports sounds like there are more transports than grpc and httpjson

gRPC is the default transport across Google Cloud Java client libraries.

#### Minimum Required Versions
We recommend using Google Cloud's **`libraries-bom` (version `26.88.0+`)** to guarantee that dependencies have compatible, required versions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Maybe highlight that libraries-bom is recommended and managing dependencies directly is discouraged?

If you need to use Conscrypt for high-performance TLS but want to explicitly disable post-quantum hybrid groups (for example, to isolate a network middlebox issue or benchmark legacy performance):
### 4.1 Custom gRPC Configurations

#### Option 1: Forcing Classical-Only Key Exchange (Disabling PQC)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

What are the use cases of disabling PQC?

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.

2 participants