D-3.7 ModDrop

Remember that CKKS’s ciphertext decryption relation is as follows:

ΔM + E = A S + B mod ql

ΔM + E = A S + B K ql # where K ql represents a modulo reduction by ql

ModDrop is an operation of lowering the multiplicative level of a ciphertext by sequentially throwing away its modulus’s one or more prime elements (i.e., { qi qi1} i=0L) except for the last one q0, while ensuring that the plaintext’s scaling factor Δ stays the same as before. Specifically, a ModDrop operation that decreases its modulus from ql ql1 is performed by updating the ciphertext (A,B) to a new one: (A = A mod ql1, B = B mod ql1). After the ModDrop, the ciphertext’s modulus decreases from ql ql1, yet its decryption relation still holds the same as follows:

AS + BK ql

= (A mod ql1) S + (B mod ql1) K ql

= (A KA ql1) S + (B KB ql1) K ql

= A S + B (KA + KB + K q ql1) ql1 # where q ql1 is an integer (the l-the prime element of qL)

= A S + B Kql1 # where K = KA + KB + K q ql1 is an integer

= A S + B mod ql1

= ΔM + E # since ΔM + E < q0 < ql1

As shown above, (A,B) mod ql1 decrypts to the same ΔM + E, 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 l-th multiplicative level 𝖱𝖫𝖶𝖤S,σ(ΔM) = (A,B) mod ql, a ModDrop operation is as follows:

(A,B) mod ql1 = (A mod ql1,B mod ql1)

, after which the ciphertext’s multiplicative level decreases by 1, while the plaintext’s scaling factor Δ and the noise are unaffected.

D-3.7.1 Difference between Modulus Switch and ModDrop

In CKKS, both modulus switch (i.e., rescaling explained in §D-3.5.4) and ModDrop lower a ciphertext’s modulus from ql ql1. However, the key difference is that rescaling also decreases the plaintext’s scaling factor by the ql ql1 Δ, 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 Δ2 Δ. 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).