The concrete
ecosystem is a set of crates that implements Zama's variant of
TFHE. In a nutshell,
fully homomorphic encryption (FHE), allows
you to perform computations over encrypted data, allowing you to implement Zero Trust services.
Concrete is based on the Learning With Errors (LWE) and the Ring Learning With Errors (RLWE) problems, which are well studied cryptographic hardness assumptions believed to be secure even against quantum computers.
Concrete is implemented using the Rust Programming language, which allows very fast, yet very secure implementations.
The ecosystem is composed of several crates (packages in the Rust language):
concrete
: A high-level library, useful to cryptographers that want to quickly implement homomorphic applications, without having to understand the details of the implementation.concrete-core
: A low-level library, useful to cryptographers who want the fastest implementation possible, with all the settings at their disposal.concrete-npe
: A noise propagation estimator, used inconcrete
to simulate the evolution of the noise in ciphertexts, through homomorphic operations.concrete-csprng
: A fast cryptographically secure pseudorandom number generator used inconcrete-core
.
To use concrete, you will need the Rust compiler, and the FFTW library. The compiler can be installed on linux and osx with the following command:
curl --tlsv1.2 -sSf https://sh.rustup.rs | sh
Other rust installation methods are available on the rust website.
To install the FFTW library on MacOS, one could use the Homebrew package manager. To install Homebrew, you can do the following:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
And then use it to install FFTW:
brew install fftw
Note for Apple Silicon users: Concrete is currently only available for x86 architecture. To use it on Apple Silicon chip, you could use an x86_64 version (more detailed information could be found here).
To install FFTW on a debian-based distribution, you can use the following command:
sudo apt-get update && sudo apt-get install -y libfftw3-dev
This library uses several dependencies and we would like to thank the contributors of those libraries :
- FFTW (rust wrapper) : Toshiki Teramura (GPLv3)
- FFTW (lib) : M. Frigo and S. G. Johnson (GPLv3)
- itertools: bluss (MIT / Apache 2.0)
- kolmogorov_smirnov: D. O. Crualaoich ( Apache 2.0)
- serde: E. Tryzelaar and D. Tolnay (MIT or Apache 2.0)
- colored: T. Wickham ( MPL-2.0)
We also use some crates published by The Rust Project Developers
under the MIT or Apache 2.0
license :
We thank Daniel May for supporting this project and donating the
concrete
crate.
This software is distributed under the BSD-3-Clause-Clear license. If you have any questions,
please contact us at [email protected]
.