What Is Multiplication Count?
In CKKS, the multiplication count refers to the number of times a ciphertext can perform multiplication operations. Each multiplication increases the ciphertext's noise. Going past the allowed count corrupts the ciphertext, making it impossible to decrypt. Therefore there is a limit on how many times a ciphertext can be multiplied, and this is called the multiplication level.
In the DESILO FHE library, level always refers to this multiplication level. Also, addition, subtraction, and multiplication are only allowed between ciphertexts with the same remaining level. While this is a constraint in general homomorphic encryption schemes, our library takes care of level alignment automatically.
Related Concepts:
- Level: The remaining number of allowed multiplications.
- Modulus: The modulus values available to a ciphertext. Each multiplication reduces the size of this modulus.
- Rescaling: The process of reducing the modulus after multiplication to lower the scale and noise. This reduces the remaining multiplication count by 1.
Operations and Multiplication Count Usage
Operation | Consumes Multiplication Count |
---|---|
clone |
No |
add |
No |
subtract |
No |
negate |
No |
rescale |
Yes |
level_down |
Yes |
multiply |
Yes: with double, complex double, array_like, Plaintext, Ciphertext No: with int |
multiply_imaginary_integer |
No |
relinearize |
No |
square |
Yes |
conjugate |
Yes: only at max level of non-multiparty No: otherwise |
rotate |
Yes: only at max level of non-multiparty No: otherwise |
bootstrap |
No |