-
Notifications
You must be signed in to change notification settings - Fork 43
Home
#Cingulata# Cingulata (pronounced "tchingulata") is a open-source compiler toolchain and runtime environnement (RTE) for running C++ programs over encrypted data by means of Fully Homomorphic Encryption (FHE) techniques. It is (so far) primarily developed by CEA LIST but its development is open to community contributors.
Formerly known as Armadillo, Cingulata provides some very nice features for harnessing the power of FHE computations:
- A high-level C++ programming interface for writing applications running on encrypted data
- Some optimization modules dedicated to reduce the size and the multiplicative depth of applications Boolean circuits.
- A parallel runtime environment allowing to execute those Boolean circuits using different FHE schemes.
In its current form, the Cingulata front-end transforms input code written in C++ into an equivalent Boolean circuit representation (a Boolean circuit is made of logical AND and XOR gates). The middle-end layer optimizes the Boolean circuit produced by the front-end using ABC, an open-source tool used for hardware synthesis. Finally, the optimized circuit is executed dynamically on encrypted data using different FHE schemes.
For the first release, the available FHE library is a custom implementation of Fan-Vercauteren original cryptosystem (without the bootstrapping step).
##Usage##
If you would like to compile and use Cingulata, please refer to the manual page. It contains important guidelines about installing Cingulata and the required dependencies, a list of tests you may want to look at as well as some general comments about the issues you may encounter.
All application examples along with a short description for each test are located in the tests directory. Also you may want to look at our tutorial page for writing, executing and testing your first program with Cingulata.
##Roadmap## This the first open-source version of the toolchain and we are more than willing to make it live and extend it with further developments. Besides adding as much example programs as possible, the top of our to do list is writing additional backends for other (low-level) FHE librairies, particular for TFHE (planned mid-2017) and SEAL.
Our list of publications also gives a glimpse at some of the things to come...
##License## Cingulata is released under the CeCILL-C license, a free software license adapted to both international and French legal matters that is fully compatible with the FSF's GNU/LGPL license.
##References## For more information about this toolchain and what can be achieved when using it, please check the page with the related publications.
This open-source project is the result of the work done by the CEA-LIST crypto team but wouldn't have been possible without some great external collaborations. Check here the list of people (and supporting research projects) which have contributed to one extent or another to Cingulata current version.
If you would also like to contribute to Cingulata, we welcome any new initiative. So please feel free to make a pull-request and the changes will be merged into the upstream branch, after review, by the awesome admnistrators of the git-hub repository (aka Renaud and Sergiu). As a bare minimum, no update should break any of the existing compiler tests. Of course, we'll be more than happy to have preliminary discussions on any new contributions.
For any issues, feature requests or new ideas, identified bugs and more, please create an issue and we will try to get back to you as soon as possible.
Main contact: Olivier Héron ([email protected]).