BGV’s encryption and decryption scheme is very similar to BFV’s scheme (Summary D-2.3 in §D-2.3) with a small difference: while BFV scales the plaintext polynomial by , BGV scales the noise polynomial by . In BFV, each encoded plaintext polynomial is scaled by . This strategy effectively shifts each plaintext coefficient value to the most significant bits while keeping the noise in the least significant bits. On the other hand, BGV does not scale the plaintext polynomial , but instead it scales each new noise by , making the noise , which is newly generated upon each new ciphertext creation. This different scaling strategy effectively shifts the noise (i.e., ) to the most significant bits by scaling it by while keeping the plaintext value (i.e., ) ’s each coefficient in the least significant bits.
Also, in BGV, the ciphertext modulus is leveled like CKKS’s one: , where each (where each is a CRT modulus).
BGV’s encryption decryption process is described as follows:
Summary D-4.2 BGV Encryption and Decryption
Initial Setup:
Encryption Input: , ,
Decryption Input:
The final output is
Conditions for Correct Decryption:
Each coefficient that contains the scaled noise and the plaintext should not overflow or underflow its ciphertext’s any current moment’s multiplicative level ’s ciphertext modulus (i.e., )
When restoring the plaintext at the end of the decryption process, while BFV shifts down the plaintext and the noise to the lower bit area (which effectively rounds off the noise), BGV computes , which effectively modulo-reduces the accumulated noise because every coefficient of is a multiple of (i.e., ). Finally, only the plaintext polynomial’s each coefficient remains in the low-digit area without any noise .