Sequre and Shechi are an end-to-end, statically compiled and performance engineered, Pythonic framework for building efficient secure multiparty computation (MPC), homomorphic encryption (HE), and multiparty homomorphic encryption (MHE) pipelines in bioinformatics.
Note: Sequre/Shechi runs only on Linux at the moment.
Install Codon first:
mkdir $HOME/.codon && curl -L https://github.com/exaloop/codon/releases/download/v0.17.0/codon-$(uname -s | awk '{print tolower($0)}')-$(uname -m).tar.gz | tar zxvf - -C $HOME/.codon --strip-components=1
Then install Sequre:
curl -L https://github.com/0xTCG/sequre/releases/download/v0.0.20-alpha/sequre-$(uname -s | awk '{print tolower($0)}')-$(uname -m).tar.gz | tar zxvf - -C $HOME/.codon/lib/codon/plugins
Afterwards, add alias for sequre command:
alias sequre="find . -name 'sock.*' -exec rm {} \; && CODON_DEBUG=lt $HOME/.codon/bin/codon run --disable-opt="core-pythonic-list-addition-opt" -plugin sequre"
Clone the repository:
git clone https://github.com/0xTCG/sequre.git && cd sequre
and check the code in the examples for quick insight into Sequre.
sequre examples/local_run.codon
This will simulate the run in a two-party setup with a trusted dealer.
At each party run:
SEQURE_CP_IPS=<ip1>,<ip2>,...,<ipN> sequre examples/online_run.codon <pid>
where <ipN>
denotes the IP address of each party and <pid>
denotes the ID of the party.
For example, in a two-party setup with a trusted dealer, run (IP addresses are random):
SEQURE_CP_IPS=192.168.0.1,192.168.0.2,192.168.0.3 sequre examples/online_run.codon 0
at a trusted dealer (CP0).
SEQURE_CP_IPS=192.168.0.1,192.168.0.2,192.168.0.3 sequre examples/online_run.codon 1
at the first party (CP1).
SEQURE_CP_IPS=192.168.0.1,192.168.0.2,192.168.0.3 sequre examples/online_run.codon 2
at the second party (CP2).
For (much) better performance but without debugging features such as backtrace, add -release
flag immediatelly after sequre
command:
sequre -release examples/local_run.codon --skip-mhe-setup
Note: --skip-mhe-setup
flag disables the homomorphic encryption setup since examples/local_run.codon
runs only Sequre (SMC).