This repository contains Sunscreen's secure processing framework (SPF), which allows users to run computations over encrypted data based specifically on our own variant of the torus fully homomorphic encryption scheme (TFHE).
Developer documentation is available here.
If you'd like to learn more about our motivation for this work, we recommend this blog post.
This repository is composed of various components in individual crates.
Crates sunscreen_math, sunscreen_math_macros and sunscreen_tfhe include the mathematical components used for the homomorphic encryption. This includes the algebraic structures, different ciphertext types, the computation algorithms (e.g. Fast Fourier Transformation) among other things.
Crate mux_circuits includes the MUX circuits for the required computation such as multiplying, adding and comparison.
Crate parasol_runtime, parasol_cpu_macros and parasol_cpu include the core SPF libraries (such as fluent) and implementation of the instructions in the Parasol ISA. This includes key generation, ciphertext conversion, instruction scheduling and execution among other things.
Crate parasol_concurrency includes a few data structures such as spinlock and atomic refcell used by the SPF core. Directory examples includes crate basic_add as an example.
While the contained parasol_cpu crate contains everything you need to run programs, to write them you'll need the Parasol-llvm compiler. You can get that here.
- Download the tar file for your host architecture and OS.
- Run
tar xvzf parasol-compiler-<variant>.tar.gz. - Optionally an environment variable to the untarred location's contained bin directory.
This is currently licensed under APGLv3. If you require a different license, please email us and we'll see what we can do.
This code has not been audited. Use at your own risk.