In §D-3.1, we learned the CKKS encoding scheme which encodes an input vector with slots (i.e., -dimensional input vector) into an -degree polynomial. While the polynomial ring’s degree is fixed at the setup stage of CKKS as a security parameter, some applications may only need to use fewer than input vector slots. Suppose we only need to use slots out of slots, where is some number that divides . Then, the corresponding input vector and encoded polynomial get a special property as described below:
Summary D-3.12 CKKS’s Sparsely Packing Polynomial and Ciphertext
Suppose that an -dimensional input vector gets encoded into a polynomial in . And suppose that is some number that divides . We define polynomial as the one which has non-zero constants at the terms whose power is a multiple of and all other terms have zero constants (i.e., ). We can express as some where and thus .
Then, the following are true:
We could show both directions of proof: (1) the forward (decoding-direction) proof; and (2) the backward (encoding-direction) proof. However, it is sufficient to prove only either direction, because the encoding () and decoding () processes are isomorphic. Among these two, we will show only the forward proof for simplicity.
We will prove that for each (i.e., a polynomial in which has non-zero constants only at those terms with a power of multiple of and zero constants in all other terms), the polynomial gets decoded into some -dimensional input vector which comprises repetitions of the first consecutive slot values.
To decode into an input vector, we need to evaluate at distinct roots of (i.e., distinct primitive -th roots of unity), which are:
# where , the base and generator of the primitive ()-th roots of unity
But since , the above evaluation is equivalent to evaluating:
# where , the base and generator of the primitive -th roots of unity
Notice that . Therefore, the above evaluation of outputs repeated values of evaluated at distinct primitive -th roots of unity.