Skip to content

Lightweight Java library for Threshold Signature Schemes (TSS) supporting GG20 (ECDSA) and FROST (Schnorr) protocols.

License

Notifications You must be signed in to change notification settings

exploit-org/tss4j

Repository files navigation

tss4j

Threshold Signature Schemes for Java


This library is used as the core cryptographic engine in TKeeper, a threshold signature service based on FROST and GG20.

Modules

Module Purpose
frost FROST (Schnorr-based) t-of-n signatures
gg20 GG20 (ECDSA-based) t-of-n signatures with MtA/Paillier core
ed25519 Curve operations and helpers for Ed25519 (used in FROST)
secp256k1 Curve operations for secp256k1 (used in GG20 and optional FROST)
bigint JNA bindings to libgmp-sec (constant-time big integer ops)
sodium JNA bindings to libsodium (Ed25519 point ops and hashing)

Security Notes (June 2025)

Topic Mitigation
TSSHOCK / α-shuffle TLV encoding of all transcripts (Bytes.encode)
c-guess / short challenge 256-bit challenges: statistical soundness ≥ 2⁻²⁵⁶
β-leak / BitForge #2 All β, ρ, σ, τ, r ← randomZnStar, enforced gcd = 1
Weak modulus / BitForge #1 Paillier modulus verified with PoK(N) + small factor sieve
Rogue-key in FROST Requires Schnorr PoP(Yᵢ) before aggregation
Equivocation on B (broadcast list) Echo-broadcast with hash verification; mismatch ⇒ abort

Threat model: up to t–1 active insiders, adaptive corruptions.
Physical side channels (EM, power) and RNG compromise are not in scope,
but constant-time code paths are used throughout to reduce leak surface.


Constant-Time Guarantees

  • All secret scalar operations use _Sec variants in the bigint module (modPowSec, modInverseSec, sqrSec, etc.)
  • Curve operations use constant-time primitives via libsodium and libsecp256k1
  • No sensitive values are processed with variable-time arithmetic

About

Lightweight Java library for Threshold Signature Schemes (TSS) supporting GG20 (ECDSA) and FROST (Schnorr) protocols.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published