SEAL.jl is a Julia package that wraps the SEAL library for homomorphic encryption. Homomorphic encryption allows to perform numerical operations directly on encrypted data without having to decrypt the data first, process it, and then re-encrypt the result.
The package supports the Brakerski/Fan-Vercauteren (BFV) scheme for exact integer arithmetic and the Cheon-Kim-Kim-Song (CKKS, also known as HEAAN in literature) scheme for approximate arithmetic with real and complex numbers. Our goal is to expose the homomorphic encryption capabilitites of SEAL in a (mostly) intuitive and Julian way.
Currently, SEAL.jl supports all operations that are used in the examples 1 through 5 of the SEAL library. This includes
- encoding/decoding of raw data
- basic arithmetic operation: addition, multiplication
- relinearization and rescaling
- modulus switching
for both the BFV and CKKS schemes.
While most relevant functionality of the SEAL library is already supported in SEAL.jl, there are a few areas where more work is needed, and where community contributions are especially welcome:
- Add missing API implementations
- Add the remaining two examples
- Document all examples
- Complete missing docstrings