What Is Multiplication Count?
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.
Operations and Multiplication Count Usage
| Operation | Consumes Multiplication Count |
|---|---|
clone |
No |
add |
No |
subtract |
No |
negate |
No |
rescale |
No |
level_down |
Yes |
multiply |
Yes: with double, complex double, array_like, Plaintext, Ciphertext No: with int |
multiply_imaginary_integer |
No |
relinearize |
No |
square |
Yes |
matrix_multiply |
Yes |
conjugate |
Yes: only at max level of non-bootstrap No: otherwise |
roll |
Yes: only at max level of non-bootstrap No: otherwise |
rotate |
Yes: only at max level of non-bootstrap No: otherwise |
transpose |
Yes: only at max level No: otherwise |
conjugate_transpose |
Yes: only at max level No: otherwise |
bootstrap |
No |