mirror of
https://github.com/luxfi/magnetar.git
synced 2026-07-27 02:53:47 +00:00
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
358 lines
17 KiB
Markdown
358 lines
17 KiB
Markdown
# PATENTS --- Magnetar SLH-DSA Signature
|
||
|
||
> **v1.0 framing.** This document is a v0.x archival snapshot. The
|
||
> v1.0 patent grant covers the THBS-SE construction
|
||
> (`thbsse.go` + `thbsse_field.go`) under the same terms as the
|
||
> v0.x reveal-and-aggregate path described below; the construction
|
||
> details have changed but the IP posture is unchanged.
|
||
|
||
> **Statement of Intellectual Property and Royalty-Free Patent Grant**
|
||
> for the Magnetar threshold-signing construction submitted to the NIST
|
||
> Multi-Party Threshold Cryptography (MPTC) project.
|
||
|
||
## TL;DR
|
||
|
||
Lux Industries, Inc. ("Lux") grants a **worldwide, royalty-free,
|
||
non-exclusive, irrevocable patent license** for any implementation of
|
||
the Magnetar threshold signature construction that is either (a)
|
||
licensed under BSD-3-Clause or a compatible OSI-approved license, OR
|
||
(b) is part of a NIST MPTC / PQC / ACVP submission, validation, or
|
||
interoperability test.
|
||
|
||
The grant terminates automatically and prospectively against any
|
||
party that asserts a patent claim against Magnetar, FIPS 205 SLH-DSA,
|
||
FIPS 204 ML-DSA, or any other NIST-standardized post-quantum
|
||
signature scheme. Defensive termination mirrors Apache-2.0 §3.
|
||
|
||
The full text of the grant is in **§3 Patent Grant** below.
|
||
|
||
## §1 Scope of the IP statement
|
||
|
||
This document covers patent rights and patent posture for:
|
||
|
||
- The **Magnetar threshold-signing construction** as implemented at
|
||
`github.com/luxfi/magnetar` (DKG → Round-1 commit → Round-2 reveal
|
||
→ Combine).
|
||
- The **reference implementation** in `ref/go/pkg/magnetar/`.
|
||
- The **test-vector format** in `ref/go/cmd/genkat` and `vectors/`.
|
||
|
||
It does NOT cover, and explicitly DISCLAIMS, the following prior art:
|
||
|
||
| Component | Status |
|
||
|---|---|
|
||
| FIPS 205 SLH-DSA (Stateless Hash-Based Digital Signature Standard, NIST 2024) | NIST standard. Magnetar implements the single-party FIPS 205 layer **unchanged in its math** via `cloudflare/circl`'s audited Go reference. Lux asserts no patents on FIPS 205 itself. |
|
||
| WOTS+, HORS, FORS, hypertree constructions underlying SLH-DSA (Buchmann-Dahmen-Hülsing 2011 and follow-up academic literature) | Academic / public domain. |
|
||
| Shamir secret sharing (Shamir 1979) | Public domain. |
|
||
| Lagrange polynomial interpolation | Classical mathematics. |
|
||
| SHAKE128 / SHAKE256 / Keccak / cSHAKE / KMAC / TupleHash (FIPS 202 + SP 800-185) | Public domain — NIST standards. |
|
||
| Pedersen verifiable secret sharing (Pedersen 1991) | Academic prior art. Magnetar v0.1 does NOT use Pedersen VSS (v0.1 ships plain byte-wise Shamir); v0.4 may adopt for envelope-wrapping authenticity. |
|
||
| HJKY97 proactive secret sharing (Herzberg, Jakobsson, Jarecki, Krawczyk, Yung. CRYPTO 1995/1997) | Academic prior art. Will be the basis of Magnetar's `Refresh` primitive when it lands at v0.4. |
|
||
| Reveal-and-aggregate threshold-signing pattern (used by Pulsar v0.1 and other production threshold systems) | Industry / academic prior art. The general pattern is not asserted by Magnetar; only the SLH-DSA-specific lifecycle additions below are candidate claims. |
|
||
|
||
## §2 What Lux considers patentable (high level)
|
||
|
||
Subject to attorney review, Lux considers the following Magnetar
|
||
contributions to be candidates for patent protection. Note: this
|
||
list is intentionally narrow because the underlying FIPS 205
|
||
SLH-DSA primitive is a NIST standard (public domain) and the
|
||
byte-wise Shamir VSS pattern over a NIST-standard scheme seed
|
||
follows directly from Pulsar's v0.1 reveal-and-aggregate template
|
||
applied to the SLH-DSA seed instead of the ML-DSA seed. Magnetar's
|
||
novel contributions are the SLH-DSA-specific protocol shape and
|
||
binding.
|
||
|
||
### §2.1 Byte-wise Shamir VSS of the FIPS 205 SLH-DSA scheme seed over GF(257)
|
||
|
||
The specific adaptation of byte-wise Shamir secret sharing to the
|
||
FIPS 205 SLH-DSA scheme seed (96 bytes for SHAKE-192s/192f, 128
|
||
bytes for SHAKE-256s), where:
|
||
|
||
- Each byte position of the seed is shared independently over
|
||
GF(257) (smallest prime > 255, admits every byte value as a
|
||
distinct field element).
|
||
- Shares are encoded as one big-endian uint16 per byte position
|
||
(the 9-bit GF(257) element packed in a 16-bit lane).
|
||
- Reconstruction at `x=0` recovers the master byte-sum, which is
|
||
then mixed with the committee root via cSHAKE256 to produce the
|
||
reconstructed master seed.
|
||
- The cSHAKE256 mix uses customisation tag `MAGNETAR-SEED-SHARE-V1`
|
||
with function-name `"Magnetar"` per SP 800-185.
|
||
|
||
Detailed in `SPEC.md` §3 (DKG protocol) and §4 (threshold signing
|
||
Combine step); implementation in `ref/go/pkg/magnetar/shamir.go`,
|
||
`dkg.go`, `combine.go`.
|
||
|
||
### §2.2 Three-round DKG with transcript-digest equivocation detection
|
||
|
||
The specific DKG protocol shape:
|
||
|
||
- **Round-1**: dealer broadcasts one envelope per recipient carrying
|
||
the recipient's Shamir share and the dealer's full contribution to
|
||
the joint seed. Each envelope is `(share || contribution)` where
|
||
share is 2 × seed_size bytes (big-endian uint16 per byte position)
|
||
and contribution is seed_size bytes.
|
||
- **Round-2**: each party computes a 32-byte transcript digest
|
||
`D = cSHAKE256(tau_dkg || for_each_dealer(for_each_recipient(env)),
|
||
N="Magnetar", S="MAGNETAR-DKG-TRANSCRIPT-V1")` binding the entire
|
||
ordered envelope set; broadcasts `D`.
|
||
- **Round-3**: parties verify every received digest equals their
|
||
local `D`. A mismatch produces an `AbortEvidence{Kind:
|
||
ComplaintEquivocation}` carrying the conflicting digest pair —
|
||
identifiable abort with attributable evidence suitable for
|
||
slashing.
|
||
|
||
The transcript binding `tau_dkg = (mode || threshold || committee_size
|
||
|| committee_in_order)` and the dealer/recipient ordering convention
|
||
are domain-separated under `lux-magnetar-v0.1`.
|
||
|
||
Detailed in `SPEC.md` §3; implementation in `dkg.go`.
|
||
|
||
### §2.3 Two-round commit-bind threshold sign with masked-share reveal
|
||
|
||
The specific threshold-sign protocol shape:
|
||
|
||
- **Round-1**: each signer derives `r_i = cSHAKE256(rngBytes || sid
|
||
|| attempt || NodeID, N="Magnetar", S="MAGNETAR-SIGN-MASK-V1")` —
|
||
the per-attempt mask is derived deterministically from raw entropy
|
||
plus the session/attempt/NodeID tuple, so a deterministic RNG that
|
||
produces the same output across two attempts still yields DISTINCT
|
||
masks. Compute `masked_i = share_i XOR r_i`; commit
|
||
`D_i = cSHAKE256(r_i || masked_i || tau_1, N="Magnetar",
|
||
S="MAGNETAR-SIGN-R1-V1")` where `tau_1 = (sid, attempt, quorum,
|
||
NodeID, pk, msg)`.
|
||
- **Round-2**: reveal `(r_i, masked_i)` so peers can re-derive `D_i`
|
||
and the aggregator can XOR them to recover `share_i`.
|
||
- **Combine**: for each Round-2 reveal, re-derive `D'_i` and gate on
|
||
`ctEqual32(D'_i, D_i)`. Recover `share_i = masked_i XOR r_i`.
|
||
Collect `t` distinct shares with their `EvalPoint`s; Lagrange-
|
||
interpolate the master byte-sum at `x=0`; mix with the committee
|
||
root via cSHAKE256 (identical to DKG Round-3 step 6); derive the
|
||
FIPS 205 SLH-DSA secret key via `slhdsa.Scheme(ID).DeriveKey(S)`;
|
||
sign via `slhdsa.SignDeterministic`. Result is byte-identical to
|
||
centralized FIPS 205 SLH-DSA.
|
||
|
||
Detailed in `SPEC.md` §4; implementation in `threshold.go` and
|
||
`combine.go`.
|
||
|
||
### §2.4 Identifiable abort with attributable evidence
|
||
|
||
The specific use of `ComplaintEquivocation` carrying the conflicting
|
||
digest pair `(my_digest, accused_digest)` as the slashing-suitable
|
||
evidence blob; the typed `AbortEvidence` struct with `Kind`,
|
||
`Accuser`, `Accused`, `Evidence`, `Signature` fields. Detailed in
|
||
`SPEC.md` §8; implementation in `dkg.go` Round-3.
|
||
|
||
### §2.5 Constant-time commit-bind gate in Combine
|
||
|
||
The specific implementation pattern in `combine.go` where every
|
||
Round-2 reveal's recomputed `D'_i` is compared to the matching
|
||
Round-1 `D_i` via `ctEqual32` (constant-time 32-byte equality scan)
|
||
**before** the share is included in the Lagrange reconstruction.
|
||
This prevents a malicious aggregator from selectively admitting
|
||
shares based on timing of the per-share commit verification.
|
||
|
||
## §3 Patent grant (the load-bearing text)
|
||
|
||
> **MAGNETAR PATENT GRANT — v1.0**
|
||
>
|
||
> Lux Industries, Inc. ("Lux"), a Delaware corporation, hereby grants
|
||
> to any person or entity ("You") a **worldwide, royalty-free,
|
||
> non-exclusive, no-charge, fully-paid-up, irrevocable** (except as
|
||
> stated in §3.2 below) patent license to make, have made, use, offer
|
||
> to sell, sell, import, and otherwise transfer any implementation of
|
||
> the Magnetar threshold-signing construction described in `SPEC.md`
|
||
> (the "Construction"), provided that such implementation:
|
||
>
|
||
> (a) Implements the Construction (signing, DKG, or — when v0.4
|
||
> lands — proactive resharing) in a manner consistent with the
|
||
> algorithmic specification (the "Construction-Conformance
|
||
> Condition"); AND
|
||
>
|
||
> (b) Is licensed to the public under (i) the BSD-3-Clause License,
|
||
> (ii) the Apache License, Version 2.0, or (iii) any other
|
||
> Open-Source-Initiative-approved license compatible with
|
||
> BSD-3-Clause or Apache-2.0, OR (c) is part of a submission to,
|
||
> validation under, or interoperability test for the NIST
|
||
> Multi-Party Threshold Cryptography (MPTC) project, the NIST
|
||
> Post-Quantum Cryptography (PQC) standardization process, or any
|
||
> successor program administered by NIST.
|
||
>
|
||
> The license granted in this §3 covers all "Necessary Claims" owned
|
||
> or controllable by Lux that would, in absence of this license,
|
||
> necessarily be infringed by an implementation meeting (a) and (b).
|
||
> "Necessary Claims" means claims of any patent or patent
|
||
> application that are essential for compliance with the Magnetar
|
||
> specification, that Lux has the right at the time of execution to
|
||
> grant a license under.
|
||
>
|
||
> ### §3.1 Documentation and reference-implementation grant
|
||
>
|
||
> The Magnetar specification (`SPEC.md`), the reference implementation
|
||
> (`ref/go/pkg/magnetar/`), and the test vectors (under `vectors/`
|
||
> with deterministic regeneration via `ref/go/cmd/genkat`) are
|
||
> released under the BSD-3-Clause license. The patent grant in this
|
||
> document operates in addition to (not in lieu of) any patent
|
||
> provisions in the BSD-3-Clause license; BSD-3-Clause's silence on
|
||
> patents is supplemented by the explicit grant here.
|
||
>
|
||
> ### §3.2 Defensive termination
|
||
>
|
||
> The patent license granted in this §3 terminates automatically and
|
||
> prospectively, without notice, with respect to any party (the
|
||
> "Asserting Party") if the Asserting Party initiates patent
|
||
> litigation (including a cross-claim or counter-claim in a lawsuit)
|
||
> alleging that:
|
||
>
|
||
> (i) The Magnetar construction; or
|
||
> (ii) FIPS 205 SLH-DSA, FIPS 204 ML-DSA, FIPS 203 ML-KEM, or any
|
||
> other NIST-standardized post-quantum signature or key-
|
||
> encapsulation scheme; or
|
||
> (iii) Any implementation of (i) or (ii) — including without
|
||
> limitation the reference implementation in this repository,
|
||
> independent third-party implementations, NIST ACVP/CAVP
|
||
> reference vectors, or any FIPS 140-3 validated module
|
||
> containing such an implementation,
|
||
>
|
||
> infringes any patent owned or controllable by the Asserting Party.
|
||
> Termination is prospective only; it does not undo the validity of
|
||
> any implementation distributed prior to the date the Asserting
|
||
> Party initiated the litigation.
|
||
>
|
||
> Defensive termination mirrors the patent-termination clause of the
|
||
> Apache License, Version 2.0, §3, generalized to also cover FIPS 205
|
||
> SLH-DSA, FIPS 204 ML-DSA, FIPS 203 ML-KEM, and successor
|
||
> NIST-standardized post-quantum signature schemes. The purpose is to
|
||
> deter patent assertion against the broader post-quantum signature
|
||
> ecosystem, not only against Magnetar itself.
|
||
>
|
||
> ### §3.3 No trademark license
|
||
>
|
||
> This grant does not authorize the use of Lux's trademarks
|
||
> (including "Magnetar", "Pulsar", "Corona", "Quasar", "Lux",
|
||
> "Lux Industries", and their respective logos) except as required
|
||
> for reasonable and customary use in describing the origin of the
|
||
> Construction and reproducing the content of any NOTICE file.
|
||
>
|
||
> ### §3.4 Disclaimer
|
||
>
|
||
> THE CONSTRUCTION AND ALL ASSOCIATED MATERIALS ARE PROVIDED ON AN
|
||
> "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
|
||
> EXPRESS OR IMPLIED. Lux shall not be liable for any damages
|
||
> resulting from the use of the patent license granted in this §3.
|
||
|
||
## §4 Filing strategy (informational)
|
||
|
||
This section is for transparency; it does not modify the grant
|
||
in §3.
|
||
|
||
Lux intends to pursue patent protection on the Magnetar production-
|
||
lifecycle additions as follows:
|
||
|
||
1. **US provisional application** within 12 months of public
|
||
disclosure (the NIST MPTC submission counts as public disclosure
|
||
for §102 purposes; filing before submission preserves priority).
|
||
|
||
2. **PCT international application** within 12 months of the
|
||
provisional, designating jurisdictions where threshold SLH-DSA
|
||
deployment is anticipated (EU, JP, CN, KR, IN, AU, CA, UK, BR).
|
||
|
||
3. **EPO and major-jurisdiction national-phase entries** at the PCT
|
||
30-month deadline, prioritized by anticipated deployment markets.
|
||
|
||
4. **Continuation / divisional applications** to cover incremental
|
||
refinements (e.g., the v0.4 ML-KEM-768 envelope-wrapping pattern
|
||
for DKG Round-1 envelopes, the v0.4 reshare protocol, future
|
||
hash-suite profile additions, the v0.2 full-MPC construction
|
||
when it matures).
|
||
|
||
The royalty-free grant in §3 applies to ALL such filings, present
|
||
and future, that are owned or controllable by Lux.
|
||
|
||
## §5 Why the grant is structured this way
|
||
|
||
### §5.1 Defensive patent ownership protects the ecosystem
|
||
|
||
Without Lux holding the patents on the Magnetar production-lifecycle
|
||
additions, a third party could observe the public NIST submission,
|
||
file blocking patents on (e.g.) the byte-wise Shamir VSS over the
|
||
SLH-DSA seed pattern, and assert them against open-source
|
||
implementations. Lux holding the patents (with a royalty-free grant)
|
||
removes that attack surface.
|
||
|
||
This is the same logic that protects FRAND ecosystems and that
|
||
underlies Apache-2.0's patent grant + retaliation clause.
|
||
|
||
### §5.2 Compatibility with NIST MPTC submission terms
|
||
|
||
The NIST Multi-Party Threshold Cryptography project's submission
|
||
guidelines require submitters to provide a patent statement
|
||
specifying the IP terms under which the submitted construction may
|
||
be used. The grant in §3 satisfies that requirement and goes beyond
|
||
NIST's baseline by extending defensive termination to FIPS 205
|
||
SLH-DSA, FIPS 204 ML-DSA, FIPS 203 ML-KEM, and successors (not just
|
||
Magnetar's own construction).
|
||
|
||
### §5.3 Compatibility with the FIPS 205 standard
|
||
|
||
The underlying FIPS 205 SLH-DSA primitive is a NIST standard
|
||
(public domain). Lux asserts no patents on FIPS 205 itself;
|
||
Magnetar's claims are limited to the threshold lifecycle additions.
|
||
Any third-party implementation of FIPS 205 SLH-DSA single-party
|
||
signing is free of Magnetar patent assertions whether or not it
|
||
adopts Magnetar's threshold layer.
|
||
|
||
### §5.4 Defensive termination for the broader PQ ecosystem
|
||
|
||
Extending defensive termination to FIPS 205 SLH-DSA, FIPS 204
|
||
ML-DSA, FIPS 203 ML-KEM, and successors — not just Magnetar
|
||
itself — converts Lux's patent portfolio into a small deterrent
|
||
against PQ-signature patent trolls. It costs Lux nothing (Lux does
|
||
not intend to assert offensively) and benefits the ecosystem.
|
||
|
||
## §6 What this document does NOT do
|
||
|
||
- It does not assign any Lux patent rights to NIST, IETF, or any
|
||
third party. Lux retains ownership; the grant in §3 is a license.
|
||
- It does not commit Lux to maintain or prosecute any specific
|
||
patent application. Lux may abandon applications for business
|
||
reasons; the grant in §3 covers issued patents in proportion to
|
||
what is actually granted.
|
||
- It does not waive Lux's right to update the grant text (subject
|
||
to §6.1 below).
|
||
- It does not modify the BSD-3-Clause license covering the
|
||
reference implementation, specification, and vectors.
|
||
- It does not claim patent rights on FIPS 205 SLH-DSA itself
|
||
(NIST standard, public domain).
|
||
|
||
### §6.1 Modifications to this grant
|
||
|
||
Lux may issue future versions of this PATENTS document with
|
||
clarifications or extensions of the grant. Future versions will
|
||
apply to implementations published under the future version's
|
||
identifier. **The grant in §3 of this v1.0 document is
|
||
irrevocable for implementations relying on it**, subject only to
|
||
the defensive-termination clause in §3.2.
|
||
|
||
## §7 Contact
|
||
|
||
| Purpose | Contact |
|
||
|---|---|
|
||
| Patent / IP inquiries | `legal@lux.network` |
|
||
| Licensing for non-conforming implementations | `legal@lux.network` |
|
||
| NIST submission coordination | `mptc@lux.network` |
|
||
| Security disclosure | `magnetar@lux.network` |
|
||
|
||
---
|
||
|
||
**Document metadata**
|
||
|
||
- Document name: `PATENTS.md`
|
||
- Document version: v1.0
|
||
- Document date: 2026-05-18
|
||
- Construction version: Magnetar v0.3.0 (Tier A documentation shape
|
||
complete)
|
||
- Construction repository: <https://github.com/luxfi/magnetar>
|
||
- License of this document: Creative Commons CC-BY-4.0 (so it
|
||
can be freely reproduced in NIST submission packages and audit
|
||
reports without modification).
|