Crate secret_sharing_and_dkg

Crate secret_sharing_and_dkg 

Source
Expand description

§Secret sharing and distributed key generation

Implements Secret Sharing (SS), Verifiable Secret Sharing (VSS), Distributed Verifiable Secret Sharing (DVSS), Distributed Key Generation (DKG) and Publicly Verifiable Secret Sharing (PVSS) algorithms. DVSS and DKG do not require a trusted dealer. Also implements a distributed discrete log check.

  1. Shamir secret sharing (Requires a trusted dealer)
  2. Pedersen Verifiable Secret Sharing
  3. Pedersen Distributed Verifiable Secret Sharing
  4. Feldman Verifiable Secret Sharing
  5. Feldman Distributed Verifiable Secret Sharing
  6. Gennaro DKG from the paper Secure Distributed Key Generation for Discrete-Log Based Cryptosystems
  7. Distributed Key Generation from FROST
  8. Distributed discrete log (DLOG) check
  9. Publicly Verifiable Secret Sharing
  10. Verifiable Secret Sharing using hash-commitments

Modules§

abcp_dkg
Distributed Key Generation protocol as described in Fig. 4 of the paper VSS from Distributed ZK Proofs and Applications
abcp_ni_tzk_extended
Generalization of the protocol for NI-TZK for discrete logarithms described in Fig 3 of the paper VSS from Distributed ZK Proofs and Applications Fig 3. describes a protocol for the prover sharing its witness x for the relation h = g^x among n parties such that a threshold number, t, of them can reconstruct x.
baghery_pvss
Publicly verifiable secret sharing protocols
baghery_vss
Verifiable Secret Sharing scheme inspired by Feldman’s, but using hash function for commitment instead of elliptic curve operations. By K. Baghery.
common
distributed_dlog_check
Distributed discrete log (DLOG) check
error
feldman_dvss_dkg
Feldman Distributed Verifiable secret sharing and distributed key generation.
feldman_vss
Feldman Verifiable Secret Sharing Scheme. Based on the paper A practical scheme for non-interactive verifiable secret sharing The scheme works as follows for threshold t and total n:
frost_dkg
This is the keygen implemented in the FROST paper in Figure 1. This is a slight addition to the DKG based on Feldman VSS as it contains a Schnorr proof of knowledge of the secret key.
gennaro_dkg
Based on the paper Secure Distributed Key Generation for Discrete-Log Based Cryptosystems Scheme is defined in Fig 2. The protocol is run in 2 phases: Phase1 where all participants generate a secret and share it using Pedersen VSS and in Phase 2 participants distribute commitments as per Feldman VSS and generate the public key at the end. The public key is assumed to be of the form G*x where x is the secret key and G is the group generator.
pedersen_dvss
Pedersen Distributed Verifiable secret sharing. Based on the paper “Non-interactive and information-theoretic secure verifiable secret sharing”, section 5. https://www.cs.cornell.edu/courses/cs754/2001fa/129.PDF Does not involve a trusted third party but assumes that all participants (and not just threshold) participate till the end. Even if one participant aborts, the protocol needs to be restarted. A workaround is for each participant to ignore the faulty participant’s share essentially making it such that the faulty participant was never there.
pedersen_vss
Pedersen Verifiable secret sharing. Based on the paper “Non-interactive and information-theoretic secure verifiable secret sharing”, section 4. https://www.cs.cornell.edu/courses/cs754/2001fa/129.PDF. The basic idea is the following
shamir_ss
Shamir secret sharing