yao_protocol_simulation

Simple implementation of a distributed 8-bit adder function using Yao's Garbled Circuit protocol for Secure Multi Party Computation (SMPC)

https://github.com/dambrosidenis/yao_protocol_simulation

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.4%) to scientific vocabulary

Keywords

cybersecurity garbled-circuit secure-multi-party-computation
Last synced: 6 months ago · JSON representation ·

Repository

Simple implementation of a distributed 8-bit adder function using Yao's Garbled Circuit protocol for Secure Multi Party Computation (SMPC)

Basic Info
  • Host: GitHub
  • Owner: dambrosidenis
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 2.2 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
cybersecurity garbled-circuit secure-multi-party-computation
Created almost 3 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

Yao's Garbled Circuit Protocol: an Implementation

GitHub repository for an implementation of Yao's Garbled Circuit protocol for Secure Multi-Party Computation (SMPC) with an 8-bit adder as logical circuit. This repository includes all necessary files for running a local simulation of the protocol, including the source code, a detailed documentation, and a report that analyzes some possible real-world applications of this protocol.

Table of Contents

Introduction

Yao's Garbled Circuit protocol is a fundamental technique in Secure Multi-Party Computation (SMPC), allowing multiple parties to jointly compute a function over their inputs while keeping those inputs private. This repository provides a Python implementation of the protocol along with detailed documentation and a comprehensive report.

Note that this implementation is heavily inspired by Oliver Roques' garbled-circuit repository.

Repository Structure

The repository is organized as follows:

. ├── documentation │ ├── documentation.pdf │ └── src ├── report │ ├── report.pdf │ └── src ├── src │ ├── alice_input.txt │ ├── bob_input.txt │ ├── circuit.json │ ├── main.py │ ├── ot.py │ ├── parties.py │ ├── util.py │ └── yao.py ├── README.md ├── requirements.txt ├── CITATION.cff └── LICENSE

  • documentation/: Contains the detailed documentation in PDF format.
  • report/: Contains the project report in PDF format.
  • src/: Contains the source code and input files for the implementation.
  • README.md: This README file.
  • requirements.txt: List of dependencies required for the project.
  • CITATION.cff: Citation information for this repository.
  • LICENSE: The license under which this project is distributed.

Getting Started

To get started with this project, follow the steps below:

  1. Clone the Repository:

bash git clone https://github.com/dambrosidenis/Yao_Protocol_Simulation.git cd Yao_Protocol_Simulation

  1. Install Dependencies:

bash pip install -r requirements.txt

  1. Run the Implementation:

Detailed usage instructions can be found in the documentation/documentation.pdf file, along with an intuitive explanation of Yao's Garbled Circuit protocol. All possible command line arguments, along with step-by-step instructions for running the implementation are unambiguously described there.

Documentation

The detailed documentation explaining the implementation and usage of Yao's Garbled Circuit protocol can be found in the documentation/ directory:

Article

A short article illustrating some potential practical use cases for Yao's Garbled Circuit can be found in the article/ directory:

Source Code

The src/ directory contains the source code and input files for the implementation, including:

  • alice_input.txt: Input file for Alice. Can be freely modified.
  • bob_input.txt: Input file for Bob. Can be freely modified.
  • circuit.json: JSON file representing the circuit for the computation (an 8-bit adder). Note that circuits of different size can be generated through the generate_and_save_circuit in util.py.
  • main.py: Main script to run the protocol.
  • ot.py: Implementation of Oblivious Transfer protocol.
  • parties.py: Implementation of the local actions for the parties involved (Alice and Bob).
  • util.py: Utility functions.
  • yao.py: Implementation of Yao's Garbled Circuit protocol.

Citation

If you use this work in your research, please cite it as follows:

bash @software{D_Ambrosi_Yao_s_Garbled_Circuit_2023, author = {D'Ambrosi, Denis}, month = apr, title = {{Yao's Garbled Circuit Protocol: an Implementation}}, url = {https://github.com/dambrosidenis/Yao_Protocol_Simulation}, version = {1.0.0}, year = {2023} }

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Owner

  • Login: dambrosidenis
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "D'Ambrosi"
  given-names: "Denis"
  orcid: https://orcid.org/0009-0001-2275-6496
title: "Yao's Garbled Circuit Protocol: an Implementation"
version: 1.0.0
date-released: 2023-04-03
url: "https://github.com/dambrosidenis/Yao_Protocol_Simulation"

GitHub Events

Total
Last Year