- Reference: Introduction to the BGV encryption scheme
Since BGV uses a leveled ciphertext modulus chain like CKKS, BGV’s ciphertext-to-ciphertext multiplication scheme is exactly the same as CKKS’s scheme (Summary D-2.7 in §D-2.7), except for the rescaling step which uses BGV’s modulus switch (§D-4.7).
Summary D-4.8 BGV Ciphertext-to-Ciphertext Multiplication
Suppose we have the following two RLWE ciphertexts:
, where
, where
Multiplication between these two ciphertexts is performed as follows:
Compute the following:
, where
To suppress the noise’s growing scaling factor from to , switch the ciphertext’s modulo from by updating to according to BGV’s modulus switch explained in Summary D-4.7 (§D-4.7).
After the above update of to , the noise scaling factor and the plaintext stay the same, as we proved in §D-4.7 that .
Swapping the Order of Relinearization and Rescaling: The order of relinearization and rescaling is interchangeable. Running rescaling before relinearization reduces the size of the ciphertext modulus, and therefore the subsequent relinearization can be executed faster.
Details of the Optional Rescaling: Before rescaling, the contents of the ciphertext are , where is a relinearization error. Therefore, after each ciphertext-to-ciphertext multiplication, the noise’s scaling factor will become squared as . To reduce such exponential noise growth rate, we can optionally rescale down the ciphertext by at the end of each relinearization at multiplicative level , which is the noise’s growth rate (effectively keeping the noise scaling factor as ). After rescaling, the ciphertext gets scaled down by and then added by a new noise , which generates a new noise . Before the rescaling, the noise grew roughly by the factor of (as the largest noise term is ), but the rescaling process reduces this growth rate by the factor of and then introduces a new constant noise . Therefore, if is sufficiently bigger than , the resulting noise will decrease compared to both and . Due to this reason, when we design the modulus chain of BGV, we require each to be sufficiently bigger than to effectively reduce the noise growth rate upon each ciphertext-to-ciphertext multiplication (while ensuring the property that its reduction modulo gives the plaintext as explained in §D-4.7). Meanwhile, the constant noise term gets newly added upon each rescaling, but this term becomes part of the rescaled ciphertext, which will be later reduced by the factor of in the future rescaling. Therefore, BGV’s rescaling upon ciphertext-to-ciphertext multiplication effectively suppresses the noise growth.
On the other hand, the above design strategy of noise reduction is inapplicable to CKKS, because in CKKS, we use the scaling factor to scale the message (not the noise ), and thus CKKS requires each in order to preserve the plaintext’s scaling factor as the same value across ciphertext-to-ciphertext multiplications. Because of this difference in design, CKKS inevitably increases the noise after each ciphertext-to-ciphertext multiplication.