Skip to main content

Distributed Key Generation (DKG)

We give an overview of Distributed Key Generation (DKG) and describe the DKG protocol used in the paper GJKR99. This, along with the ECVRF, will be two main components for the Distributed Verifiable Random Function (DVRF) protocol used for generating pseudorandom values. First, we give an overview of DKG. Then, we mention Verifiable Secret Sharing (VSS), the main building block for a DKG protocol. Finally, we describe the DKG protocol of GJKR99.

Author(s): phamnhatminh1292001

Overview of DKG

Distributed key generation is a main component of threshold cryptosystems. It allows nn participants to take part and generate a pair of public key and secret key required for the threshold cryptosystem without having to rely on a trusted party (dealer). Each participant in additional receive a partial secret key and a partial public key. While the public key and partial public keys is seen by everyone, the private key is maintained as a (virtual) secret of a t,nt,n secret sharing scheme, where each share is the partial secret key of a participant GJKR99. No adversary with limited computational power can learn any information of the secret key unless it control the required amount of participants.

DKG Security Properties

As in GJKR99, we wish a (t,n)(t,n) DKG protocol to have the following properties:

Correctness:

  1. There is an efficient algorithm that, given any t+1t+1 shares provided by honest parties, output the same unique secret key sksk.
  2. All honest parties agree on the same value of the public key pk=gskpk=g^{sk}.
  3. sksk is uniformly distributed in Zp\mathbb{Z}_p.

Secrecy:: For any adversary who controls at most tt participants, he cannot learn any additional information except the value pk=gskpk=g^{sk}.

Applications

DKG has been used in numerous aspects:

  1. Threshold Encryption and Signatures: In threshold cryptosytems, one problem arises: single point of failure. If a single participant fails to follow the protocol, then the entire system will abort. When applied as a component of a threshold cryptosystem, (n,t)(n,t)DKG solves this problem by ensuring that any t+1t+1 participants who behave honestly will allow the protocol to execute successfully.

  2. Identity based Cryptography (IBC): In IBC, a private-key generator (PKG) is required to generate a secret, called the master key and provide private keys to clients using it. Since he know the private key of the client, he can decrypt the messages of the client. A (n,t)(n,t) DKG solve this by distributing the PKG into many participants where any adversary who control at most tt parties cannot compute the master key, and the client receive his secret key by collecting t+1t+1 partial private keys from the participants.

  3. Distriuted Pseudo-random Functions: Pseudo-random Functions (PRF) and Verifiable Random Functions (VRF) is used to produce values that looks indistinguishable from random. Both require a secret key to compute the output. However, the secret key holder can select the value of the secret key to manipulate the output, or share the secret key with others to benefit himself. This can be prevented by applying a (n,t)(n,t) distributed version of PRF or VRF, thus no adversary can learn or affect the value of the secret key.

Verifiable Secret Sharing (VSS)

In this chapter, we discuss about Verifiable Secret Sharing (VSS), the main building block for a DKG protocol. We state the syntax and security properties of a VSS, then describe the VSS construction due to Pedersen.

Introduction

Secret Sharing was first introducted by Shamir in 1979 Shamir79. It allows a person to share a secret ss among nn parties such that any authorized\textit{authorized} subset of parties can use all their shares to reconstruct the secret, while any other (non-authorized) subset learns nothing about the secret from their shares. Shamir proposed a secret sharing scheme in his paper Shamir79. However, in Shamir's scheme, parties can commit wrong shares, leading the protocol to reconstruct the wrong secret, thus a verification process of the shares is required. To solve this problem, Chor et al. CGMA85 introduced Verifiable Secret Sharing.

Syntax and Properties

Syntax

A (t,n)(t,n) Verifiable Secret Sharing consists of two phases: Share and Reconstruct as follow:

Share: The dealer DD has a secret value ss. Initially, there are nn parties P1,P2,...,PnP_1, P_2, ..., P_n. The sharing phase may consist of several rounds of interaction between parties. At the end of the phase, each party PiP_i holds a share sis_i that will be required to reconstruct the secret of the dealer later.

Reconstruct: In this phase, each party PiP_i publishes its share sis_i from the sharing phase. Then, from these shares, a reconstruction function will be applied to output the original secret.

Properties

As in BKP11, a VSS need to have the following properties:

Correctness: If DD is honest, then the reconstruction function outputs ss at the end of the Reconstruct phase and all honest parties agree on the value ss.

Secrecy: If DD is honest, then any adversary that control at most tt parties does not learn any information about ss during the Share phase.

Commitment: If DD is dishonest, then at the end of the sharing phase there exists a value sFps^* \in \mathbb{F}_p such that at the end of the Reconstruct phase all honest parties agree on ss^*.

Pedersen's Construction

We describe a VSS protocol from Pedersen Ped91. This scheme provides perfect information theoretic security against any adversary with unbounded computational power.

Share The dealer chooses two polynomials p(x)=a0+a1x+a2x2+...+atxtp(x)=a_0+a_1x+a_2x^2+...+a_tx^t and p(x)=b0+b1x+b2x2+...+btxtp'(x)=b_0+b_1x+b_2x^2+...+b_tx^t such that a0=sa_0=s. Then he compute si=p(i)s_i=p(i) and si=p(i)s_i'=p'(i). The dealer then broadcasts Ci=gsihsiC_i=g^{s_i}h^{s_i'}. Then he gives the party PiP_i the tuple (si,si)(s_i,s_i'). This allows PiP_i to check if (si,si)(s_i,s_i') is a valid share by checking that

