# Distributed Key Generator
**Source**: https://crysp.uwaterloo.ca/software/DKG/
**Parent**: https://crysp.uwaterloo.ca/software/
- [Introduction](https://crysp.uwaterloo.ca/software/DKG/intro.html)
- [Download](https://crysp.uwaterloo.ca/software/DKG/download.html)
- [Change Log](https://crysp.uwaterloo.ca/software/DKG/changelog.html)
- [Benchmarks](https://crysp.uwaterloo.ca/software/DKG/benchmark.html)
A trusted authority, in some form, is essential for many secure systems.
However, this requirement always leads to the liveness-related issue of single point of failure and
sometimes to the more undesirable security issue of key escrow. Resolving
these two issues is of paramount importance while designing secure systems
for use **over the Internet** where denial-of-service attacks and malicious entities are widespread.
Although distributed cryptography has emerged as a
natural choice to mitigate these problems, the cryptography
literature largely has failed to provide protocols suitable for the Internet.
Namely, the aspects related to the practicality of these protocols
have been largely ignored and usable implementations for most of the
distributed cryptographic primitives are not yet available.
This need for practical distributed cryptographic protocols motivated most us
towards this work on distributed key generation (DKG).
In essence, an (n,t)-DKG protocol
allows a set of n nodes to collectively generate a secret with its
*shares* spread over the nodes such that any subset of size
greater than a threshold t can reveal or use the shared secret,
while smaller subsets do not have any knowledge about it. Unlike the
original Shamir secret sharing schemes, where a
*dealer* generates a secret and distributes its shares among the
nodes, DKG requires no trusted party.
DKG is a fundamental building block of distributed cryptography,
distributed pseudo-random functions and many other distributed computing
primitives. It is a prominent example of a well-studied
cryptographic protocol that lacks a practical design and implementation.
This software is the first realistic Distributed Key Generator (DKG) implementation for use over the Internet. We have tested it extensively on the [PlanetLab platform](http://www.planet-lab.org).
Our paper describing the protocol:
> [Distributed Key Generation in
> the Wild](http://eprint.iacr.org/2012/377).
> Aniket Kate, Yizhou Huang and Ian Goldberg, ePrint 2012/377, July 2012.
This is an extended version of our conference publication:
> [Distributed Key Generation for the Internet](http://www.cs.uwaterloo.ca/~iang/pubs/DKG.pdf).
> Aniket Kate, Ian Goldberg, 29th International Conference on Distributed Computing Systems, June 2009.
This software is covered by the [GPL license](https://crysp.uwaterloo.ca/software/DKG/COPYING).
CONTACT: Andy Huang (y226huan@cs.uwaterloo.ca)