Publicly verifiable secret sharing

From testwiki
Jump to navigation Jump to search

In cryptography, a secret sharing scheme is publicly verifiable (PVSS) if it is a verifiable secret sharing scheme and if any party (not just the participants of the protocol) can verify the validity of the shares distributed by the dealer. Template:Blockquote

The method introduced here according to the paper by Chunming Tang, Dingyi Pei, Zhuo Liu, and Yong He is non-interactive and maintains this property throughout the protocol.

Initialization

The PVSS scheme dictates an initialization process in which:

  1. All system parameters are generated.
  2. Each participant must have a registered public key.

Excluding the initialization process, the PVSS consists of two phases:

Distribution

1. Distribution of secret s shares is performed by the dealer D, which does the following:

  • The dealer creates s1,s2...sn for each participant P1,P2...Pn respectively.
  • The dealer publishes the encrypted share Ei(si) for each Pi.
  • The dealer also publishes a string proofD to show that each Ei encrypts si

(note: proofD guarantees that the reconstruction protocol will result in the same s.

2. Verification of the shares:

  • Anybody knowing the public keys for the encryption methods Ei, can verify the shares.
  • If one or more verifications fails the dealer fails and the protocol is aborted.

Reconstruction

1. Decryption of the shares:

  • The Participants Pi decrypts their share of the secret si using Ei(si).

(note: fault-tolerance can be allowed here: it's not required that all participants succeed in decrypting Ei(si) as long as a qualified set of participants are successful to decrypt si).

  • The participant release si plus a string proofPi this shows the released share is correct.

2. Pooling the shares:

  • Using the strings proofPi to exclude the participants which are dishonest or failed to decrypt Ei(si).
  • Reconstruction s can be done from the shares of any qualified set of participants.

Chaum-Pedersen Protocol

A proposed protocol proving: logg1h1=logg2h2 :

  1. The prover chooses a random rZq*
  2. The verifier sends a random challenge cRZq
  3. The prover responds with s=rcx(modq)
  4. The verifier checks α1=g1sh1c and α2=g2sh2c

Denote this protocol as: dleq(g1,h1,g2,h2)
A generalization of dleq(g1,h1,g2,h2) is denoted as: dleq(X,Y,g1,h1,g2,h2) where as: X=g1x1g2x2 and Y=h1x1h2x2:

  1. The prover chooses a random r1,r2Zq* and sends t1=g1r1g2r2 and t2=h1r1h2r2
  2. The verifier sends a random challenge cRZq.
  3. The prover responds with s1=r1cx1(modq) , s2=r2cx2(modq).
  4. The verifier checks t1=Xcg1s1g2s2 and t2=Ych1s1h2s2

The Chaum-Pedersen protocol is an interactive method and needs some modification to be used in a non-interactive way: Replacing the randomly chosen c by a 'secure hash' function with m as input value.

See also

References