Magnetar v1.0.0 closes the permissionless-threshold story at ONE
construction --- THBS-SE (Threshold Hash-Based Signatures with
Selected-Element Reconstruction) --- and removes every legacy
seed-recombine path from the codebase.
The two production primitives at v1.0:
1. Per-validator standalone (standalone.go, unchanged from v0.5.x) ---
the public-BFT primary primitive. Each validator holds its own FIPS
205 keypair, signs independently, consensus collects N signatures
into a ValidatorAggregateCert.
2. THBS-SE (thbsse.go + thbsse_field.go) --- the permissionless
threshold companion. t-of-n committee, slot-bound commit-and-reveal,
PUBLIC COMBINER role (anyone-can-combine, no host in TCB at sign
time), slashable equivocation and malformed-share evidence.
Both emit byte-identical FIPS 205 signatures that unmodified verifiers
accept (TestMagnetar_Wire_FIPS205Verifiable +
TestThbsSE_Wire_FIPS205Verifiable across all 3 SHAKE modes).
Hard invariant (THBS-SE): a revealed value is allowed only if it is
also present in the final SLH-DSA signature. Forbidden reveals:
SK.seed in any party-local persistent form, SK.prf, future-slot share
material. The slot guard refuses any same-slot re-emission.
v1.0 honest open item: the strict "no transient seed at any moment"
invariant requires a v1.1 strict-atom-assembly path
(BLOCKERS.md::MAGNETAR-STRICT-ATOM-V11) that re-implements FIPS 205
sec 5/6/7/8 internally. v1.0 ships a PUBLIC COMBINER that holds the
seed for one slhdsa.SignDeterministic call and zeroizes; materially
stronger than TEE-attested privileged-aggregator constructions,
materially weaker than the strict refinement.
8 test gates + 2 bonus correctness checks:
- TestThbsSE_Wire_FIPS205Verifiable (3 modes) -- byte identity
- TestThbsSE_RejectSeedReveal
- TestThbsSE_RejectUnselectedFORS
- TestThbsSE_RejectUnselectedWOTS
- TestThbsSE_SlotReuseRejected
- TestThbsSE_OverselectedCommittee
- TestThbsSE_SlotBindingDomainSeparation
- BenchmarkThbsSE_Sign_5of7
- TestThbsSE_PublicCombiner_Determinism (bonus)
- TestKAT_ThbsSe (n=7, t=4, 3 modes, 3 messages)
Removed (legacy seed-recombine path + the proofs/CT scaffolding that
modeled it):
- ref/go/pkg/magnetar/{threshold,aggregate,combine,shamir,dkg}.go
+ tests
- ref/go/pkg/magnetar/{e2e,fuzz,n1_byte_equality}_test.go
- ref/go/pkg/thbs/ (entire subtree including dkg2/ PVSS skeleton)
- vectors/{threshold-sign,dkg}.json
- jasmin/{threshold,lib}/ (legacy seed-recombine model)
- proofs/easycrypt/ (entire tree; v1.1 ports to THBS-SE)
- ct/dudect/ (entire tree; v1.1 lands with strict-atom path)
- scripts/{check-lean-bridge,checks/ec-*,checks/jasmin,checks/extraction}.sh
Added:
- ref/go/pkg/magnetar/thbsse.go (1054 LOC; the THBS-SE construction)
- ref/go/pkg/magnetar/thbsse_field.go (GF(257) internal share math)
- ref/go/pkg/magnetar/thbsse_test.go (8 gates + 2 bonus)
- vectors/thbsse-sign.json (deterministic (n=7,t=4) KAT)
- v1.0 supersede notices on v0.x archival docs
Verification:
- GOWORK=off go build ./... && go vet ./...: clean
- go test -count=1 -short: PASS (all gates)
- go test -count=1 -race -short: PASS
- grep "reveal-and-aggregate|seed.*recombin|THBS over.*seed|aggregator.*reconstruct.*seed" *.go: 0 matches
- find ref/go/pkg -type d -name thbs: empty
20 KiB
NIST MPTC Submission --- Magnetar
v1.0 framing. This document is a v0.x archival snapshot. Magnetar v1.0 ships two primitives: per-validator standalone and THBS-SE (Threshold Hash-Based Signatures with Selected-Element Reconstruction). See
README.md,SPEC.md,THBS-SPEC.md, andCHANGELOG.md::[1.0.0]for v1.0 normative content.
This document is the cover sheet for the Magnetar submission to the NIST Multi-Party Threshold Cryptography (MPTC) project. It is written for NIST reviewers and points at every artifact a reviewer needs.
The magnetar repository is the single canonical home for the
submission: it carries the Go reference implementation under
ref/go/pkg/magnetar/, the cover sheet, the construction
specification, the deterministic KAT generator, the deployment runbook,
and the high-assurance gate orchestration. A NIST reviewer gets a
self-contained checkout that does not require network access.
The repository is active (not frozen). The submission tarball is
cut from a tag on main at NIST's deadline via
scripts/cut-submission.sh; reviewer feedback and post-submission
patches land in this same repository so the artifact chain stays
auditable.
Date stamp (this revision): 2026-05-18.
Maturity stamp: Tier A documentation shape complete at v0.3.0. This submission is not NIST-ratified, not FIPS 140-3 validated, not ACVP-validated. It IS FIPS-anchored at the single-party layer (FIPS 205 SLH-DSA). The threshold-overlay layer is novel; the byte-equality property to single-party FIPS 205 is the load-bearing N1 claim.
At a glance
| Field | Value |
|---|---|
| Submission name | Magnetar |
| Submitting organisation | Lux Industries, Inc. |
| Algorithm | Threshold SLH-DSA (FIPS 205) — reveal-and-aggregate over the SLH-DSA scheme seed |
| Target NIST MPTC classes | N1 (threshold signing, byte-identical to single-party FIPS 205 SLH-DSA on the reconstructed master seed) + N4-analog (multi-party key generation; public-key preservation across resharing is on the v0.4 roadmap) |
| Underlying construction | FIPS 205 SLH-DSA (single-party layer); v0.1 reveal-and-aggregate Shamir VSS of the SLH-DSA scheme seed over GF(257) (threshold overlay) |
| Hash family | SHA-3 / SHAKE (FIPS 202) and cSHAKE256 / KMAC256 (SP 800-185) for every Magnetar-specific transcript hash |
| Parameter sets | SLH-DSA-SHAKE-192s (recommended; NIST PQ Cat 3), SLH-DSA-SHAKE-192f (Cat 3 "fast"), SLH-DSA-SHAKE-256s (Cat 5) |
| Round count | DKG = 3 rounds (Round-1 deal; Round-2 transcript digest; Round-3 share assembly). Threshold sign = 2 rounds (commit + reveal). |
| Signature output | Byte-identical to single-party FIPS 205 slhdsa.SignDeterministic on the reconstructed master seed (the headline N1 claim) |
| Repository | https://github.com/luxfi/magnetar (single canonical home: code, spec, KAT, runbook, cut tool) |
| Algorithm source | This repository, ref/go/pkg/magnetar/. Latest tagged release at this revision: v0.2.0 (Tier B); this revision targets v0.3.0 (Tier A documentation shape complete). |
| Tarball cut tool | scripts/cut-submission.sh (tags from main, regenerates KATs deterministically, runs the test suite, tars) |
| Submission tag | submission-YYYY-MM-DD (cut from main at deadline) |
| Spec | SPEC.md (in-tree construction specification) |
| License | BSD-3-Clause (code) — see LICENSE |
| Patent posture | Royalty-free grant — see PATENTS.md. Lux Industries grants a worldwide, royalty-free, irrevocable patent license to any implementation conformant to the Magnetar construction released under BSD-3-Clause or compatible OSI license, OR any NIST MPTC / PQC / ACVP submission, validation, or interoperability test. Defensive termination mirrors Apache-2.0 §3. |
| Sibling submissions | Pulsar (luxfi/pulsar) — M-LWE threshold ML-DSA with FIPS 204 byte-equality (Tier A, sister submission). Corona (luxfi/corona) — R-LWE threshold (Tier A documentation shape; no FIPS standard target). Independent submissions; reviewable separately. |
Headline claim
Every signature produced by a Magnetar threshold ceremony (DKG → Round-1 commit → Round-2 reveal → Combine) is byte-identical to the signature single-party FIPS 205
slhdsa.SignDeterministic(slhdsa.Scheme(ID).DeriveKey(S), m, ctx)would produce on the same reconstructed master seedS, messagem, and contextctx. Verification under unmodified FIPS 205slhdsa.Verifytherefore accepts Magnetar signatures with no code change.
This is the Class-N1 byte-equality claim, anchored against FIPS 205 SLH-DSA (NIST PQ category 3 / 5 stateless hash-based signature standard, 2024).
Verifier-side story (load-bearing for N1 framing). Because
FIPS 205 SLH-DSA IS a NIST standard, Magnetar's N1 claim has the
strong form: a Magnetar threshold signature must verify under any
FIPS 205-conformant verifier. The Magnetar verify.go is a thin
dispatch over circl/slhdsa.Verify, which is the FIPS 205 §10.3
verifier verbatim. A reviewer can — and the test suite does —
cross-check Magnetar threshold-emitted bytes against
cloudflare/circl's FIPS 205 verifier; the byte-identity invariant
is empirically realized by TestN1_ByteEquality_* over
(committee, threshold) configurations (3,2), (5,3), (7,4).
Algorithm scope
The algorithm being submitted is the Magnetar implementation at
luxfi/magnetar v0.3.0. The single-party signing primitive is
FIPS 205 SLH-DSA, unchanged in its math (via cloudflare/circl's
audited Go reference), plus the following production threshold
lifecycle layers that FIPS 205 does not specify (these are
Magnetar's contribution to the submission package):
-
Byte-wise Shamir VSS of the SLH-DSA scheme seed over GF(257) —
ref/go/pkg/magnetar/shamir.go. Distributes the 96-byte (192s/192f) or 128-byte (256s) FIPS 205 scheme seed acrossncommittee members at reconstruction thresholdt. The choice of GF(257) is the smallest prime > 255 (so every byte fits as a distinct field element); shares are encoded as one big-endian uint16 per byte position, matching the byte-equal property byte-wise. -
Three-round DKG over the scheme seed —
ref/go/pkg/magnetar/dkg.go. Round-1 dealers broadcast per-recipient envelopes carrying that recipient's Shamir share plus the dealer's full contribution to the joint seed. Round-2 broadcasts a transcript digest binding the entire ordered envelope set. Round-3 reconciles digests (identifiable abort on equivocation) and computes each party's share of the master byte-sum + the group public key. v0.1 ships plaintext envelopes for KAT determinism; v0.4 wraps them under ML-KEM-768 to recipient identity keys (BLOCKERS.md BLK-4 path, matching Pulsar's CR-8 closure). -
Two-round threshold sign with commit-bind reveal —
ref/go/pkg/magnetar/threshold.go+combine.go. Round-1 each signer commits toD_i = cSHAKE256(mask || masked_share || tau_1)wheretau_1 = (sid, attempt, quorum, pk, msg). Round-2 reveals(mask, masked_share). Combine re-derives everyD_ifrom the reveals, gates each share onctEqual32(D'_i, D_i), recovers each share viamasked XOR mask, Lagrange-reconstructs the master byte-sum, applies the cSHAKE256 mix bit-for-bit identical to DKG Round-3, and calls FIPS 205SignDeterministicon the reconstructed seed-derived key. -
Identifiable abort with attributable evidence —
dkg.gocomplaint emission (ComplaintEquivocationon DKG Round-3 digest mismatch; conflicting digest pair is the evidence blob).ComplaintBadDeliveryon malformed envelopes.ComplaintMACFailurereserved for v0.2 (per-pair MAC layer, currently omitted — reveal-and-aggregate trust model already places the aggregator in the TCB; MACs close a session-bind hole that doesn't matter under v0.1 trust caveat). -
Domain-separated hash suite —
ref/go/pkg/magnetar/transcript.gocentralises every Magnetar cSHAKE256 / KMAC256 call. All cSHAKE function-name"Magnetar"; customisation tagsMAGNETAR-DKG-COMMIT-V1,MAGNETAR-DKG-TRANSCRIPT-V1,MAGNETAR-SIGN-R1-V1,MAGNETAR-SIGN-MASK-V1,MAGNETAR-SEED-SHARE-V1. Protocol-wide domain-separation contextlux-magnetar-v0.1.
What to read first
A reviewer with limited time should read in this order:
SUBMISSION.md(this file) — submission metadata and headlineNIST-SUBMISSION.md— one-page executive summarySPEC.md— standalone construction specificationPROOF-CLAIMS.md— what is claimed vs not (HONEST framing — no machine-checked refinement proof at this submission; FIPS-anchored byte-equality empirical at the test-vector level)TRUSTED-COMPUTING-BASE.md— implementation TCB (Go +cloudflare/circlSLH-DSA + crypto/subtle)FIPS-TRACEABILITY.md— FIPS 205 § → code mappingAXIOM-INVENTORY.md— construction-level + implementation-level axioms; closure plans for the proof-tier roadmapPATENTS.md— royalty-free patent grant textDEPLOYMENT-RUNBOOK.md— operator-facing trust-model disclosure (v0.1 reveal-and-aggregate aggregator-as-TCB)BLOCKERS.md— Tier B → A path; outstanding gatesCRYPTOGRAPHER-SIGN-OFF.md— internal review verdictREADME.md— repository layout and how to reproduce
What to run
The reproducibility gate is scripts/cut-submission.sh against the
tarball extract — the entire submission is self-contained, so no
network access is required:
tar xzf submission-YYYY-MM-DD.tar.gz
cd magnetar
GOWORK=off go build ./...
GOWORK=off go test -count=1 -short -timeout 240s ./ref/go/pkg/magnetar/
GOWORK=off go run ./ref/go/cmd/genkat -out=vectors/ # regenerate KATs deterministically
The test suite includes TestN1_ByteEquality_ThresholdMatchesCentralized
(across (3,2), (5,3), (7,4) configurations) and
TestN1_ByteEquality_DifferentQuorumsSameSignature (the same DKG
output under two distinct signing quorums yields byte-identical
signatures). Both are the load-bearing N1 evidence.
To cut a fresh tarball (maintainer-side):
scripts/cut-submission.sh # dry-run, no tarball
scripts/cut-submission.sh submission-2026-11-16 # production cut + tag
The cut script verifies a clean tree, regenerates KATs from the in-tree canonical implementation, re-runs the test suite (including N1 byte-equality), tars the entire submission checkout, and prints the SHA-256.
Class N1 — Byte-equal to single-party FIPS 205
The N1 claim is asserted at three levels of evidence (one fewer than Pulsar at full Tier A; the missing level is the machine-checked refinement chain — EC theory shells for the threshold overlay layer remain a roadmap item, multi-month research):
| Evidence | Where |
|---|---|
| Algorithmic argument | SPEC.md §6 (Class-N1-analog byte-equality claim) + the construction-equivalence proof sketch |
| Test harness | ref/go/pkg/magnetar/n1_byte_equality_test.go — three (committee, threshold) configurations; byte-identity asserted via bytes.Equal |
| KAT determinism | vectors/{keygen,sign,verify,threshold-sign,dkg}.json regenerated deterministically by ref/go/cmd/genkat |
| Cross-implementation verifier | Magnetar's Verify is a thin dispatch over cloudflare/circl/sign/slhdsa.Verify, which is the FIPS 205 §10.3 verifier verbatim. Any FIPS 205-conformant verifier accepts Magnetar threshold-emitted bytes. |
What Magnetar DOES NOT yet provide vs Pulsar Tier A:
- No EasyCrypt refinement chain for the threshold overlay layer.
(FIPS 205 SLH-DSA itself has the libjade formal artifacts available
for the single-party layer; the threshold overlay is novel and
not yet mechanized. See
AXIOM-INVENTORY.md§2 closure plan.) - No Lean ↔ EC algebraic bridge files specific to Magnetar. (Magnetar's
Shamir / Lagrange operations are algebraically identical to
Pulsar's GF(257) variant; cross-citation to Pulsar's
proofs/lean-easycrypt-bridge.mdis the closure target, seeAXIOM-INVENTORY.md§2.) - No Jasmin high-assurance implementation of the threshold overlay. (libjade covers SLH-DSA single-party; the threshold overlay is pure Go.)
- No machine-checked
Class N1 byte-equalitytheorem for the threshold overlay layer.
The honest framing for Magnetar is: production-hardened
implementation of a FIPS-anchored single-party primitive with a
novel reveal-and-aggregate threshold overlay, NOT
machine-checked refinement against FIPS 205. The mechanized
proof tier for the threshold overlay remains a roadmap item; see
PROOF-CLAIMS.md for the narrow stated claim and the closure path.
Class N4-analog — Public-key preservation across resharing
Multi-party reshare with public-key preservation is on the v0.4
roadmap (see BLOCKERS.md BLK-4 "Reshare protocol"). The v0.1
construction supports DKG → threshold-sign → Combine but does NOT
ship a Refresh or ReshareToNewSet primitive. Class N4 framing
is therefore "N4-analog" at v0.3.0: the construction admits a
reshare protocol with the same byte-equality property to FIPS 205
under the reconstructed seed, but the protocol itself is not yet
implemented.
The N4-equivalent claim, when v0.4 lands, will state: any DKG share
set can be Refresh-rotated (same committee, fresh shares) or
ReshareToNewSet-rotated (committee rotation) such that any
post-reshare threshold-sign produces signatures verifiable under
the byte-identical unchanged group public key.
High-assurance track — HONEST DELTA vs Pulsar
Pulsar ships an EasyCrypt + Lean + Jasmin high-assurance track that mechanically refines its Class N1 byte-equality claim against a formal model of FIPS 204. Magnetar does NOT ship that. The honest delta:
| Pulsar artifact | Magnetar equivalent | Status |
|---|---|---|
| 13/13 EasyCrypt files compile, 0/0 admits (refinement chain) | none | NOT PRESENT — threshold-overlay EC theory shells are roadmap v0.4+, multi-month research project, see AXIOM-INVENTORY.md §2 |
| 5/5 Lean ↔ EC algebraic-bridge files | none specific to Magnetar | NOT PRESENT — Shamir / Lagrange algebraically identical to Pulsar's GF(257) variant; cross-citation closure on roadmap, see AXIOM-INVENTORY.md §2 |
| 3/3 jasmin-ct blocking on threshold layer | none for the threshold overlay | NOT PRESENT — libjade covers FIPS 205 SLH-DSA single-party; threshold overlay is pure Go |
| Class N1 byte-equality theorem (mechanized) | empirical byte-equality at the test-vector level only | NOT MECHANIZED — see PROOF-CLAIMS.md §3 |
cloudflare/circl FIPS 205 cross-validation |
Verify dispatches to circl's FIPS 205 verifier; TestN1_ByteEquality_* is the load-bearing harness |
PRESENT — circl is the canonical Go FIPS 205 implementation |
What Magnetar DOES offer at this submission-time:
- Production-hardened reference implementation in Go
(
ref/go/pkg/magnetar/, ~2200 LOC). Single-party + DKG + threshold sign + Combine. Three FIPS 205 parameter sets. - KAT-deterministic outputs under the Magnetar hash suite
(cSHAKE256 / KMAC256 per FIPS 202 + SP 800-185). Vectors at
five profiles: keygen, sign, verify, threshold-sign, dkg.
Deterministic regeneration via
ref/go/cmd/genkat. - Byte-identity N1 evidence:
TestN1_ByteEquality_ThresholdMatchesCentralizedproves at three configurations that threshold-Combine output is byte-equal to single-partyslhdsa.SignDeterministicon the same seed. - Identifiable-abort evidence pipeline at the DKG layer
(
ComplaintEquivocationcarries the conflicting digest pair). - Honest gap disclosure —
PROOF-CLAIMS.md§3 enumerates every property NOT proved;BLOCKERS.mdenumerates the Tier B → A gates. - Reproducibility commitment —
scripts/cut-submission.shis deterministic from fixed seeds; the KAT generator's output is byte-stable across runs.
What this submission does NOT claim
- No formal mechanized refinement of the threshold overlay layer
against FIPS 205. EasyCrypt / Lean / Jasmin theories for the
Magnetar threshold layer are roadmap items, multi-month research.
See
PROOF-CLAIMS.md§3.1 andAXIOM-INVENTORY.md§2. - No threshold secrecy without aggregator trust. Magnetar v0.1 is
reveal-and-aggregate: the aggregator process holds the reconstructed
master seed in memory for the duration of one Combine call. This is
the same trust caveat Pulsar v0.1 carries; documented in
DEPLOYMENT-RUNBOOK.mdwith the TEE / mlock / ptrace-off hardening matrix. A v0.2 full-MPC construction (aggregator never sees the seed) is on the research path; seeBLOCKERS.md. - No statistical constant-time validation (dudect) of the threshold
layer. The Magnetar threshold-layer code paths use constant-time
primitives (
ctEqual32/ctEqualSlice) for every commit verification and key equality check, but no statistical timing harness ships at v0.3.0. Roadmap v0.4+. SeePROOF-CLAIMS.md§3.4. - No ML-KEM-768 envelope wrapping of DKG Round-1 envelopes in
v0.1 — envelopes are plaintext. A passive network observer can see
the per-recipient share + dealer contribution. v0.4 closes this
channel by wrapping envelopes under recipient identity keys (matching
Pulsar's CR-8 closure). See
BLOCKERS.mdBLK-4. - No reshare protocol in v0.1. Class N4-analog will be claimed at
v0.4 when
RefreshandReshareToNewSetprimitives land. SeeBLOCKERS.mdBLK-4. - No external cryptographic audit. Internal cryptographer
sign-off (
CRYPTOGRAPHER-SIGN-OFF.md) is the v0.3.0 review; an external lab engagement is roadmap, seeBLOCKERS.mdBLK-9. - No FIPS 140-3 module validation — applies to packaged cryptographic modules, not this reference implementation. Downstream of this submission.
- No ACVP / CAVP algorithm validation certificate for the
threshold layer — no NIST ACVP test vector set exists for
threshold SLH-DSA. The single-party FIPS 205 layer in
cloudflare/circlis independently ACVP-testable; the threshold overlay is not. - No identifiable abort under network partition — synchronous network assumption only; asynchronous identifiable abort is a separate problem.
- No post-quantum hardness claim beyond FIPS 205's analysis. SLH-DSA's security rests on collision/preimage resistance of the underlying hash (SHAKE for the Magnetar parameter sets); NIST's FIPS 205 analysis is the substrate.
Comparison to sibling and related submissions
| Submission | Hardness basis | Round count | Output story | NIST class |
|---|---|---|---|---|
| Magnetar (this) | Hash-based (FIPS 205 SLH-DSA collision/preimage resistance) | DKG=3 + sign=2 | Byte-equal to single-party FIPS 205 SLH-DSA on reconstructed seed | N1 (+ N4-analog at v0.4) |
Pulsar (luxfi/pulsar) |
Module-LWE (FIPS 204 ML-DSA) | 2 | Byte-equal to FIPS 204 ML-DSA-65 | N1 + N4 |
Corona (luxfi/corona) |
Ring-LWE (Boschini et al. ePrint 2024/1113) | 2 | Construction-level interchangeable; no NIST standard target | N1 + N4 |
| FROST (academic upstream) | Discrete log / Schnorr | 2 | EdDSA-compatible | not MPTC |
The hash-based / M-LWE / R-LWE triple is intentional. Lux's Polaris cert profile MAY combine Magnetar (hash-based) and Pulsar (M-LWE) and Corona (R-LWE) as a cross-family layered defence so a break in any single family (lattice or hash) does not break finality. That layered combination is the consumer's design choice and is not part of this submission. Magnetar stands alone as an MPTC Class N1 candidate (with N4-analog roadmap).
Contact
- Primary: z@lux.network (Lux Industries, Inc.)
- Submission coordination: mptc@lux.network
- Security disclosure: see
SECURITY.md(when present) ormagnetar@lux.network - Public discussion: https://github.com/luxfi/magnetar/discussions
Reproducibility commitment
The build, test, and vector-generation scripts are deterministic
from fixed seeds. A reviewer reproducing the submission tarball
from submission-YYYY-MM-DD should obtain byte-identical artifacts.
Drift is a build bug; please open an issue.
Document metadata
- Name:
SUBMISSION.md - Version: v0.1 (initial Tier A submission-package scaffolding)
- Date: 2026-05-18
- Submission package version: Magnetar v0.3.0 (Tier A documentation shape complete)
- Underlying library version at this revision:
luxfi/magnetar v0.3.0