geektoni / whanau-sybil-proof-DHT

Implementation of Whanau, a Sybil-proof Distributed Hash Table, using Peersim.
7 stars 0 forks source link
distributed-hash-table distributed-systems java peersim whanau

WhanauProtocol: A Sybil-proof Distribued Hash Table implemented in Peersim

Brief Overview

Whanau is a novel routing protocol for distributed hash tables (DHTs) that is efficient and robust against
Sybil attacks. We replicated the original paper [1] providing one of the first open-source Java-based implementations of the protocol. We performed several experiments in order to assess the real efficiency of the protocol on large-scale systems by using the Peersim framework. We tested its resilience under the presence of clustering attacks.

A report which summarize Whanau's procedure and the results can be found here.

[1] Lesniewski-Laas, Christopher, and M. Frans Kaashoek. "Whanau: A sybil-proof distributed hash table." (2010).

Installation

The project requires Java 1.8 and Maven and it was tested on Ubuntu 16.04 and 18.04, but it should work also on other Unix based machines (MacOS or other Linux distribution). No testing on Windows was performed.

In order to build the project you need to follow these steps:

git clone https://github.com/geektoni/whanau-sybil-proof-DHT
mvn initialize
mvn compile

If you encounter any problems feel free to open an issue on Github.

Usage

The protocol can be tested by using the following commands:

cd whanau-sybil-proof-DHT
mvn exec:java -Dexec.mainClass="peersim.Simulator" -Dexec.args="whanau.cfg"

It will run the Peersim's simulation using the whanau.cfg file to set up its internal configurations. The directory configurations contains several configuration files which can be used to test the protocol on different network conditions (varying the percentage of attack edges, the number of layers, the table sizes, etc.).

In order to run whanau with custom configuration, you need to run the following:

mvn exec:java -Dexec.mainClass="peersim.Simulator" -Dexec.args="configurations/<filename>.cfg"

Preset configurations

There are 5 configuration files ready to run:

  1. 10e4_nodes_1_layer_20perc_attack_edges.cfg
  2. 10e4_nodes_3_layer_20perc_attack_edges.cfg
  3. 10e4_nodes_10e3_fingers_and_succs_25perc_attack_edges_3_layers.cfg
  4. 10e4_nodes_no_attack.cfg
  5. dblp-dataset_15perc_attack_edges_5_layers.cfg

Running (1) and (2) highlights the difference that layers make in Whanau: percentage of success should pass from \~73% to \~96%. These networks have both: 10000 nodes, 100 fingers and successors per layer.

(3) shows that in the presence of a strong attack, having much more fingers and successors per layer (1000 instead of the standard 100) doesn't make much difference when dealing with Sybil entities.

(4) is just a vanilla network that embodies the ideal situation of no attacks

(5) loads a real social network (DBLP) instead of a surrogate one and tests the performances of the protocol with 5 layers and 15% of attack edges

NOTES: If the network should be loaded from a file make sure that:

Contributors

Giovanni De Toni: giovanni.detoni@studenti.unitn.it

Andrea Zampieri: andrea.zampieri@studenti.unitn.it