BFV is fully homomorphic encryption library that implementas HPS RNS variant of BFV (Brakerski/ Fan-Vercauteren) scheme. The library intends to be performant and comparable to existing C/C++ FHE libraries with support for BFV scheme.
There's no plan, as of yet, to add support for other FHE schemes (ex, CKKS). But we are open to changing our minds.
Checkout examples to get started or projects like Oblivious message retrieval and ULPSI (Unbalance labelled private set intersection) to get a sense of how to use the library.
Note
Open to better name suggestions!
To enable serialization and deserilization of types enable serialization
feature. You also ensure that you have Protoc buffer compiler with version >= 23.4 installed. If not, you can install it from here.
By default std
feature is enabled and uses concrete-ntt as the default NTT backend.
You may enable nightly
feature to enable nightly
feature of concrete-ntt that accelartes NTT operation on machines with AVX512 instruction set. Make sure to switch to nightly compiler before enabling nightly
.
With hexl-ntt
(only on x86) you can swap out concrete-ntt NTT with NTT backend that uses hexl.
With hexl
(only on x86) you can accelerate modulus operation using hexl.
For best performance on x86 either use (1) hexl-ntt
and hexl
together OR (2) nightly
and hexl
together.
Note that both concrete-ntt/nightly
and hexl-ntt
use AVX512 instruction set to accelerate NTT operations and their performance does not differ.
- Email: [email protected]
- Telegram: @janmajayamall
Feel free to reach out for questions/collaboration.