Hi OpenFHE team!
I saw code related to noise estimation for the CKKS and BFV modes in the library, but I couldn’t find any noise estimation code for the BGV scheme. I would like to know if there are any related functions for BGV, and whether the noise estimation functions for CKKS and BFV are fully developed or not.
Thank you very much for your help!
Is there a way to determine the acceptable noise upper bound for the current parameters?
Here is the summary of what OpenFHE currently provides as far as noise estimation is concerned:
- For BGV and BFV, the user supplies input parameters such as multiplicative depth, then OpenFHE automatically finds the right lattice parameters, such as the ring dimension and ciphertext modulus. So the (static) noise estimation is done before the circuit is evaluated, i.e., when the cryptocontext gets generated.
- For the HPSOVERQLEVELED mode, BFV also computes noise when performing homomorphic multiplication and key switching (it temporarily reduces the ciphertext modulus to reduce the computational complexity).
- All noise expressions for BGV and BFV are presented in Revisiting Homomorphic Encryption Schemes for Finite Fields
- For CKKS, OpenFHE supports dynamic noise estimation using the imaginary component (the imaginary component is set to zero and then used to show the precision during CKKS decryption). This is only supported for real-number computations.
The logic for BFV and BFV static noise estimation is coded in openfhe-development/src/pke/lib/scheme/bfvrns/bfvrns-parametergeneration.cpp at v1.2.4 · openfheorg/openfhe-development · GitHub and openfhe-development/src/pke/lib/scheme/bgvrns/bgvrns-parametergeneration.cpp at v1.2.4 · openfheorg/openfhe-development · GitHub, respectively.
Thank you for answering the question, Is there a method to display the noise level after every homomorphic multiplication operation in OpenFHE, allowing users to assess whether subsequent multiplications remain feasible? Does OpenFHE support this functionality?