3.5 KiB
SPEC — FROST (Lux Profile)
Construction-level spec for FROST (Flexible Round-Optimized Schnorr Threshold) as instantiated in the Lux ecosystem. The upstream construction is IETF/CFRG; this document pins the Lux profile and the integration contract.
§1 Construction reference
The canonical construction is:
- Komlo, C. and Goldberg, I. FROST: Flexible Round-Optimized Schnorr Threshold Signatures. SAC 2020 / ePrint 2020/852.
- IETF:
draft-irtf-cfrg-frost(latest published draft is the normative wire-format reference for Lux).
This document does NOT redefine FROST; it pins the Lux profile.
§2 Lux profile
2.1 Pinned ciphersuites
The Lux ecosystem deploys exactly two ciphersuites:
| Ciphersuite | Group | Hash | LP |
|---|---|---|---|
FROST(Ed25519, SHA-512) |
edwards25519 | SHA-512 | LP-4711 |
FROST(secp256k1, SHA-256) + Taproot |
secp256k1 | SHA-256 | LP-4712 |
Other ciphersuites in the CFRG draft (P-256, ristretto255) are NOT deployed in Lux profile v1. A future LP may add them; until then they are out of scope.
2.2 Wire format
Wire format follows draft-irtf-cfrg-frost exactly. The Lux profile
adds NO wire-format modifications.
2.3 Threshold ranges
| Ciphersuite | Min t |
Max n |
|---|---|---|
| Ed25519 | 2 | 1024 |
| secp256k1-Taproot | 2 | 1024 |
Configurations outside these ranges are rejected by keygen/.
2.4 Identifiable abort
The Lux profile mandates Komlo-Goldberg identifiable abort: round-2 signature shares are individually verifiable; misbehaving signers are blamable via the per-share verification equation.
2.5 Dynamic resharing
Dynamic resharing is provided via the LSS adapter
(threshold/protocols/lss/lss_frost.go). The group public key
persists across resharing; rotated parties surrender their old
shares.
§3 Integration contract
3.1 Round-state machine
FROST sessions live inside internal/round round-state machines
that govern message I/O, transcript binding, and abort handling.
3.2 Party identification
PartyID is a Lux-canonical 32-byte identifier (see
internal/party). Mapping to ciphersuite-specific keys is done at
session construction time.
3.3 Transcript binding
The Lux profile binds session transcripts via
internal/hash-domain-separated tags using:
lux-frost-ed25519-v1lux-frost-secp256k1-taproot-v1
This domain separation prevents cross-ciphersuite replay.
§4 What this spec does NOT cover
- The underlying FROST construction's security proof — see Komlo- Goldberg 2020 + the latest CFRG draft.
- The Ed25519 or secp256k1 primitive — see
luxfi/crypto/curve25519andluxfi/crypto/secp256k1. - Implementation correctness vs the construction — see
PROOF-CLAIMS.md(honest scope). - The submission tarball cut process — see
SUBMISSION-STATUS.md.
§5 Open spec items
- Single-doc consolidation. This SPEC.md + the upstream CFRG
draft + LP-4711/LP-4712 are the spec surface. A future
spec/ frost-lux.texconsolidating these is a v0.X roadmap item. - Parameter-set worksheet. See
PARAMS.mdfor the current pinned ranges; tighter bounds with formal soundness margins are pending the v0.X-formal-methods milestone (out of scope for Tier B).
§6 Cross-references
README.md— overviewSUBMISSION-STATUS.md— tier framework + gatingPROOF-CLAIMS.md— honest non-claimsPARAMS.md— pinned ciphersuites + rangesTEST-VECTORS.md— KAT formatSECURITY.md— threat model- LP-4710 / LP-4711 / LP-4712 / LP-4700