MIT License © 2025 Motohiro Suzuki
This document defines QSP Protocol v1.0 as a frozen specification at Stage205. Any change MUST be made in a subsequent stage (Stage206+) with explicit justification in:
analysis/assumptions.mdanalysis/break_analysis.mdanalysis/attack_claim_state_matrix.md
- Make security assumptions explicit and reviewable.
- Ensure fail-closed behavior on inconsistency, downgrade, replay, or state violation.
- Treat QKD as an optional entropy source (never an unconditional security upgrade).
- Provide a deterministic mapping from protocol states to acceptable messages and transitions.
- Proving or extending QKD security proofs.
- Defining new cryptographic primitives.
- Guaranteeing availability under network loss or adversarial disruption.
The adversary MAY:
- intercept/modify/replay messages,
- attempt downgrade of algorithms/key sources,
- attempt transcript confusion across sessions,
- cause loss/failure of QKD and/or network resources.
The adversary MUST NOT:
- forge signatures (see assumptions),
- break the underlying hardness assumptions of selected PQC primitives (see assumptions).
- Initiator (I)
- Responder (R)
sid: session identifier (unique per session)epoch: monotonically increasing counter per sessionth: transcript hash (hash over ordered handshake messages)K_src: key material from entropy sources (PQC-only and optionally QKD)K_mix: mixed key derived from sources via HKDFK_aead: AEAD traffic keys derived fromK_mix
QSP establishes a session with:
- authenticated handshake,
- key source selection + mixing,
- traffic key derivation,
- protected application data,
- rekey under policy conditions.
Core properties:
- Any mismatch in
sid/epoch/th/policyMUST result in fail-closed. - Downgrade attempts MUST be detected and rejected.
Normative states are defined in spec/state_machine.md.
This document references the state machine as authoritative.
Wire-level fields are specified in spec/wire_format.md.
Purpose:
- propose algorithms and key sources
- bind an initial transcript
Purpose:
- select algorithms and key sources
- provide server authentication and transcript binding
Purpose:
- confirm transcript and establish session keys
- finalize
sidandepoch=0
- PQC-only source: MUST be supported
- QKD source: OPTIONAL; may be absent/fail
All available sources are combined into K_mix using HKDF with domain separation.
Normative requirement:
- If QKD is absent or fails, the protocol MUST remain secure as PQC-only (no false security claims).
Rekey may occur when:
- epoch threshold reached,
- policy requires refresh,
- drift/attack indicators are detected.
Rekey MUST:
- increase
epochmonotonically, - bind new keys to updated transcript/policy state,
- fail-closed on inconsistency.
The implementation MUST immediately transition to CLOSED (or equivalent terminal failure) when any of the following occur:
- transcript hash mismatch,
- unexpected message for current state,
- sid mismatch,
- epoch rollback or non-monotonicity,
- downgrade attempt detected,
- policy violation.
Frozen claims are listed in claims/claims.yaml.
Attack mapping is in analysis/attack_claim_state_matrix.md.
Assumptions are enumerated in analysis/assumptions.md.
Failure impact enumeration is in analysis/break_analysis.md.