Skip to content

noise-pq: add Noise_XXhfs_25519+XWing_ChaChaPoly_SHA256 spec (Stage 1 Working Draft)#716

Open
paschal533 wants to merge 1 commit intolibp2p:masterfrom
paschal533:master
Open

noise-pq: add Noise_XXhfs_25519+XWing_ChaChaPoly_SHA256 spec (Stage 1 Working Draft)#716
paschal533 wants to merge 1 commit intolibp2p:masterfrom
paschal533:master

Conversation

@paschal533
Copy link
Copy Markdown

@paschal533 paschal533 commented Apr 28, 2026

Summary

This PR adds a new protocol spec for Noise_XXhfs_25519+XWing_ChaChaPoly_SHA256, a post-quantum hybrid extension of the classical Noise XX handshake used in libp2p.

The spec is filed at Stage 1 (Working Draft) per the libp2p spec lifecycle.

  • Specifies the e1 and ekem1 HFS token extensions from the Noise HFS draft, applied to the existing Noise XX pattern
  • Uses X-Wing (ML-KEM-768 + X25519) as the KEM primitive, following draft-connolly-cfrg-xwing-kem-06
  • Covers wire format (message A 1248 B, B 1232 B, C 64 B), token ordering requirements, cipher state split, ML-KEM implicit rejection semantics, and interoperability requirements
  • Includes a test vector schema matching the reference implementation

Motivation

NIST finalized ML-KEM (FIPS 203) in August 2024. Harvest-now-decrypt-later attacks make forward secrecy the most urgent deployment target: an adversary recording today's traffic can break it retroactively once a quantum computer exists. The XXhfs pattern adds quantum-safe forward secrecy with no changes to the classical authentication layer, giving operators a safe migration path.

Reference Implementations

Both implementations are open PRs against their respective libraries:

Cross-language handshake interoperability has been validated against the published test vectors.

Test plan

  • Review spec against Noise HFS extension spec for correctness
  • Review token ordering (encryptAndHash before mixKey in ekem1)
  • Verify wire format sizes match the reference implementation
  • Check lifecycle header format matches other specs in this repo
  • Identify interest group members (need 3+ for Stage 2)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

1 participant