Projects:DistributedPrivacyGuard

From 34C3_Wiki
Revision as of 13:37, 5 November 2017 by HS (talk | contribs) (added project)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Description The Distributed Privacy Guard implements Distributed Key Generation (DKG) and Threshold Cryptography for OpenPGP. The generated public keys are compatible with the standard and thus can be used by any RFC4880-compliant application (e.g. GnuPG). The main purposes of this software are distributing power among multiple parties, eliminating single points of failure, and increasing the difficulty of side-channel attacks on private key material.
Has website https://savannah.nongnu.org/projects/dkgpg/
Persons working on HS
Tags crypto, openpgp
Other projects...

refresh

The Distributed Privacy Guard (DKGPG) implements Distributed Key Generation (DKG) and Threshold Cryptography for OpenPGP. The generated public keys are compatible with the standard and thus can be used by any RFC4880-compliant application (e.g. GnuPG). The main purposes of this software are distributing power among multiple parties, eliminating single points of failure, and increasing the difficulty of side-channel attacks on private key material.

Using well-established multi-party protocols a shared private key and a common public key (DSA/ElGamal) is generated. Then further interactive protocols perform the private operations like decryption and signing of messages, provided that a previously defined threshold of parties/devices take part in the distributed computation.

The security is based on the assumption that computing discrete logarithms in large prime order subgroups of Zp is hard. The current implementation is in experimental state and should NOT be used in production environments. Details about implementation can be found in these presentation slides.

The program dkg-generate provides an implementation for DSA and the ElGamal cryptosystem. For key generation it needs a lot of strong quality randomness (cf. D. Eastlake, J. Schiller, and S. Crocker: Randomness Requirements for Security, Network Working Group, Request for Comments: 4086, June 2005) obtained from the GNU Crypto Library (libgcrypt), that means, the execution will slow down or even fail on systems (e.g. headless servers) where only low entropy sources for /dev/random are available.

Due to the interactiveness of the protocols a lot of messages between participating parties have to be exchanged in a secure way. We employ GNUnet, and in particular its mesh routed CADET service, to establish private and broadcast channels for this message exchange. A reliable broadcast protocol from LibTMCG is used as mechanism to achieve some validity, consistency, and totality in a most likely asynchronous communication environment.