yao_protocol_simulation
Simple implementation of a distributed 8-bit adder function using Yao's Garbled Circuit protocol for Secure Multi Party Computation (SMPC)
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
Repository
Simple implementation of a distributed 8-bit adder function using Yao's Garbled Circuit protocol for Secure Multi Party Computation (SMPC)
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
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:
- Clone the Repository:
bash
git clone https://github.com/dambrosidenis/Yao_Protocol_Simulation.git
cd Yao_Protocol_Simulation
- Install Dependencies:
bash
pip install -r requirements.txt
- 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 thegenerate_and_save_circuitinutil.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
- Repositories: 2
- Profile: https://github.com/dambrosidenis
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"