[ANN] HIENAA.jl - A pure Julia implementation of various FHE schemes

Github : Github

Hello, everyone. I present HIENAA.jl (HE Implementation for Encrypted Numbers Arithmetic and Algorithms), which is a pure Julia implementation of a variety of FHE schemes, such as BGV/BFV/CKKS. For a quick recap, FHE is a special encryption scheme that enables an arbitrary circuit evaluation on encrypted data without decryption.

However, the current code and interface are not yet of a production quality and need a lot of improvements and optimisations in terms of algorithms and backends. Still, it has some advanced functionalities(SIMD packing, matrix multiplication, polynomial evaluation…). My personal goal is to make the speed of this library comparable to the current existing HE libraries. Currently, the NTT(Number Theoretic Transform) and Barrett / Montgomery reductions in HIENAA’s backend show a better performance than existing HE implementations.

Any idea /contribution to improving the library is welcome! Thanks.

9 Likes

Could the Montgomery multiplication be pulled out and moved to IntegerMathUtils.jl? I’ve wanted to have a good version of that for Primes.jl for a while.

2 Likes

Hi, sure, I can write a code and make a pull request. I just want to know how Montgomery multiplication will be used in the IntegerMathUtils.jl? Montgomery multiplication is fast only when multiplying several times modulo the same word-sized modulus (since the precomputation is quite heavy).

1 Like