Fall 2018

Projects for Fall 2018

Blockchain-based Machine Learning (Thesis)


The purpose of this project is to enable users to remain in control of their data while big companies pay the users (instead of Facebook) to use their data.

To achieve this we will integrate our accountable access control system (SCARAB) with Trusted Execution Environments (i.e Intel SGX) in order to create a system for confidentiality preserving machine learning.

This project might result to collaborating with UC Berkeley and Cornell Tech (part of IC3)

Contact: Eleftherios Kokoris Kogias

Smart Contracts on Sharded Blockchains (Thesis/ 2x Semester)


Last year the DEDIS lab introduced OmniLedger. OmniLedger redesigns the way blockchains area fundamentally built creating a decentralized payment system that can compete with VISA, an impressive increase against Bitcoin which is 1000 times slower on average.

OmniLedger is already adopted by multiple startups such as Emotiq and IOVO as the backbone of their blockchain solution.

The purpose of this project is to extend OmniLedger such that it supports smart contract execution without compromising performance.

This project might result to collaborating with Zilliqa and/or Emotiq. 

Contact: Eleftherios Kokoris Kogias

OmniLedger: How to Scale Blockchains (Thesis,  Semester)

Designing a secure permissionless distributed ledger that performs on par with centralized payment processors such as Visa is challenging. Most existing distributed ledgers are unable to “scale-out” – growing total processing capacity with number of participants – and those that do compromise security or decentralization. This work presents OmniLedger, the first scaleout distributed ledger that can preserve long-term security under permissionless operation. OmniLedger ensures strong correctness and security by using a bias-resistant public randomness protocol to choose large statistically representative shards to process transactions, and by introducing an efficient cross-shard commit protocol to handle transactions affecting multiple shards atomically. In addition, OmniLedger optimizes performance via scalable intra-shard parallel transaction processing, ledger pruning via collectively-signed state blocks, and optional low-latency “trustbut-verify” validation of low-value transactions. 

OmniLedger PoC has received a lot of industrial interest. The aim of this project is to create a better version of OmniLedger’s software (and  demo). On the process you will get in touch with the most important concepts of blockchain and distributed systems design and get to know the Go language. A final demoable version is highly recommended 

ContactEleftherios Kokoris Kogias

Cothority Web-Frontend – Interacting with Blockchains (Semester/Bachelor/Master)


We built a decentralized cryptography framework called cothority, that we use for testing as well as for deployment of our distributed, decentralized cryptographic algorithms. The current web-frontend is able to interact with the some of the cothority services: http://status.dedis.ch. As time goes by, new services are added and need to fit into the frontend.

For a bachelor- or master-student, this project will be adding an existing service to the website. For a master-thesis-student, you could chose one of our ongoing research projects, work out the details and implement both the backend and the frontend.

  • Blockchains: Create SkipChains and evolve the access-control to those or extend the blockchain explorer. Another possibility is to work on the Omniledger implementation.
  • Anonymity sets: Write a login-module for the PoP service
  • Applications: Manage ssh-keys through our skipchain using the CISC service

The web-frontend is written in javascript using React. The backend is written in go. Our internal blockchain has some novel features that make it fast and lightweight.

Contact: Linus Gasser

Cothority Android Application (Semester/Bachelor/Master/Master thesis)


The cothority is a set of nodes programmed to run decentralized, distributed cryptographic algorithms. These nodes can interact with the outside world through services. Interacting with these services is done through protobuf over websockets, and a broad range of services exists.

We have a working android application that interacts with our cothority backend. Basic functionality, including cryptographic signing and encrypting, is available. Your job is to extend our application and add the following functionality (pick 2):

  • E-voting – add a frontend for the evoting service in cothority. Being able to set up a new voting chain, add elections and vote.
  • Beercoins – finally implement a long running joke in the DEDIS lab. Anonymous beer for all! This will use the PoP-tokens already implemented in the backend.
  • Surf on the blockchain – add a browser for the blockchain-data that uses the web-storage of CISC, another service using blockchains to store different data.
  • Manage Omniledger chains – omniledger uses skipchains to implement a sharded, high-performance blockchain. Port the command-line interface to a nice graphical interface, eventually including a blockchain explorer

The following are reserved for master students, or for a master thesis, as they also include development in the backend and some research:

  • Use the blockchain for a chat program
  • Use our identity framework to mange and share addresses and/or calendars in a privacy-conscious way
  • Add a password-manager that is kept on the private blockchain

Contact: Linus Gasser

Distributed Backend Development (Semester/Master)


Most of our research projects find their way into our cothority framework that gathers more or less stable code for decentralized distributed protocols and applications. The cothority is based on the onet library that supports easy sending/receiving of messages between conodes and setting up services to communicate with clients, either CLI, web or mobile apps.

