This repository implements a string Oblivious Transfer aimed to be used in the application layer of Quantum Key Distribution System that supports oblivious keys generation. This library is currently mainly being used by QMP-SPDZ for Secure Multiparty Computation (SMC).
For an overview of key-based OT protocols, check the following two references:
- Quantum oblivious transfer: a short review
- Generation and Distribution of Quantum Oblivious Keys for Secure Multiparty Computation
In the main branch there's the version of the protocol that uses oblivious key retrieved from a quantum Key Management System (KMS) following the ETSI QKD 014 standard.
In the etsi_004 branch there's the version of the protocol that uses oblivious key retrieved from a quantum Key Management System (KMS) following the ETSI QKD 004 standard from this reference implementation.
In the simulated_ok_gen branch a version using a local key generator simulator can be found.
This implementation is divided in two different programs, one for the sender and another for the receiver. Each of the programs contains a structure for storing the relevant data for each party, as well as a set of functions. These functions are called from a main program and perform the local operations to be done by each party.
First, make sure to set the location of the certificates for your SAE and the KMS URI in the ENV.sh file.
A simulated KMS that can be found in this repository.
Then, setup the environment and compile:
source ENV.sh
makeTo run the test executable:
./uirotk_testThe test program might not work out of the box because of the SAE IDs set previously, so make sure that all certificates are set and that they match the specified SAE IDs in src/ui_rotk/main_uirotk.c