Skip to main content

Python library for secure multi-party computation using garbled circuits

Project description

pySecureCircuit

pySecureCircuit is a Python library that allows secure multiparty computation using Yao's garbled circuit technique. The library provides a way for multiple parties to securely compute a function on their private inputs without revealing them to each other, using a combination of encryption, randomization, and computation over circuits.

Getting Started

Installation

Run the following command to install the library:

pip install pysecurecircuit

Usage

Here's a simple example of how to use pySecureCircuit for the Millionaire's Problem for two parties.

Write your function logic in a python script.

from pysecurecircuit.circuit import Circuit
from pysecurecircuit.server import Server


def main():
    # Create circuit with 2 party
    circuit = Circuit(name="Millionaires' Problem", num_parties=2)

    # Define input variable
    alice_wealth = circuit.newSecureInteger()
    bob_wealth = circuit.newSecureInteger()

    # Circuit logic
    alice_richer_than_bob = alice_wealth > bob_wealth

    # Assign input variables to alice and bob
    circuit.assign_to_party(party_idx=0, name="Wealth (Alice)", variable=alice_wealth)
    circuit.assign_to_party(party_idx=1, name="Wealth (Bob)", variable=bob_wealth)

    # Set circuit's output
    circuit.set_output(name="Alice richer than Bob", variable=alice_richer_than_bob)

    # Start server
    Server(circuit).start()

main()

Server

To start server for the circuit creator run

python3 script.py --host 0.0.0.0 --port PORT

Client

For circuit evaluator, run the following command

python3 -m pysecurecircuit --client-id CLIENT_ID --host HOST --port PORT

Where CLIENT_ID is the identifier of the client that starts from 1, HOST is the IP address or hostname of the server, and PORT is the port number to connect to.

Contributing

Contributions are welcome! If you'd like to contribute to pySecureCircuit, please fork the repository and create a pull request.

Acknowledgments

This library is based on Yao's garbled circuit technique, and builds on existing work in secure multiparty computation. Thank you to the researchers and developers who have contributed to this field.

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

pysecurecircuit-0.0.4.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysecurecircuit-0.0.4-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file pysecurecircuit-0.0.4.tar.gz.

File metadata

  • Download URL: pysecurecircuit-0.0.4.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.2

File hashes

Hashes for pysecurecircuit-0.0.4.tar.gz
Algorithm Hash digest
SHA256 9897f3dc1e41f6b2bb9bb14bfb3e163e9b1be25e986ef0bef70af81946fd7ce9
MD5 4feb5cb9a9fbf09767e985fc9c307dac
BLAKE2b-256 1b0080d1c654d6cafa7fda2f3c358b2a806b1c5025e09607cdd532a5996b67dd

See more details on using hashes here.

File details

Details for the file pysecurecircuit-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for pysecurecircuit-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1641c2c6e6bd75eb3ba32b2a9f1097d7dbbe8054f1b78c06874b68f8048ce1ec
MD5 1f92c5768200ce44b3b11a88d9d461b9
BLAKE2b-256 bdf736e9502a5a1a8af0882a48777b67d29eaea46f2ac8bc407b938446be10e3

See more details on using hashes here.

Supported by

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