Giter Site home page Giter Site logo

mahdiz / cothority Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dedis/cothority

0.0 2.0 0.0 57.09 MB

Scalable collective authority prototype

License: GNU General Public License v2.0

Shell 2.82% Go 91.69% Python 5.36% Makefile 0.11% Batchfile 0.02%

cothority's Introduction

Build Status Coverage Status

Cothority

This repository implements the collective authority (cothority) framework. It offers a framework for simulating and deploying decentralized and distributed cryptographic protocols.

It works closely together with the cryptographic-library found in dedis/crypto and allows for setting up of protocols, services, and "apps". A protocol will send back and forth messages, mostly in a tree-based structure of nodes, but it can also broadcast or bypass the tree. A service interacts with clients and will spawn and wait for the result of different protocols. An app is an example of a user-space program that can communicate to one or more services of a cothority. You can find a list of protocols and services supported later.

Warning

**The software provided in this repository is highly experimental and under heavy development. Do not use it yet for anything security-critical. or if you use it, do so in a way that supplements (rather than replacing) existing, stable signing mechanisms.

All usage is at your own risk!**

Requirements

In order to build (and run) the simulations you need to install a recent Golang version (1.5.2+). See Golang's documentation on how-to install and configure Go, including setting the GOPATH environment variable. You can run CoSi either as a standalone application or in testbed simulations, as described below.

Versions

For the moment we have two version: v0 and master.

V0

This is a stable version that depends on the v0-versions of the other dedis-packages. It will only receive bugfixes, but no changes that will make the code incompatible. You can find this version at:

https://github.com/dedis/cothority/tree/v0

If you write code that uses our library in the v0-version, be sure to reference it as

import "gopkg.in/dedis/cothority.v0"

Master

The master-branch is used for day-to-day development and will break your code about once a week. If you are using this branch, be sure to do

go get -u -t ./...

from time to time, as all dedis-dependencies change quite often.

Installation

There are three apps available:

  • cothorityd - which is the server-part that you can run to add a node
  • cosi - the cosi-protocol, service, and app, in its own repository
  • status - reads out the status of a cothority

You will find a README.md in each of its directory. To build the apps, you can run the following commands:

go get github.com/dedis/cothority/app/cothorityd
go get github.com/dedis/cosi
go get github.com/dedis/cothority/app/status

Apps

  • cothorityd - the basic
  • cosi - collective signatures
  • status - returns the status of the given group
  • cisc - handle your ssh-keys on a blockchain
  • hotpets - hotpets16-branch

Protocols

CoSi - Collective Signing

CoSi is a protocol for scalable collective signing, which enables an authority or leader to request that statements be publicly validated and (co-signed) by a decentralized group of witnesses. Each run of the protocol yields a single digital signature with size and verification cost comparable to an individual signature, but compactly attests that both the leader and perhaps many witnesses observed and agreed to sign the statement.

RandHound - Verifiable Randomness Scavenging Protocol

RandHound is a novel protocol for generating strong, bias-resistant, public random numbers in a distributed way and produces in parallel a proof to convince third parties that the randomness is correct and unbiased, provided a threshold of servers are non-malicious.

JVSS - Joint Verifiable Secret Sharing

The JVSS protocol implements Schnorr signing using joint verifiable secret sharing.

Naive and NTree

Similar to JVSS these two protocols are included to compare their scalability with CoSi's. In the naive approach a leader simply collects standard individual signatures of all participants. NTree is the same protocol but using a tree (n-ary) topology for aggregating the individual signatures.

Simulation

Starting a simulation of one the provided protocols (or your own) either on localhost or, if you have access, on DeterLab is straight forward and described in the following sub-sections.

Localhost

To run a simple signing check on localhost, execute the following commands:

# download project and its dependencies
go get -d github.com/dedis/cothority 
# build the simulation binary
cd $GOPATH/src/github.com/dedis/cothority/simul
go build
# run the simulation
./simul runfiles/test_cosi.toml

DeterLab

For more realistic, large scale simulations you can use DeterLab. Find more information on how to use DeterLab here.

SDA framework

Core of this repository is a framework for implementing secure, distributed systems. It does so by offering an API for implementing and running different kind of protocols which may rely on other, pre-defined protocols.

Using the SDA-cothority framework, you can:

  • simulate up to 32000 nodes using Deterlab (which is based on PlanetLab)
  • run local simulations for up to as many nodes as your local machines allows

The framework is round-based using message-passing between different hosts which form a tree. Every protocol defines the steps needed to accomplish the calculations, and the framework makes sure that all messages are passed between the hosts.

Directory-structure

  • sda/: basic definition of our framework
  • crypto/, log/, monitor/, network/: additional libraries for the framework
  • simul/: simulation-related code
  • app/: all apps in user-space
  • protocols/: the protocol-definitions for cothority
  • services/: services using the protocols

cothority's People

Contributors

ineiti avatar nikkolasg avatar liamsi avatar daeinar avatar christianmct avatar froelich avatar evanv03 avatar lefkok avatar pegger avatar mlncn avatar

Watchers

James Cloos avatar Mahdi Zamani avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.