In this paper Secure Transformer Inference Made Non-interactive I have seen an equation like Enc(x)=E(pi(x)) who pi code this a vector x into a polynome p, E encrypt this polynome p, and Enc denote the SIMD encryption of a vector.
I don’t know how return Enc? It is vector of polynôme if E is the CKKS encryption ?
@Salay1 Could you rewrite the question more clearly? I was trying to understand the question but there are too many grammatical errors and non-English words. So it is hard to understand what you are asking.
In the paper (Secure Transformer Inference Made Non-interactive) I don’t understand this SIMD encryption function Enc(). It says that this function takes a vector x and return a SIMD cyphertex Enc(x)=E(pi(x)), pi take a vector x and return a polynom p. I don’t know a SIMD cyphertex. It is a vector or a polynom? If E() is the RNS-CKKS E(pi(x)) a couple of polynomial.
I don’t also understand the RNS-CKKS.
- The user provides input as a vector of double data, say \mathbf{x}=\{x_0, x_1, x_2, \ldots\}
- Before encryption, the user has to encode \mathbf{x} into an internal representation that is compatible with how CKKS machinery manipulates data. This internal representation, which the unsophisticated user does not need to know about, is actually a polynomial. Out of this step, you get: p(x)=\text{Encode}(\mathbf{x}), and p(x) is the polynomial encoding the input vector data \mathbf{x}, also known as plaintext.
- Lastly, you can encrypt p(x) to generate a ciphertext that encrypts the polynomial encoding of the input vector \mathbf{x}. This step gives you: c=\text{Encrypt}(p(x)), where c is a ciphertext.
To understand the SIMD aspect of CKKS, think of both p(x) and c as vectors. CKKS operations on plaintexts and ciphertexts will be invoked coefficient-wise.
Eg:
c_1 = \text{Encrypt}(\text{Encode}(\mathbf{a}=\{a_0, a_1, \ldots\})), and
c_2 = \text{Encrypt}(\text{Encode}(\mathbf{b}=\{b_0, b_1, \ldots\})), then say
c_3=\text{EvalAdd}(c_1,c_2), will include an encryption of \{a_0+b_0, a_1+b_1, \ldots\}, and the same applies for \text{EvalMult}.
Finally, RNS-CKKS is a specific implementation of CKKS that uses a residual number system (RNS). Roughly speaking, think of it as an equivalent to CKKS.
I think it would be helpful for you to study some online tutorials on CKKS.
Please refer to the series below which describes the CKKS scheme.