Skip to content

docs: prepare PQF for external cryptographic review#29

Open
systemslibrarian wants to merge 1 commit into
mainfrom
docs/external-review-prep
Open

docs: prepare PQF for external cryptographic review#29
systemslibrarian wants to merge 1 commit into
mainfrom
docs/external-review-prep

Conversation

@systemslibrarian
Copy link
Copy Markdown
Owner

Summary

Adds the artifacts a reviewer needs to engage quickly, makes the spec honest about what has and hasn't been reviewed, and fixes a handful of pre-X-Wing stale references that survived the 0.6 cutover.

Nothing here changes the wire format. v1.0.x freeze is unaffected (everything is §10.3-class editorial).

What's new

Path Lines Purpose
`spec/PQF-OVERVIEW.md` 242 3-page reviewer "read this first"
`spec/SECURITY-CONSIDERATIONS.md` 333 IETF-style consolidated security argument, cite-able from the I-D
`spec/external-review/REVIEW-STATUS.md` 157 Transparent layer-by-layer: what's been reviewed, by whom, with what limits
`spec/external-review/cfrg-mailing-list-post.md` 98 Ready-to-send draft for cfrg@irtf.org
`spec/external-review/researcher-outreach-template.md` 92 Per-recipient email template + targeting types
`spec/external-review/workshop-abstract.md` 112 ~450-word RWC / RWPQC abstract
`spec/external-review/POLISH-NOTES.md` 188 Spec polish punch list (4 fixed inline, 8 recommended)
`test-vectors/QUICKSTART.md` 127 Two commands → reviewer sees Rust reader accept every .NET vector

What's edited

  • `spec/PQF-SPEC-v1.md` — four §10.3-class fixes:
    • §6.5 cost-of-trial: ML-KEM-1024 → 768; "HKDF derivation" → SHA3-256 (X-Wing combiner)
    • §11.1 properties table: "in salt" (×2) → "in AEAD AAD" + pk_X-binding note
    • §12.1 negative-vector list: extended with TV-NEG-023..033 with their actual `RefusalReason` values
    • §12.2 manifest schema: rewrote to match the actually-shipped `manifest.json` (Identities[] / Vectors[]), pointed at `manifest.schema.json` as authoritative
  • `README.md` — fixed the stale "Cryptographic review wanted" section (referenced the dropped `HkdfCombiner.cs`); added pointers to OVERVIEW, REVIEW-STATUS, QUICKSTART; restructured the feedback paths.

Verification

This is documentation + spec-editorial; no code touched. Sanity checks worth running before merging:

  • Skim `PQF-OVERVIEW.md` — does it match how you'd describe PQF to a reviewer in 10 minutes?
  • Skim `SECURITY-CONSIDERATIONS.md` §3 (claimed guarantees) and §5 (unanalyzed compositions) — are the claims correctly scoped?
  • `REVIEW-STATUS.md` — does the ✅/⚠️/❌ table match your honest read?
  • CFRG post + researcher template — would you send them as-is, or do they need a tone adjustment?
  • `POLISH-NOTES.md` P-3 (Barbosa author list) — verify which paper §14.2 means to cite

If anything reads wrong, edit in this branch before merging.

🤖 Generated with Claude Code

Adds the artifacts a reviewer needs to engage quickly, makes the spec
honest about what has and hasn't been reviewed, and fixes a handful of
pre-X-Wing stale references that survived the 0.6 cutover.

New documents
-------------
- spec/PQF-OVERVIEW.md (3 pages) — goals, threat model, primitives,
  wire format, the five decisions worth a reviewer's focus. The
  "read this first" entry point for someone landing cold on the repo.

- spec/SECURITY-CONSIDERATIONS.md — IETF-style consolidated argument:
  assumed primitive properties → claimed file-level guarantees →
  per-construction analysis (KEM combiner, AAD-binding glue, per-chunk
  AEAD, hybrid signature composition, footer integrity) → known
  unanalyzed compositions → out-of-scope adversary capabilities →
  operational obligations. Cite-able from the IETF draft.

- spec/external-review/REVIEW-STATUS.md — transparent layer-by-layer
  table of what's been reviewed (X-Wing combiner inherits IND-CCA
  ROM/QROM from Barbosa et al. 2024), what's been LLM-assisted only,
  what hasn't been touched. Names the gaps.

- spec/external-review/cfrg-mailing-list-post.md — ready-to-send draft
  for cfrg@irtf.org plus sending etiquette notes (plain text, list
  moderation, follow-up cadence).

- spec/external-review/researcher-outreach-template.md — per-recipient
  template with one personalized paragraph the author fills in. Lists
  five candidate researcher *types* (not specific names) so targeting
  reasoning is in the doc.

- spec/external-review/workshop-abstract.md — ~450-word abstract
  targetable at Real World Crypto or RWPQC; venue notes inline.

- spec/external-review/POLISH-NOTES.md — punch list from a spec
  read-through, separating items already fixed inline from
  recommendations the author can take, leave, or modify.

- test-vectors/QUICKSTART.md — two-command path from `git clone` to
  watching the independent Rust reader accept every .NET-written
  vector. Plus a path for regenerating from seed and a path for
  replaying the X-Wing draft KAT against published IETF vectors.

Spec fixes inline (PQF-SPEC-v1.md, all §10.3-class editorial — no
wire-format change)
---------------------------------------------------------------------
- §6.5 cost-of-trial: said "ML-KEM-1024 decapsulation, one HKDF
  derivation"; corrected to ML-KEM-768 and SHA3-256 (the X-Wing
  combiner). Pre-X-Wing leftover from 0.5 / earlier.
- §11.1 Properties-PQF-provides table: two rows said "in salt"
  (file_id and recipient_index). X-Wing has no salt slot; corrected
  to "in AEAD AAD" and added the pk_X-binding note for the
  cross-recipient row.
- §12.1: extended the negative-vector list with TV-NEG-023..033 (the
  header-schema refusal classes that actually ship), each with its
  RefusalReason.
- §12.2: rewrote the test-vector file format section to describe the
  actual shipped schema (single manifest.json + cases/ dir, with
  Identities[] and Vectors[] arrays) and pointed at
  manifest.schema.json as authoritative. The previous example was a
  pre-implementation sketch that the project outgrew.

README
------
- Fixed the "Cryptographic review wanted" section: it pointed at the
  dropped HkdfCombiner.cs and described the old in-house construction.
  Now points at XWingKem.cs and the standardized X-Wing combiner.
- Added pointers to PQF-OVERVIEW.md, REVIEW-STATUS.md, and
  test-vectors/QUICKSTART.md as the recommended reviewer entry points.
- Restructured the feedback section into Issue / Discussion /
  refusal-vector PR / private security channels.

Nothing in this PR is a wire-format change. v1.0.x freeze is unaffected.
@github-actions github-actions Bot added spec Issue against the wire format or normative text. docs Documentation only. tests Tests, test vectors, or fuzz / property / KAT harnesses. labels Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation only. spec Issue against the wire format or normative text. tests Tests, test vectors, or fuzz / property / KAT harnesses.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant