Skip to main content

A pythonic library to use Garbled Circuits

Project description

https://travis-ci.org/nachonavarro/gabes.svg?branch=master https://img.shields.io/badge/License-MIT-yellow.svg

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

gabes-0.1.5.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

gabes-0.1.5-py2.py3-none-any.whl (23.5 kB view details)

Uploaded Python 2 Python 3

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

Hashes for gabes-0.1.5.tar.gz
Algorithm Hash digest
SHA256 c32a917b8060f0556ff597f882af0523a6b6b93ef048247c72a73ee6c7160d06
MD5 19cdf5d9d3b85048a96d78ed7eaba32e
BLAKE2b-256 82521cce07cd2bc2c5888314086489a70e213327bf6236acf74635305c616873

See more details on using hashes here.

File details

Details for the file gabes-0.1.5-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for gabes-0.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 81660c43ecec7d37612b94275aa3e7786c924ab3223e76978a611af7d1936033
MD5 cb3e17c0e34f8d9b48a9943762223a96
BLAKE2b-256 218bcb6432a39350267e43106729598bf79b3281f085a86fca846c749f114af5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page