Publicly Verifiable Secret Sharing
In cryptography, a scheme is publicly verifiable (PVSS) if it is a scheme and if any party involved can verify the validity of the shares distributed by the dealer.
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:
- All system parameters are generated.
- 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
s_{1},s_{2}...s_{n}for each participantP_{1},P_{2}...P_{n}respectively. - The dealer publishes the encrypted share
E_{i}(s_{i})for eachP_{i}. - The dealer also publishes a string
mathrm{proof}_{D}to show that eachE_{i}encryptss_{i}
(note: mathrm{proof}_{D} 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
E_{i}, 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
P_{i}decrypts their share of the secrets_{i}usingE_{i}(s_{i}).
(note: fault-tolerance can be allowed here: it's not required that all participants succeed in decrypting E_{i}(s_{i}) as long as a qualified set of participants are successful to decrypt s_{i}).
- The participant release
s_{i}plus a stringmathrm{proof}_{P_{i}}this shows the released share is correct.
2. Pooling the shares:
- Using the strings
mathrm{proof}_{P_{i}}to exclude the participants which are dishonest or failed to decryptE_{i}(s_{i}). - Reconstruction
scan be done from the shares of any qualified set of participants.
Chaums and Pedersen Scheme
A proposed protocol proving: log_{_{g1}}h_{1} = log_{_{g2}}h_{2} :
- The prover chooses a random
rin boldsymbol{Zeta}_{q^*} - The verifier send a random challenge
c in _{R}boldsymbol{Zeta}_{q} - The prover responds with
s = r - c x(mathrm{mod},q) - The verifier checks
alpha_1 = g_{1}^s h_{1}^candalpha_2 = g_{2}^s h_{2}^c
Denote this protocol as: mathrm{dleq}(g_1, h_1,g_2,h_2)
A generalization of mathrm{dleq}(g_1, h_1,g_2,h_2) is denoted as: text{dleq}(X, Y, g_1, h_1,g_2,h_2) where as: X = g_{1}^{x_1}g_{2}^{x_2} and Y = h_{1}^{x_1}h_{2}^{x_2}:
- The prover chooses a random
r_1,r_2 in Z_{q}^*and sendst_1 = g_{1}^{r_1} g_{2}^{r_2}andt_2 = h_{1}^{r_1} h_{2}^{r_2} - The verifier send a random challenge
c in _{R}boldsymbol{Zeta}_{q}. - The prover responds with
s_1 = r_1 - cx_1 (mathrm{mod},q),s_2 = r_2 - cx_2 (mathrm{mod},q). - The verifier checks
t_1 = X^c g_{1}^{s_1}g_{2}^{s_2}andt_2 = Y^c h_{1}^{s_1}h_{2}^{s_2}
The Chaums and Pedersen method 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.
Source
See Also on BitcoinWiki
- SOAR
- Robotar
- BitImage
- Vip2fan
- Cryptum Token