Masking without rescaling

Hi all,
I wanted to double check whether my understanding of CKKS is sound.
Given a ciphertext c = (c_0,c_1) (encryption of m) and a plaintext m', their product is given by (c_0 m', c_1 m'), as c_0 m' + c_1 m' s = m' (c_0 + c_1 s) = m' (m + e) \approx m'm for some noise e and secret key s.

If the plaintext m' has no scale, for instance being an integer (-coeff. polynomial), then the ciphertext (c_0 m', c_1 m') does not need to be rescaled in order to get a correct decryption, is that right?

1 Like

Correct, as long as the integer coefficients are not large (close to unity or so in the coefficient representation). For instance, if the coefficients are 2^{30}, then the effective scale of the product will get increased and rescaling would still be needed at some point. Note that we use products like this, e.g., MultByMonomial, in the CKKS bootstrapping implementation of OpenFHE.

One has to keep in mind that multiplying by a bit-mask vector in CKKS still requires a rescale since the bit-mask vector after inverse FFT gets non-integer values (that need to be scaled up and rounded).

1 Like