Skip to main content

Crate mpvss_rs

Crate mpvss_rs 

Source
Expand description

§MPVSS - A Simple Publicly Verifiable Secret Sharing Library

The library implements a simple PVSS scheme in Rust.

§What is PVSS?

Secret sharing means a dealer can break a secret into secret shares among a group of participants which can reconstruct the secret only by collaboratively joining their parts of the secret. The library also implements threshold cryptography so that the dealer can decide whether all of the receiving participants need to collaborate or if a smaller subgroup of participants is sufficient to reconstruct the secret.

In addition to the plain secret sharing scheme PVSS adds verifiability in the following way: All the parts the secret is split into are encrypted with the receivers’ public keys respectively. The dealer publishes all the encrypted shares along with a non-interactive zero-knowledge proof that allows everbody (not only the receiving participants) to verify that the decrypted shares indeed can be used to reconstruct the secret. The participants then decrypt all their shares and exchange them along with another non-interactive zero-knowledge proof that allows the receiving participant to verify that the share is actually the result of the decryption.

Thus PVSS can be used to share a secret among a group of participants so that either the secret can be reconstructed by the participants who all play fair or a participant that received a faked share can identify the malicious party.

§Documents

See Github README

Re-exports§

pub use dleq::DLEQ;
pub use mpvss::PVSS;
pub use participant::ModpParticipant;
pub use participant::Participant;
pub use sharebox::DistributionSharesBox;
pub use sharebox::ShareBox;

Modules§

dleq
Generic DLEQ (Discrete Logarithm Equality) proof for multiple cryptographic groups.
group
Cryptographic group abstraction for PVSS scheme.
groups
Group implementations for PVSS scheme.
mpvss
MPVSS (Publicly Verifiable Secret Sharing) implementation for multiple cryptographic groups.
participant
Participant implementation supporting multiple cryptographic groups.
polynomial
sharebox

Functions§

string_from_secret
string_to_secret

Type Aliases§

Ristretto255Participant
Type alias for Participant with Ristretto255Group (prime-order group over Curve25519)
Secp256k1Participant
Type alias for Participant with Secp256k1Group (elliptic curve cryptography)