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
File details
Details for the file gabes-0.1.5.tar.gz
.
File metadata
- Download URL: gabes-0.1.5.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c32a917b8060f0556ff597f882af0523a6b6b93ef048247c72a73ee6c7160d06 |
|
MD5 | 19cdf5d9d3b85048a96d78ed7eaba32e |
|
BLAKE2b-256 | 82521cce07cd2bc2c5888314086489a70e213327bf6236acf74635305c616873 |
File details
Details for the file gabes-0.1.5-py2.py3-none-any.whl
.
File metadata
- Download URL: gabes-0.1.5-py2.py3-none-any.whl
- Upload date:
- Size: 23.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81660c43ecec7d37612b94275aa3e7786c924ab3223e76978a611af7d1936033 |
|
MD5 | cb3e17c0e34f8d9b48a9943762223a96 |
|
BLAKE2b-256 | 218bcb6432a39350267e43106729598bf79b3281f085a86fca846c749f114af5 |