Currently I was working with FHE scheme and used HElib to do homomorphic logical operation like the formal question described Homomorphic encryption methods that could support logical XOR, AND?. But now I'm facing a new problem. When I do multi times calculation (the situation is a circuit calculation that has to be used many times), the result is getting wrong. For instance: there are 3 bits a,b,c, and the formula is a = a*b+c, each time 'a' is updated, b , c is fixed value. When the process is repeated many times, the final 'a' is decrypted to a wrong value. Could someone tell me the reason, and are there any methods that could skip this problem?

By the way, this is one of the problem mentioned in the terminal: Ctxt::bringToSet called with capacity=-101.861, likely decryption error Ctxt::bringToSet called with empty set and capacity=63.5502, this is likely a bug

  • $\begingroup$ There is the noise that you should be considered especially multiplication. Levelling, bootstrapping, linearization, etc. are to solve the issue. $\endgroup$
    – kelalaka
    Mar 18, 2021 at 9:15
  • $\begingroup$ Thank you for your answer. Could you tell me a little more about this part of knowledge? Recently I'm reading papers about FHE, which all mentioned bootstrapping, noise and I could not understand clearly, and is that mean that because of these limitations that BGV scheme could not support all-size polynomial size calculation? $\endgroup$
    – Kao Tou
    Mar 18, 2021 at 9:27
  • $\begingroup$ Many of the question that you seek is here FHE: What is the difference between multiplicative depth and multiplicative level? and Modulo Switching $\endgroup$
    – kelalaka
    Mar 18, 2021 at 10:27
  • $\begingroup$ Thank you. And sorry to bother again, are there any exact frequency relations between L and the times of multiply operation? Now I do a little HElib experiment for multi times multiply: I set the L value 16, and set two encrypted value a,b. The calculation formula is a *= b. I put the process in a "For Loop", and after 2 rounds, the program show warning for wrong decryption. $\endgroup$
    – Kao Tou
    Mar 19, 2021 at 7:59
  • $\begingroup$ Make sure that the ciphertexts have the same level. I've used the library long time ago. $\endgroup$
    – kelalaka
    Mar 19, 2021 at 13:31


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.