A Fully Homomorphic Encryption library
version 2.0-alpha -- Release date: 2017.05.30
Updates
- Made Homomorphic gate computation 6x faster, by noticing that it is sufficient to compute ACC[1]. This trick is somehow equivalent to the external product from this paper
- Implemented support for more gates: AND, OR, NAND, NOR, NOT
- Forbids operation on non-independant ciphertext: (x OP x) or (x OP (not x))
- Bugfixes
Authors: Leo Ducas leo@ducas.org and Daniele Micciancio daniele@cs.ucsd.edu
FHEW is open-source software distributed under the terms of the GNU General Public License. See the file LICENSE for complete details on the licensing of FHEW. The FHEW library is based on the Fully Homorphic Encryption scheme described in the paper "FHE bootstrapping in less than a second" (L. Ducas and D. Micciancio, Cryptology ePrint Archive 2014/816,) and makes use of the FFTW library (the "Fastest Fourier Transform in the West"). Hence the name FHEW, which you may read as the "Fastest Homomorphic Encryption in the West", though the name is more of a reference to FFTW than a claim about performance. The library provides a symmetric encryption scheme to encrypt (and decrypt) single bit messages, supporting the homomorphic evaluation of arbitrary boolean circuits on encrypted data using a public (evaluation) key.
Note Please do not expect maintenance of this code.
Requirements
FHEW requires the FFTW 3 library available at http://www.fftw.org/download.html, and a c++ compiler. The library is written primarily in C, but a C++ compiler is needed to support a few syntactical extensions (like namespaces and reference parameters) used to improve the readibility of the code. Editing the library so to require just a c compiler should be straightforward. The library has been tested using the g++ compiler from the GNU compiler collection (gcc version 4.9.1), but should work fine with other compilers as well.
Installation
To build the library, just run make. This will produce a
library (libfhew.a), and a number of test/example programs. (See
below.) You can also run make install to install the header
files and fhew library required to compile your own programs making
use of FHEW. By default, these are installed in