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());