Skip to content

feat(istio): add option to use post-quantum key exchange#2752

Open
lemmarathon wants to merge 1 commit into
defenseunicorns:mainfrom
lemmarathon:pqc
Open

feat(istio): add option to use post-quantum key exchange#2752
lemmarathon wants to merge 1 commit into
defenseunicorns:mainfrom
lemmarathon:pqc

Conversation

@lemmarathon

Copy link
Copy Markdown

Description

Add an opt-in, default-off knob that forces post-quantum hybrid key exchange (X25519MLKEM768) across the Istio mesh by setting COMPLIANCE_POLICY=pqc on istiod and ztunnel. Supported only on the non-FIPS upstream flavor.

  • src/istio/common/zarf.yaml: shared ISTIO_COMPLIANCE_POLICY chart variable on the istiod (pilot.env.COMPLIANCE_POLICY) and ztunnel (env.COMPLIANCE_POLICY) charts, no default so the unset case renders identically to main
  • bundles/k3d-standard and k3d-slim-dev: expose the variable as a bundle override on both charts and document it in each bundle README
  • docs: new reference page and networking how-to (accepted value pqc, default-off, ambient + upstream-only support matrix, force-everywhere caveats)
  • test/vitest/istio-pqc.spec.ts: PQC force-mode scenario (gated by PQC_TESTS) asserting the negotiated group, classical-client rejection, and COMPLIANCE_POLICY=pqc on both workloads
  • tasks and .github/workflows/test-pqc.yaml: deploy/test wiring for the separate upstream PQC scenario

Validated on k3d: the default-off suite is green (120 vitest + 15 playwright, 0 failed; no COMPLIANCE_POLICY env on either workload) and the PQC scenario is green (3/3 assertions; the tenant gateway negotiates X25519MLKEM768 and rejects classical-only clients).

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Other (security config, docs update, etc)

Steps to Validate

  • Run the full e2e tests (no regressions)
  • Run the PQC specific tests in istio-pqc.spec.ts

Checklist before merging

Add an opt-in, default-off knob that forces post-quantum hybrid key
exchange (X25519MLKEM768) across the Istio mesh by setting
COMPLIANCE_POLICY=pqc on istiod and ztunnel. Supported only on the
non-FIPS upstream flavor.

- src/istio/common/zarf.yaml: shared ISTIO_COMPLIANCE_POLICY chart
  variable on the istiod (pilot.env.COMPLIANCE_POLICY) and ztunnel
  (env.COMPLIANCE_POLICY) charts, no default so the unset case renders
  identically to main
- bundles/k3d-standard and k3d-slim-dev: expose the variable as a bundle
  override on both charts and document it in each bundle README
- docs: new reference page and networking how-to (accepted value pqc,
  default-off, ambient + upstream-only support matrix, force-everywhere
  caveats)
- test/vitest/istio-pqc.spec.ts: PQC force-mode scenario (gated by
  PQC_TESTS) asserting the negotiated group, classical-client rejection,
  and COMPLIANCE_POLICY=pqc on both workloads
- tasks and .github/workflows/test-pqc.yaml: deploy/test wiring for the
  separate upstream PQC scenario

Validated on k3d: the default-off suite is green (120 vitest + 15
playwright, 0 failed; no COMPLIANCE_POLICY env on either workload) and the
PQC scenario is green (3/3 assertions; the tenant gateway negotiates
X25519MLKEM768 and rejects classical-only clients).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@lemmarathon lemmarathon requested a review from a team as a code owner June 18, 2026 23:15
@lemmarathon lemmarathon changed the title feat(istio): add default-off ISTIO_COMPLIANCE_POLICY (pqc) toggle feat(istio): add option to use post-quantum key exchange Jun 19, 2026
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.

1 participant