A pythonic library to use Garbled Circuits
Garbled Circuits allow two distrusting parties to compute a joint function while keeping their inputs private. More precisely, it allows Alice with input x and Bob with input y to compute a function f(x, y) without Alice ever knowing y and without Bob knowing x. The way it does so is by first translating f to a boolean circuit from which it will cleverly obfuscate or garble the circuit to allow the computation of f while keeping the inputs private.
The classical example is that of two millionaires who wish to find out who is richer without revealing their wealth. In that case, f becomes the “>” (greater than) function, and x and y are their wealth.
Gabes implements garbled circuits in Python. The application runs as a command line interface but the functions required to run garbled circuits can be used without the command line (see gabes).
At the command line either via pip:
$ pip install gabes
Or, if you have virtualenvwrapper installed:
$ mkvirtualenv gabes $ pip install gabes
Each party will run their own instance of the program on their computer as a CLI app. The garbler will provide the IP and port number to establish the connection with the evaluator.
gabes -g -grr3 -c Desktop/my-circuit.circuit -a localhost:5000
gabes -e -grr3 -a localhost:5000
usage: gabes [-h] [-g] [-e] [-b bits] [-i identifier [identifier ...]] [-c file] -a ip:port [-cl] [-pp] [-grr3] [-free] [-grr2] [-fle] [-half] Program to garble and evaluate a circuit. optional arguments: -h, --help show this help message and exit -g, --garbler Set this flag to become the garbler -e, --evaluator Set this flag to become the evaluator -b bits, --bits bits Include your private input bitstring to the circuit (e.g. 001011) -i identifier [identifier ...], --identifiers identifier [identifier ...] Indicate which input wires you supply to the circuit (e.g. -i A C D) -c file, --circuit file Path of the file representing the circuit. Only the garbler needs to supply the file -a ip:port, --address ip:port IP address followed by the port number -cl, --classical Set this flag for classical garbled circuits -pp, --point-and-permute Set this flag to include point-and-permute -grr3, --grr3 Set this flag for GRR3 garbled circuits -free, --free-xor Set this flag for free-xor garbled circuits -fle, --flexor Set this flag for flexor garbled circuits -half, --half-gates Set this flag for half gates garbled circuits
All the documentation can be found in https://gabes.readthedocs.io/en/latest/
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for gabes-0.1.5-py2.py3-none-any.whl