ModDrop (§D-3.7, §D-4.6) is an operation of decreasing a ciphertext’s modulus from (where divides ) without affecting the plaintext’s scaling factor(in the case of CKKS) or the noise’s scaling factor (in the case of BGV).
In an RNS-based ciphertext representation, ModDrop is equivalent to removing some of the base moduli in the ciphertext without affecting the scaling factor . This can be achieved by converting the ciphertext’s base from to where the base moduli set of are a subset of that of ; that is, divides . Specifically, suppose that we have an input , and a new subset base , where . In this setup, the fast base conversion from is equivalent to simply extracting the input value’s RNS residues associated with the base moduli . This is because of the following reasoning:
# Summary D-5.1 in §D-5.1
# gets eliminated because divides
Notice that the above fast base conversion from (where divides ) does not generate any noise. This is different from the case of fast base conversion from (Summary D-5.1 in §D-5.1) where and are co-prime, which generates the noise (where integer ).
The ModDrop operation is supported in all of BFV, BGV, and CKKS ciphertexts that are represented in RNS forms. However, note that ModDrop is possible only if the scaled plaintext (in the case of BFV and CKKS) or the scaled noise (in the case of BGV) does not exceed the ciphertext modulus after the mod-drop operation, because otherwise correct decryption is not possible. ModDropRNS is summarized as follows:
Summary D-5.3 ModDropRNS
Input:
# where is a product of co-primes , and divides
# no noise generated during the conversion