Skip to content

N-PAMP-01 — Profile Negotiation (reference)

Derived extract. Authoritative source: ../ietf/draft-bubblefish-npamp-latest.md (revision draft-bubblefish-npamp-01; integrity pinned in ../PIN.json), §6 "Profile Negotiation". The draft governs. Machine-readable: ../registries/profiles.csv.

N-PAMP defines three security profiles. They share one wire format and differ only in cryptographic primitives and operational requirements. Each is an escalation of the previous.

Profile Code Summary
Standard 0x01 Baseline hybrid post-quantum security.
High 0x02 Stronger KEM parameters and stronger hash; downgrade refusal to Standard.
Sovereign 0x03 Highest standard-crypto strength; downgrade refusal below Sovereign.

Profile code points 0x00 and 0x040xFF are reserved by this specification.

Profile invariants

Property Standard High Sovereign
Minimum KEM X25519MLKEM768 X25519MLKEM1024 X25519MLKEM1024
Allowed signatures Ed25519 Ed25519, ML-DSA-87 ML-DSA-87
KDF hash SHA-256 SHA-384 SHA-384
Per-frame AEAD diversification Off On On
Downgrade refusal Off Refuses Standard Refuses below Sovereign
Mandatory key update Yes Yes (tighter bounds) Yes (tightest bounds)

Negotiation rules

  • The profile is offered by the client and selected by the server during the handshake, and is carried in the handshake transcript. Because the profile is part of the transcript the Finished MAC covers, stripping a profile from the offer or forcing a lower selection invalidates the MAC and aborts the handshake.
  • The server MUST select a profile from the client's offered set. The selected profile MUST be no lower than the server's configured minimum acceptable peer profile.
  • A Sovereign server whose minimum acceptable peer profile is Sovereign completes a handshake only when the client offers Sovereign and Sovereign is selected.
  • A High or Sovereign endpoint MAY interoperate with a lower-profile peer for read-only or capability-discovery operations when local policy permits, by accepting a lower selected profile; otherwise it refuses the downgrade.