|
1 | 1 | # Cothority |
2 | 2 |
|
3 | | -The code permits the testing and running of a cothority-system together with the applications. It is split up in |
4 | | -deployment, application and protocols. The basic cryptographic code comes from DeDiS/crypto. The following modules |
5 | | -are used: |
| 3 | +The code in this repository permits the testing and running of a cothority-system together with some applications. It is split up in deployment, application and protocols. The basic cryptographic code comes from [DeDiS/crypto](https://github.com/DeDiS/crypto). |
6 | 4 |
|
7 | | -Deploy |
| 5 | +## Warning |
| 6 | +**The software provided in this repository is highly experimental and under heavy development. Do not use it for anything security-critical. All usage is at your own risk!** |
8 | 7 |
|
9 | | - * Deter - running |
10 | | - * Go-routines - in preparation |
11 | | - * Future: |
12 | | - * Docker |
13 | | - * LXC |
| 8 | +## Deploy |
14 | 9 |
|
15 | | -Applications |
| 10 | +* Available: |
| 11 | + * [DeterLab](deterlab.net) |
| 12 | + * Localhost |
| 13 | +* Planned: |
| 14 | + * Docker |
| 15 | + * LXC |
16 | 16 |
|
17 | | - * timestamping |
18 | | - * signing - needs to collect more data |
19 | | - * vote - doesn't run yet. |
20 | | - |
21 | | -Protocols |
| 17 | +## Applications |
22 | 18 |
|
23 | | - * collective signing |
24 | | - * joint threshold signing - work in progress |
25 | | - |
26 | | -# How to run |
| 19 | +* Available: |
| 20 | + * Timestamping |
| 21 | + * Signing |
| 22 | + * Shamir-secret-service: regular or tree signing |
| 23 | +* Planned: |
| 24 | + * Randhound: decentrailzed randomness cothority |
| 25 | + * Vote |
27 | 26 |
|
28 | | -For the moment only the timestamping on Deterlab works: |
| 27 | +## Protocols |
29 | 28 |
|
30 | | -In the top-level directory, type |
| 29 | +* Collective signing |
| 30 | + |
| 31 | +# How to Run a Cothority |
| 32 | + |
| 33 | +All applications in `app/*` are stand-alone. Currently, they can be used by deploying to either localhost or DeterLab. |
| 34 | + |
| 35 | +## Localhost |
| 36 | +To run a simple signing check on localhost, execute the following commands: |
31 | 37 |
|
32 | 38 | ``` |
33 | | -go get ./... |
34 | | -go build |
35 | | -./cothority |
| 39 | +$ go get ./... |
| 40 | +$ cd deploy |
| 41 | +$ go build |
| 42 | +$ ./deploy -deploy localhost simulation/sign_single.toml |
36 | 43 | ``` |
37 | 44 |
|
38 | | -then enter the name of the deterlab-installation, your username and your project-name, and you should |
39 | | -be ready to go. The arguments are: |
| 45 | +## DeterLab |
| 46 | + |
| 47 | +If you use the `-deploy deterlab` option, then you are prompted to enter the name of the DeterLab installation, your username, and the names of project and experiment. There are some flags which make your life as a cothority developer simpler when deploying to DeterLab: |
| 48 | + |
| 49 | +* `-nobuild`: don't build any of the helpers which is useful if you're working on the main code |
| 50 | +* `-build "helper1,helper2"`: only build the helpers, separated by a ",", which speeds up recompiling |
| 51 | +* `-range start:end`: runs only the simulation-lines including `start` and `end`. Counts from 0, start and end can be omitted and represent beginning and end of lines, respectively. |
40 | 52 |
|
41 | | - * -debug - number between 0 and 5 - 0 is silent, 5 is very verbose |
42 | | - * -deploy [deterlab,gochannels] - by default is "deterlab" - gochannels are next |
43 | | - * -app [server,client] - whether to run the application as server or client - not yet implemented |
| 53 | +### SSH-keys |
| 54 | +For convenience, we recommend that you upload a public SSH-key to the DeterLab site. If your SSH-key is protected through a passphrase (which should be the case for security reasons!) we further recommend that you add your private key to your SSH-agent / keychain. Afterwards you only need to unlock your SSH-agent / keychain once (per session) and can access all your stored keys without typing the passphrase each time. |
44 | 55 |
|
45 | | -For the sake of easy development there are some switches that are to be used only for the |
46 | | -deterlab implementation: |
| 56 | +**OSX:** |
| 57 | + |
| 58 | +You can store your SSH-key directly in the OSX-keychain by executing: |
| 59 | + |
| 60 | +``` |
| 61 | +$ /usr/bin/ssh-add -K ~/.ssh/<your private ssh key> |
| 62 | +``` |
47 | 63 |
|
48 | | - * -nobuild - don't build any of the helpers - useful if you're working on the main code |
49 | | - * -build "helper1,helper2" - only build the helpers, separated by a "," - speeds up recompiling |
50 | | - * -machines # - tells how many machines are to be used for the run |
| 64 | +Make sure that you actually use the `ssh-add` program that comes with your OSX installation, since those installed through [homebrew](http://brew.sh/), [MacPorts](https://www.macports.org/) etc. **do not support** the `-K` flag per default. |
51 | 65 |
|
| 66 | +**Linux:** |
| 67 | + |
| 68 | +Make sure that the `ssh-agent` is running. Afterwards you can add your SSH-key via: |
| 69 | + |
| 70 | +``` |
| 71 | +$ ssh-add ~/.ssh/<your private ssh key> |
| 72 | +``` |
52 | 73 |
|
53 | 74 | # Applications |
54 | 75 |
|
| 76 | +## CoNode |
| 77 | + |
| 78 | +You can find more information about CoNode in the corresponding [README](https://github.com/DeDiS/cothority/blob/development/app/conode/README.md). |
| 79 | + |
55 | 80 | ## Timestamping |
56 | 81 |
|
57 | | -For the moment the only running application - it sets up servers that listen for client-requests, collect all |
58 | | -requests and handle them to a root-node. |
| 82 | +Sets up servers that listen for client-requests, collects all requests and hands them to a root-node for timestamping. |
59 | 83 |
|
60 | 84 | ## Signing |
61 | 85 |
|
62 | | -A simple mechanism that only receives a message, signs it, and returns it. |
| 86 | +A simple mechanism that is capable of receiving messages and returning their signatures. |
63 | 87 |
|
64 | | -## Voting |
| 88 | +## RandHound |
65 | 89 |
|
66 | | -Not done yet |
| 90 | +Test-implementation of a randomization-protocol based on cothority. |
67 | 91 |
|
68 | 92 | # Protocols |
69 | 93 |
|
70 | 94 | We want to compare different protocols for signing and timestamping uses. |
71 | 95 |
|
72 | | -## Collective signing |
| 96 | +## Collective Signing |
73 | 97 |
|
74 | 98 | This one runs well and is described in a pre-print from Dylan Visher. |
75 | 99 |
|
76 | | -## Join threshold signing |
| 100 | +## Shamir Signing |
| 101 | + |
| 102 | +A textbook shamir signing for baseline-comparison against the collective signing protocol. |
| 103 | + |
77 | 104 |
|
78 | | -A baseline-comparison being developed by the DeDiS-lab at EPFL. |
| 105 | +# Further Information |
79 | 106 |
|
| 107 | +* Decentralizing Authorities into Scalable Strongest-Link Cothorities: [paper](http://arxiv.org/pdf/1503.08768v1.pdf), [slides](http://dedis.cs.yale.edu/dissent/pres/150610-nist-cothorities.pdf) |
| 108 | +* Certificate Cothority - Towards Trustworthy Collective CAs: [paper](https://petsymposium.org/2015/papers/syta-cc-hotpets2015.pdf) |
0 commit comments