Work on Onet is very important, as it is the foundation of our cothority framework. Starting fall 2018 we’ll allow API changes again and we want to implement new functionalities and clean up existing ones. You will be working with the engineering team and have to ask the PhD students what their needs are and how we can improve Onet to follow the ever changing requirements of its users. A non-exhaustive list of example projects is:

  • Integrate Lattice Based crypto into the onet framework
  • Gossiping messages in onet
  • Change the way the communication is done: instead of a tree, being able to define any graph, and optimize for non-tree communication
  • Improve simulation code to be able to deploy not only on deterlab and iccluster, but also on Amazon cloud and others

Contact: Linus Gasser

Breaking the Chain (Semester/Bachelor/Master)


In this project we will do an in-depth architectural security analysis of deployed blockchain systems to identify security vulnerabilities such as single points of failure/compromise in the underlying protocols, cryptographic weaknesses, or software bugs.

Equipped with that knowledge, we will then setup a test network and prototype some actual exploits for the identified weaknesses to show their practical feasibility. Finally, we will design countermeasures to fix those security issues.

We expect that students are highly self-motivated and have no problems in working with large code bases. Ideally, students have already some hands-on experience in IT security, e.g., they have participated in CTFs or have solved some CTF-like challenges from Cryptopals, Root-me, Vulnhub, etc.

Contacts: Ludovic BarmanNicolas GaillyKirill NikitinPhilipp Jovanovic

Locality-Preserving Smart Contracts (Semester/Bachelor/Master/Master thesis)


Our goal is to create a world-wide blockchain that has the following locality property: when Alice and Bob interact through a smart contract on a locality-preserving blockchain, the execution latency is proportional to their actual network latency. For this purpose, we apply Crux, a locality-preserving framework built in DEDIS, and deploy several blockchain shards across overlapping geographical zones of exponentially-increasing latency. Thus, customers within Switzerland, for example, only incur the latency spanning the Swiss geographical area, while a customer in Germany and one in Italy synchronize through the European shard.

One of the challenges of this project is to ensure strong consistency of smart contracts executed within the framework while preserving locality. In other words, how can the two users in Switzerland obtain strongly-consistent outputs while keeping the latency low, as much as possible proportional to latency across Switzerland? Compared to Crux, which provides locality-preserving strong consistency guarantees for <key,value> stores, smart contracts require strong consistency in a transactional fashion. Besides the research challenges, the goal is to implement such locality-preserving smart contracts using skipchains, the blockchain framework developed within DEDIS. Depending on the student’s interest and specific project credits, the project can contain a subset of the challenges above.

Requirements: good understanding of distributed systems and concurrency, enthusiasm for Go programming and system measurements; networking knowledge is a plus.

Contact: Cristina Basescu

Fault tolerance in Crux (Semester/Bachelor/Master)


Crux is a general framework to build locality-preserving distributed systems, developed in DEDIS. For example, we can deploy a Redis pub-sub system using Crux and guarantee that, if two users are nearby in ping latency terms, then their interaction through the resulting locality-preserving Redis deployment is proportional to their ping latency. At the heart of Crux is a hierarchical decomposition of geographical areas among nodes, which ensures system management scales to global networks where each node intermediates interactions in its area in a locality preserving fashion – i.e., it becomes a landmark in that region. The landmark becomes a point of reference for measuring distances in its area. Specifically, Crux assigns to each node a landmark level, directly proportional to the area it covers as a landmark, and it lets each node build a shortest-path tree for its area (the so-called stretch tree). By construction, in the collection of stretch trees, any two nodes always share at least one tree. As a result, higher-level nodes act as universal landmarks around which distant users can always interact, whereas lower-level nodes act as local landmarks, incurring latency proportional to inter-user distance.

Currently Crux doesn’t support node failures or node set reconfigurations. The goal of this project is to implement fault tolerance for stretch trees, which includes smooth tree reconfiguration while maintaining locality properties as much as possible. We consider only crash failures and voluntary node join and departure. 

Requirements: good understanding of distributed systems and concurrency, enthusiasm for Go programming and system measurements, networking knowledge

Contact: Cristina Basescu


Browser Plugin for Anonymous and Secure Email Communication (Semester/Thesis/Master)


Emails are still one of the most dominant ways for business and academic communication nowadays, but the email protocols do not provide any data protection by default. While OpenPGP is currently a de-facto standard for encrypting email content, it leaks important metadata in plain text, such as identities of recipients,  encryption algorithms used and an actual length of the content. In addition to deanonymizing the communicating parties, it can lead to various problems, as breaking archived-for-years emails due to a discovered vulnerability in an encryption algorithm or inferring the results of an email exchange by the content length.

In DEDIS, we have designed a novel technique that enables encoding encrypted data and its related metadata as a uniform random string, only comprehensible by the intended recipient. The goal of this master project is to develop a browser plugin for anonymous and secure email communication using the designed technique. The starting point can be an open-source PGP plugin, like Mailvelope or E2Email, where the PGP part will be substituted. 

Substantial knowledge of JavaScript is required for this project.

Contact: Kirill Nikitin