mainDistributed Privacy Guard - Summary

Membership Info
Project Admin:
1 active member

Group identification
Id: #11776
System Name: dkgpg
Name: Distributed Privacy Guard
Group Type: non-GNU software and documentation

Search in this Group


This project is not part of the GNU Project.

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.

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.

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. However, there are still some limitations due to the predefined timeout values. Such problems may be recognized by looking for timeout error messages on STDERR.

Distributed Privacy Guard contains a bunch of command-line programs:
The program dkg-generate provides an implementation for DSA/DSS 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.

The program dkg-encrypt encrypts a text message for a given public key in OpenPGP format. It uses AES256 as symmetric cipher and ElGamal as public-key algorithm. A quite similar encryption can be done by any OpenPGP-compatible implementation. Conversely, a corresponding threshold decryption protocol (see Ronald Cramer, Rosario Gennaro, and Berry Schoenmakers: A Secure and Optimally Efficient Multi-Authority Election Scheme, Advances in Cryptology – EUROCRYPT ’97, LNCS 1233, pp. 103–118, 1997) has been implemented in the program dkg-decrypt. It provides an interactive version and a non-interactive version for computing, verifying, and combining the required decryption shares. Finally, it outputs the decrypted message.

The program dkg-sign creates a detached signature on a binary file for a shared DSA/DSS key, if a threshold of the parties work together in an interactive signing protocol. Such a detached signature can be verified with any OpenPGP-compatible implementation. Thus it solves the problem of distributed code-signing without secret key splitting (e.g. libgfshare) and laborious reconstruction ceremonies.

Please note that for building dkg-generate, dkg-sign and the interactive version of dkg-decrypt the development files for a very recent GNUnet version (at least v0.11.x, which is when writing these lines still not yet released) must be present at configure-time resp. compile-time of DKGPG. However, as alternative to GNUnet a simple TCP/IP based service for message exchange is included. With torsocks and port-forwarding of a hidden service this allows running the interactive programs over the well-known TOR network.

The package depends on following free software libraries:

  • LibTMCG - providing the advanced cryptographic protocols for DKG and Threshold Cryptography,
  • GNU Crypto Library (libgcrypt) - providing basic cryptographic primitives (e.g. randomness, message digests, and symmetric ciphers),
  • GNU Multiple Precision Arithmetic Library (libgmp) - providing basic mathematical operations on large integers.

Registration Date: Sun 24 Sep 2017 12:45:44 PM UTC
License: GNU General Public License v2 or later
Development Status: 4 - Beta


Latest News rss feed
Distributed Privacy Guard 1.0.3 released
     posted by stamer, Sun 10 Dec 2017 11:22:36 AM UTC - 0 replies

Only small bugfixes are included in this release. However, the most recent version of LibTMCG is required to recognize some important library changes (e.g. increased S2K count for secret key encryption).

Distributed Privacy Guard 1.0.2 released
     posted by stamer, Sun 03 Dec 2017 09:38:05 AM UTC - 0 replies

This release brings small improvements for dkg-keyinfo and fixes some bugs and memory leaks. It also adjusts the flags of shared DSA keys generated with dkg-generate due to a hidden RFC 4880 requirement. DKGPG now additionally contains the program dkg-keycheck for analyzing public DSA and ElGamal keys w.r.t. some basic properties.

Distributed Privacy Guard 1.0.1 released
     posted by stamer, Sun 19 Nov 2017 12:10:34 PM UTC - 0 replies

Small improvements have been achieved in this maintenance release: First, the program dkg-keyinfo now contains the option "-m" to migrate an abandoned peer identity. However, the choice is limited in some sense, because the new peer ...

[Read more]
Distributed Privacy Guard 1.0.0 released
     posted by stamer, Sun 12 Nov 2017 11:21:10 AM UTC - 0 replies

This is the initial release of Distributed Privacy Guard (DKGPG).

Please note that the software is still in experimental state and should NOT be used in production environments.

[Submit News]
[4 news in archive]

Back to the top

Powered by Savane 3.1-cleanup1