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 easy_install or pip:
$ easy_install gabes $ 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.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0a25ce3b5caf67c540934a346f9763a5ea7b165835671917036a12e7ff8c98a |
|
MD5 | 696a6474ada76c35f4127beb2e3f20d7 |
|
BLAKE2b-256 | fe8531d7e7ffcdaced9e7fbf18bd7a0b9ca163de537cfaa2ef96ab19a46d5df3 |