#threshold-cryptography #secret-sharing #frost #mpc

no-std arcanum-threshold

Threshold cryptography for the Arcanum cryptographic engine

3 releases

Uses new Rust 2024

0.1.2 Jan 26, 2026
0.1.1 Jan 23, 2026
0.1.0 Jan 22, 2026

#2244 in Cryptography

22 downloads per month
Used in 2 crates

MIT/Apache and AGPL-3.0-only

200KB
3.5K SLoC

Arcanum Threshold Cryptography

Threshold cryptographic schemes for distributed key management and signing.

Secret Sharing

  • Shamir: Basic (t, n) secret sharing
  • Feldman: Verifiable secret sharing with public commitments
  • Pedersen: Information-theoretically hiding verifiable secret sharing

Threshold Signatures (FROST)

FROST (Flexible Round-Optimized Schnorr Threshold) signatures:

  • FROST-Ed25519: Ed25519-compatible threshold signatures
  • FROST-secp256k1: Bitcoin/Ethereum compatible signatures

Distributed Key Generation (DKG)

Generate group keys without trusted dealer:

  • Pedersen DKG: Two-round DKG with information-theoretic security
  • FROST DKG: Integrated key generation for FROST signing

Proactive Refresh

Limit the window of compromise with periodic share refresh:

  • Centralized refresh: Dealer refreshes all shares at once
  • Distributed refresh: Participants cooperatively refresh without dealer

After refresh, old shares are incompatible with new shares, preventing attackers from combining shares collected over different time periods.

Example

use arcanum_threshold::prelude::*;

// Create 3-of-5 Shamir sharing
let secret = b"my secret key";
let shares = ShamirScheme::split(secret, 3, 5)?;

// Reconstruct from any 3 shares
let recovered = ShamirScheme::combine(&shares[..3])?;
assert_eq!(secret.as_slice(), recovered.as_slice());

Dependencies

~17MB
~323K SLoC