# Masking without rescaling

**URL:** <https://openfhe.discourse.group/t/masking-without-rescaling/1013>\
**Category:** FHE Questions\
**Created:** [January 9, 2024, 9:51am UTC](https://openfhe.discourse.group/t/masking-without-rescaling/1013 "2024-01-09T09:51:14Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![FMazzone](https://yyz1.discourse-cdn.com/flex031/user_avatar/openfhe.discourse.group/fmazzone/32/78_2.png) [@FMazzone](https://openfhe.discourse.group/u/FMazzone)\
**Post date:** [January 9, 2024, 9:51am UTC](https://openfhe.discourse.group/t/masking-without-rescaling/1013/1 "2024-01-09T09:51:14Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![ypolyakov](https://yyz1.discourse-cdn.com/flex031/user_avatar/openfhe.discourse.group/ypolyakov/32/47_2.png) [@ypolyakov](https://openfhe.discourse.group/u/ypolyakov)\
**Post date:** [January 9, 2024, 6:07pm UTC](https://openfhe.discourse.group/t/masking-without-rescaling/1013/2 "2024-01-09T18:07:57Z")

</div>

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).
