Konubinix' opinionated web of thoughts

Distributed Key Generation

Fleeting

There is some notation confusion whether t-of-n should refer to a minimum of t+1 parties or t parties

https://thork.net/posts/2022_4_21_dkg/

similar construction to the threshold signature is the t-of-n multisignature:n parties hold private keysSome trusted entity (eg. a smart contract) collects t+1 unique signatures on some message, (eg. a transaction), and then signs that message itself

https://thork.net/posts/2022_4_21_dkg/

a t-of-n threshold signature:Key Generation: Some secret key u, secret to all parties, is constructed. At the end of a DKG, every party possesses some secret share from which u may be reconstructed. No party knows another party’s share.Any t+1 parties can collaborate to sign a message, producing a single signature. No party learns of any other party’s share. The protocol effectively reconstructs the private key, u, in zero knowledge, and uses it to sign a message

https://thork.net/posts/2022_4_21_dkg/

centralized setting, a trusted party, Alice, will construct all the shares, and simply send them to the n parties.

https://thork.net/posts/2022_4_21_dkg/

Alice is a back door to the threshold signature, as she may simply construct signatures using the private key

https://thork.net/posts/2022_4_21_dkg/

Alice can bring her own private key to the threshold signature, where the rest of the threshold signing protocol continues as if Alice were a normal player

https://thork.net/posts/2022_4_21_dkg/

emphasize that, in the DKG model, an entirely new secret key is constructed that no player possesses.

https://thork.net/posts/2022_4_21_dkg/

, if Alice were to delete her private key, then the setting would be identical to the next section

https://thork.net/posts/2022_4_21_dkg/

impossible to verify whether Alice has kept a copy, we turn to cryptography to construct Distributed Key Generation.

https://thork.net/posts/2022_4_21_dkg/

DKG proceeds in 3 phases. Participants in the protocol will be called “players”

https://thork.net/posts/2022_4_21_dkg/

Phase 1Each player selects their private share, and broadcasts a commitment to it

https://thork.net/posts/2022_4_21_dkg/

Phase 2Players first decommit their public keys (broadcasting gui), then perform a secret sharing and determine the group secret sharing.

https://thork.net/posts/2022_4_21_dkg/

Phase 3: VerifiabilitySuppose Player Pi were able to lie to player Pj about the value of Xi, the hiding of their secret key share. This would allow player Pi to volunteer to participate in the signing protocol, but prevent the creation of a valid signature, without anyone knowing!

https://thork.net/posts/2022_4_21_dkg/

Distributed key generation is a way for a group of people to generate a public key, along with shares of the secret key. These shares should be such that nobody knows the actual secret, and yet further protocols can make use of these shares to do useful operations, such as signing, or decryption.

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

assume that various problems related to the discrete logarithm in G\mathbb{G}G are hard. In particular, given A=a⋅GA = a ⋅ GA=a⋅G, finding aaa should be intractable.

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

basic strategy here is linear sharing. We pick shares x1,…,xnx_1, \ldots, x_nx1​,…,xn​ such that ∑ixi=x∑_i x_i = x∑i​xi​x.If we have a trusted third party, then they can be the “dealer”, and the distribute the shares x1,…,xnx_1, \ldots, x_nx1​,…,xn​, while informing the group of the public key X:=x⋅GX : x ⋅ GX:=x⋅G.

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

how to remove this dealer, so that a group of people can set up a key without needing to trust a third party.

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

simple idea is that each person can generate their share xix_ixi​, which implicitly creates a secret ∑ixi∑_i x_i∑i​xi​, shared among the participants

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

person send Xi:=xi⋅GX_i := x_i ⋅ GXi​:=xi​⋅G to everyone else. You can then sum up these “shares” of the public key, getting X:=∑iXiX := ∑_i X_iX:=∑i​Xi​.

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

protocol is secure, for honest participants

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

broken for malicious participants

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

using a Maurer proof, for the function: φ(x):=x⋅G ϕ(x) := x ⋅ G φ(x):=x⋅G

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

will force a participant to prove that they know the discrete logarithm

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

need to have each party set their share before they learn the shares of the other parties

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

do this using commitments. A commitment hides the value underneath it, but once a commitment is sent, the value hidden underneath can’t be changed

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

each party send a commitment to their share, and then only after receiving every other commitment will a party reveal their own share

https://cronokirby.com/posts/2022/10/dkgs-in-groups/

Notes pointant ici