Skip to content

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.

  • 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