Skip to main content
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/

Metadata

Release files for gabes 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gabes 0.1.5
File Size Uploaded
gabes-0.1.5.tar.gz 22.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gabes 0.1.5
File Interpreter ABI Platform
gabes-0.1.5-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 45.7 kB

Release files / gabes-0.1.5.tar.gz

Download URL gabes-0.1.5.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c32a917b8060f0556ff597f882af0523a6b6b93ef048247c72a73ee6c7160d06
BLAKE2b-256 checksum
How to use checksums
82521cce07cd2bc2c5888314086489a70e213327bf6236acf74635305c616873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / gabes-0.1.5-py2.py3-none-any.whl

Download URL gabes-0.1.5-py2.py3-none-any.whl
Size 23.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
81660c43ecec7d37612b94275aa3e7786c924ab3223e76978a611af7d1936033
BLAKE2b-256 checksum
How to use checksums
218bcb6432a39350267e43106729598bf79b3281f085a86fca846c749f114af5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page