QSHY stands for Quantum Semi Honest Yao and this repository implements a Semi-honest Yao protocol assisted with Quantum Oblivious Keys. This system has four building blocks:
- libscapi: implements the basic cryptographic primitives and also the communication channels.
- MPC-Benchmark: implements Yao protocol based on the libscapi library.
- CBMC-GC: translates ANSI-C programs into boolean circuits.
- HQOT: Hybrid Quantum Oblivious Transfer based on Quantum Oblivious Key Distribution presented in the paper: Generation and Distribution of Quantum Oblivious Keys for Secure Multiparty Computation. In order to better understand the integration of HQOT protocol in both libscapi and MPC-Benchmark, please read this README file.
The main goal of the repository is to offer a framework to develop Secure Multiparty Computation (SMC) protocols based on quantum technologies.
TODO: The installation process is still a bit tedious and has to be automated.
QSHY runs on Linux (x64 only, 32 bit systems are not supported) and has been tested on the following version:
- Ubuntu 16.04/18.04 LTS
In order to install this repository you will need to install the building blocks mentioned before. Install in the following order:
- libscapi: read INSTALLlibscapi.md
- MPC-Benchmark: read INSTALLmpcbenchmark.md
- CBMC-GC: read INSTALLcbmcgc.md
Currently, there are (only) three functionalities implemented:
- String search problem;
- Hamming distance;
- UPGMA algorithm to compute Phylogenetic Trees, developed under the QuantumMining and QuGENOME projects.
Start from reading the String search problem implementation in the corresponding readme file. It explains the integration of the above four building blocks. Then, look into hamming distance in order to understand the basic funcionality used extensively in the UPGMA algorithm.