Remember that CKKS’s ciphertext decryption relation is as follows:
# where represents a modulo reduction by
ModDrop is an operation of lowering the multiplicative level of a ciphertext by sequentially throwing away its modulus’s one or more prime elements except for the last one , while ensuring that the plaintext’s scaling factor stays the same as before. Specifically, a ModDrop operation that decreases its modulus from is performed by updating the ciphertext to a new one: , . After the ModDrop, the ciphertext’s modulus decreases from , yet its decryption relation still holds the same as follows:
# where is an integer (the -the prime element of )
# where is an integer
# since
As shown above, decrypts to the same , a scaled plaintext with an error.
CKKS’s ModDrop is summarized as follows:
Summary D-3.6 CKKS’s ModDrop
Given a CKKS ciphertext with the -th multiplicative level , a ModDrop operation is as follows:
, after which the ciphertext’s multiplicative level decreases by 1, while the plaintext’s scaling factor and the noise are unaffected.
In CKKS, both modulus switch (i.e., rescaling explained in §D-3.5.4) and ModDrop lower a ciphertext’s modulus from . However, the key difference is that rescaling also decreases the plaintext’s scaling factor by the , whereas ModDrop does not affect the plaintext’s scaling factor and the noise. Therefore, rescaling is used only during ciphertext-to-ciphertext multiplication when scaling down the plaintext’s scaling factor in the intermediate ciphertext from . Meanwhile, ModDrop is used to reduce the modulo computation time during an application’s routine when it becomes certain that the ciphertext will not undergo any additional ciphertext-to-ciphertext multiplication (i.e., no need to further decrease the ciphertext’s modulus).