Crates.io | ciphercore-adapters |
lib.rs | ciphercore-adapters |
version | 0.1.1 |
source | src |
created_at | 2022-05-11 01:54:16.124515 |
updated_at | 2022-05-17 02:55:25.126106 |
description | An auxiliary crate to bridge CipherCore with its C bindings |
homepage | https://www.ciphermode.com/ |
repository | https://github.com/ciphermodelabs/ciphercore/ |
max_upload_size | |
id | 584271 |
size | 48,556 |
If you have any questions, or, more generally, would like to discuss CipherCore, please join the Slack community.
See a vastly extended version of this document here, which includes a tutorial, several examples and a comprehensive guide.
CipherCore is a general purpose library for processing encrypted data. It’s a state-of-the-art platform for building customized applications that can run directly over encrypted data without decrypting it first. CipherCore can be used to run tasks on multiple distributed datasets owned by multiple organizations within the same enterprise or even different enterprises without disclosing the data to other parties. The library is based on a technology called secure computation.
Secure Multi-Party Computation (SMPC) is a cutting-edge subfield of cryptography that provides various types of protocols allowing the execution of certain programs over encrypted data (read more). SMPC protocols take as input a restricted form of computation called circuit representation. Translating high-level programs into circuit representation is a complicated, error-prone and time-consuming process. CipherCore compiler drastically simplifies the process by automatically translating and compiling high-level programs directly into the SMPC protocols, thus, allowing any software developer to use secure computation without requiring any knowledge of cryptography.
CipherCore’s ease of use is due to introducing a new intermediate representation layer of computation graphs between the application layer and the protocol layer. Applications are mapped to a computation graph first and then to an SMPC protocol. This architecture allows for rapid integration of various SMPC protocols as new cryptographic backends. If you are familiar with ML frameworks such as PyTorch, TensorFlow or JAX (or MLIR on a lower level), then you likely know what computation graphs are.
At a high level, Secure Multi-Party Computation protocols (SMPC) allow, given a program with several inputs belonging to several parties, execute it in a way such that:
The literature on SMPC is vast and we refer the reader to a comprehensive overview of the existing protocols. Typically, there is a three-way trade-off between:
CipherCore is designed in a way that allows most existing SMPC protocols to be readily plugged as a backend. Currently, we support the ABY3 SMPC protocol, which works for three parties and is one of the most efficient available protocols.
There are four natural stages when working with CipherCore: