DCnets-image This project is kindly supported by NLnet.

Dining Cryptographer Networks (DCnets)


  • April-May 2021 - Working on Milestones 4 & 5
  • January-March 2021 - Preparing Milestones 2 & 3 for release
  • 31.12.2020 - Migration of project website to https://dcnets.readthedocs.io
  • 28.10.2020 - Paper about implementation of cryptographic functions presented at MSPN'2020.
  • 15.09.2020 - Paper about implementation of cryptographic functions submitted to conference.
  • 15.07.2020 - Rubaiya joined the team.
  • 01.07.2020 - Briag joined the team.
  • 29.05.2020 - the new website is online.
  • 07.05.2020 - student jobs announced.
  • 25.04.2020 - gitlab repository created.


The Dining Cryptographers protocol is a multi-party protocol for untraceable communication that offers information-theoretical security and does not require a trusted third party. For many years this protocol was considered to be impractical; mainly because a malicious participant could just disrupt the communication and remain undetected. However, recent advances in cryptographic research have given hope that these problems can be overcome and that practical applications are possible.

We are interested in novel techniques that allow to detect misbehaving participants without compromising the untraceablility provided by the protocol. These techniques are based on simple cryptographic primitives like the Diffie-Hellman key exchange and zero-knowledge proofs about discrete logarithms.

Our aim is to turn the dining cryptographers protocol into a practical building block that can be used to realize applications in various fields like: multiparty computation, electronic voting or low-latency anonymous communication.

Planned Milestones

The goal is to implement a library for untraceable communication based on the DCnet paradigm, which hides most of the complexity involved behind a user-friendly API. The deliverables include documentation and a demo application. The performance-critical parts will preferably be implemented in C and Assembler, while the more complex higher level functions will rather be implemented in Python. The code will be released under a MIT license and will be published on a publicly accessible repository.

1/ Project Setup (done)

Drafting of specifications and documentation for the development.

  • Provide a tentative software bill of materials [ok]
  • Provide a website for the project [ok]
  • Provide a publicly accessible repository [ok]
  • Provide a first draft of a specification for the cryptographic operations [ok]
  • Provide a first draft of a specification for the DCnet protocol [ok]
  • Advertise Student Jobs [ok]

2/ Cryptographic Functions

Cryptographic functions for key-exchange, commitments and zero-knowledge proofs.

  • Provide an implementation of a library for Key-exchange
  • Provide an implementation of a library for Pedersen commitments
  • Define high-level APIs and provide corresponding Python wrappers
  • Provide an implementation of zero-knowledge proofs to be used in our DCnet protocol

3/ DCnet Protocol

A library for a DCnet protocol with collision resolution and zero-knowledge verification that every participant is properly executing the protocol. This code generates and processes the packets, but does not actually transmit anything.

  • Provide a description of the protocol (e.g., textual with message sequence charts)
  • Provide an implementation to generate and handle packets exchanged in a DCnet protocol (without doing any actual transmission)

4/ Multi-Party Network

An extension of the DCnet library, with code to setup and maintain a group (via XMPP or a similar technology) and to transmit data over a real network.

  • Provide documentation for developers
  • Provide an implementation

5/ Demo Application & Finalization

Design and implementation of a demo application, which operates at the network level and which allows a user to create/join a DCnet and to anonymously send packets to other participants.

  • Provide an implementation
  • Provide documentation for users, explaining how to configure and use the application
  • Process results from external security review
  • (Check for certified WCAG accessible, if applicable)