A pythonic library to use Garbled Circuits
Project description
Introduction
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).
Installation
At the command line either via pip:
$ pip install gabes
Or, if you have virtualenvwrapper installed:
$ mkvirtualenv gabes $ pip install gabes
Usage
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.
Garbler’s Side:
gabes -g -grr3 -c Desktop/my-circuit.circuit -a localhost:5000
Evaluator’s Side:
gabes -e -grr3 -a localhost:5000
Flags
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
Documentation
All the documentation can be found in https://gabes.readthedocs.io/en/latest/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gabes-0.1.5-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81660c43ecec7d37612b94275aa3e7786c924ab3223e76978a611af7d1936033 |
|
MD5 | cb3e17c0e34f8d9b48a9943762223a96 |
|
BLAKE2b-256 | 218bcb6432a39350267e43106729598bf79b3281f085a86fca846c749f114af5 |