gsihsi=?k=0t(Ck)ik().g^{s_{i}}h^{s_{i}'} \stackrel{?}{=} \prod_{k=0}^{t}(C_{k})^{i^k} (*).

If a party PiP_i receives a share that does not satisfy ()(*), he will complains against the dealer. The dealer must reveal the share (si,si)(s_i,s_i') that satisfies for each complaining party PiP_i. If any of the revealed shares does not satisfy (1)(1) the equation, the dealer is marked invalid.

Reconstruct Each participant submits (si,si)(s_i,s_i'). Everyone can verify if PiP_i submitted the correct shares by checking if 11 is satisfied. If PiP_i receives more than tt complaints, then he is disqualified. Given t+1t+1 valid shares, s1,s2,...,st+1s_1,s_2,...,s_{t+1} from parties Px1,Px2,...,Pxt+1P_{x_1},P_{x_2},...,P_{x_{t+1}}, the secret ss can be computed as: s=i=0tsi(j=0jitxjxjxi).s= \sum_{i=0}^{t}s_i \left(\prod_{\substack{j=0 \\ j\neq i}}^{t}\dfrac{x_j}{x_j-x_i}\right).

The security proof of the protocol can be found in Ped91.

DKG Construction

In this chapter, we describe the DKG protocol in the paper Gennaro et al GJKR99. The protocol can withstand up to n2\dfrac{n}{2} dishonest participants, where nn is the number of participants. Despite the high communication cost, the protocol only need to be executed once in the first round of many threshold cryptosystems, making the DKG communication cost is not a serious matter in these cryptosystems.

Why Gennaro et al's Construction?

Despite there are numerous constructions for DKG, namely GJKR99, there is a reason we choose the DKG protocol of Gennaro et al.

Previously, Pedersen was the first to propose a DKG construction Ped91a. However, Gennaro et al. proved that in Pedersen's DKG, an attacker can manipulate the result of the secret key, making it not uniformly distributed GJKR99.

Canetti et al. CGJKR99 give a construction of a DKG that is secure against an adaptive adversary. However, his construction has worse performance than Gennaro's, since each participant has to use Pedersen's VSS two times. In addition, no adaptive adversary has been able to successfully attack the construction of Gennato et al.

Numerous attempts have been made to reduce the communication cost for a DKG KG09,CS04,CZAPGD20. However, all these schemes require a trusted party. This quite contradict the goal of a DKG.

This make the DKG construction of Gennaro et al. remains a simple, efficient and secure DKG protocol.

Gennaro et al's Construction

The DKG protocol consists of two phases, namely, generating and extracting, working as follows:

Public Parameters: Let pp be a prime number. Let GG be a cyclic group of order pp with generators gg and hh. The public parameters of the system are p,G,g,hp,G,g,h.

Generating: This process works as follows:

  1. Each participant PiP_i chooses two random polynomials fi(z)=ai0+ai1z+...+aitztf_i(z)=a_{i0}+a_{i1}z+...+a_{it}z^t and fi(z)=bi0+bi1z+...+bitztf_i'(z)=b_{i0}+b_{i1}z+...+b_{it}z^t and broadcasts Cij=gaijhbijC_{ij}=g^{a_{ij}}h^{b_{ij}} for j=0,1,...,tj=0,1,...,t.
  2. The participant PiP_i then sends sij=fi(j)s_{ij}=f_i(j) and sij=fi(j)s'_{ij}=f_i'(j) to PjP_j.
  3. Each participant PjP_j verifies the shares he received from each PiP_i by checking whether

gsijhsij=?k=0tCikjk.()g^{s_{ij}}h^{s_{ij}'}\stackrel{?}{=} \prod_{k=0}^{t}C_{ik}^{j^k}. (*)

If the check fails for some ii, PjP_j complains against PiP_i.

  1. Each PiP_i who receives a complaint from PjP_j broadcasts sijs_{ij} and sijs_{ij}' that satisfy Equation ()(*).
  2. A participant PiP_i is disqualified if he receives at least t+1t+1 complaints or answers a complaint with value that does not satisfy Equation. Then a set QUAL\mathsf{QUAL} of qualified participants is determined.
  3. For each ii, the secret key skisk_i of PiP_i is equal to jQUALsji \sum_{j\in \mathsf{QUAL}} s_{ji}. For any set V\mathcal{V} of at least t+1t+1 participants, the secret key sksk is equal to iVskiλi,V \sum_{i \in \mathcal{V}} sk_i\cdot\lambda_{i,\mathcal{V}}.

Extracting: The process works as follows:

  1. Each participant PiP_i in the set QUAL\mathsf{QUAL} publishes Aij=gaijA_{ij}=g^{a_{ij}} for j=0,1,2,,tj=0,1,2,\dots,t.
  2. Each participant PjP_j verifies AijA_{ij} for each ii. Specifically, PjP_j checks whether gsij=?k=0tAikjk.g^{s_{ij}}\stackrel{?}{=} \prod_{k=0}^{t}A_{ik}^{j^k}. If the check fails for some ii, PjP_j complains against PiP_i.
  3. For each ii that PiP_i receives at least one valid complaint, all other parties run Pedersen VSS to reconstruct fi(z)f_i(z), and restore si0s_{i0} and AijA_{ij} for j=0,1,...,tj=0,1,...,t. The public key is equal to pk=iQUALAi0pk= \prod_{i \in \mathsf{QUAL}}A_{i0}.
  4. The public key pkipk_i of PiP_i is calculated as pki=gski=jQUALgsji=jQUALk=0tAjkikpk_i=g^{sk_i}=\prod_{j \in \mathsf{QUAL}}g^{s_{ji}}= \prod_{j \in \mathsf{QUAL}}\prod_{k=0}^{t}A_{jk}^{i^k}.

The security proof of the DKG protocol can be found in GJKR99.