Files

Publicly Verifiable Secret Sharing

dleq.sage

A quick overview of the DLEQ sigma protocol, both interactive and non-interactive.

pvss.sage

This is an implementation of the paper found at https://www.win.tue.nl/~berry/papers/crypto99.pdf.

With this scheme, there exists a trusted dealer which picks a secret value, and creates shares of the secret using Shamir Secret Sharing within a given threshold and a number of participants of the PVSS scheme.

Participants publish their public keys, and the dealer is able to encrypt the shares to their public keys. The dealer shows that the encrypted shares are consistent by producing a proof of knowledege of the unique p(i), 1 <= i <= n, satisfying X_i = g^p(i), Y_i = y_i^p(i).

These proofs can be verified by anyone.

The participants are able to decrypt their own shares, sample a set of threshold t shares and reconstruct the secret value.

reed_solomon.sage

Reed Solomon check in the context of elliptic curves, used in scrape.sage.

scrape.sage

Implementation of https://eprint.iacr.org/2017/216.pdf. This is similar to Schoenmaker's PVSS (pvss.sage) but it requires only a linear number of exponentiations for sharing, verifying, and reconstruction, whereas the previous scheme has quadratic complexity.