Metadata-hiding communication from shuffling secret-shared data
To run the system, run the following command on each server, with serverNums in order 0, 1, 2, ..., k, -1. The paramFile you use should have k+1 servers.
server [serverNum] [paramFile]
ParamFile holds one parameter per line, as described below. running ./server help will also print directions, and there are examples in this repository under server/params/.
-
The first line is the number of servers
numServersin the system (k). For the 1 out of 3 secure variant of the system, set numServers to 2 (server -1 doesn't count toward the total) -
The second line is the number of different parameter sets to evaluate the system with (
numParams) -
Next there are at least
numServerslines, each of which holds the address of the corresponding server in the form addr:port -
The list is terminated by a line which only says
PARAMS -
Next there are at least
numParamssets of three lines each:-
First, either the word
messagingorstandardto indicate the evaluation mode. In messaging mode, only the first block of each message is MACed. -
Second, the number of 16-byte blocks in each message
-
Third, the number of messages in a shuffling batch
-
The performance measurement for the 1 of 3 system starts when server -1 begins to prepare share translations and beaver triples.
Performance measurement for k-1 of k system starts after the servers are sent the preprocessing information
Each set of evaluation parameters are run 5 times, and the average is reported.
To evaluate on a system with more than 16 cores, modify the PickNumThreads function accordingly in mycrypto/crypto.go.
Please do not use this software to secure real-world communications. The purpose of this software is to evaluate the performance of the system, so it is not hardened for sensitive applications