microsoft / SEAL

Microsoft SEAL is an easy-to-use and powerful homomorphic encryption library.
https://www.microsoft.com/en-us/research/group/cryptography-research/
MIT License
3.62k stars 711 forks source link

Maths behind switching level in CKKS #689

Open kumarm17 opened 6 months ago

kumarm17 commented 6 months ago

In CKKS, after performing a multiplication (c_mul = c1 * c2), we typically apply rescaling to reduce noise in the ciphertext. However, this also consumes a level (L to L-1). Now, if I want to add c_mul (at level L-1) to another ciphertext c3 that's still at level L, direct addition isn't possible. This is because they have different "scales" due to their moduli. SEAL seems to handle this by copying the encryption parameters of c_mul to c3. But what's the underlying mathematical concept/proof in CKKS that enables this switching across levels?