Cerebro Setup¶
Cerebro has a few core dependencies that need to be setup before it can be used.
SCALE-MAMBA¶
The documentation fully detailing SCALE-MAMBA can be obtained by running make doc
in the SCALE-MAMBA repository.
The following is copied from SCALE-MAMBA’s current setup documentation.
Prerequisite Libraries:¶
gcc/g++, tested with version 7.2.1
MPIR (compiled with the -cxx flag)
python 2.7.5 (ideally with gmpy2 installed)
OpenSSL (tested with version 1.1.0)
Crypto ++ (tested with version 7.0)
Setup Steps for SCALE-MAMBA¶
After installing the libraries, go to CONFIG.mine and change the entry corresponding with
ROOT
to point to the current path of where the SCALE-MAMBA directory is. Also, change the entry corresponding withOSSL
to have it point to the installed OpenSSL directory.Run
make progs
and SCALE-MAMBA should compile.Create a config file with all the servers participating in the multiparty computation. Line i should have the IP address of the i’th server.
Go to mc2/Config and run the script gen_cert.py and pass in the previously made config file along with the number of parties participating.
Additionally, run
python mc2/Config/make_config.py
which sets up the Network configuration for SCALE-MAMBA to use.Then in mc2/SCALE-MAMBA, run the command:
echo '2 1 p' > ./Setup.x
where p is the length of the prime in terms of number of bits used in the secure computation.
EMP-AGMPC¶
Prerequisite Libraries:¶
- emp-toolkit:
- Install:
cmake
git
build-essential
libssl-dev
libgmp-dev
Boost
relic
cd into emp-tool and run
cmake . && make && sudo make install
.
- emp-ot: Installation instructions are here: https://github.com/emp-toolkit/emp-ot
After installing emp-toolkit, just cd into emp-ot and run
cmake . && make && sudo make install
.
Setup Steps for EMP-AGMPC¶
- The make_config.py script should have set up all the network parameters inside emp-agmpc/emp-agmpc/cmpc_config.h, but if not, you’ll have to manually input the IP’s of each server.
IP[i] will hold the IP address of the ith server.
Note that everything here is 1-indexed so the first server goes into IP[1].
Run
cmake . && make
Alternatives¶
Alternatively, you can pull the docker image from here:
docker pull rdeng2614/cerebro:initial_image
which has all the dependencies installed. Then, you can clone the cerebro repository and directly start setting up from there.
Testing¶
Included with Cerebro are a set of tests for both SCALE-MAMBA and emp-agmpc.
To run the tests with SCALE-MAMBA, run
cd mc2/crypto_backend/SCALE-MAMBA
and then runpython test_scripts/test_scale_mamba.py
.To run the tests with emp-agmpc, run
cd mc2/crypto_backend/emp-toolkit/emp-agmpc
and then runpython test_scripts/test_gc.py
.