In CKKS, I am confused by the three parameters that firstModSize
, scalingModSize
and scalingFactor
.
In my view, the scalingFactor
probably is the logp in CKKS scheme, but what is the means of firstModSize
, scalingModSize
?
A bit of background information before answering your question.
In CKKS, the ciphertext coefficient modulus at level l is Q_l=q_0 \cdot q_1 \ldots \cdot q_l, where q_i's are prime integers of almost equal size.
firstModSize
denotes the size of q_0, a special modulus used to contain the actual payload information (your encrypted data).
scalingModSize
denotes the size of the scalingFactor
to control the underlying precision of the computation. In CKKS, input real data are scaled by the scalingFactor
before getting encoded and encrypted.
Thank you for your help, and I have another question.
In my konwledge, ciphertext coefficient modulus at level L is Q_L = q_0*q^L, in which q^L is the scaling factor.
-
I detect in OpenFHE the firstModSize is a constant 60, when scalingModSize = 50, the scalingFactor = 2^{62}, I wannd how to calculate the scalingFactor?
-
According to your word, could I understand that, when L=1, q can be denoted as q= scalingFactor = 2^ { scalingModSize}, and q_0 = 2^{ firstModSize}?
-
Additionally, is the scalingModSize also the bits of precision for the decimal part? If so, what is the bits of precision for the integer part?
Danke!
Probably a little bit late, but I think that you are missing the RNS implementation.
The way you describe is before that.
You can check a little bit here A Full RNS Variant of Approximate Homomorphic Encryption