3
$\begingroup$

Currently I am working on implementing a radix-4 NTT algorithm, but most of the research papers use a $2n$th root of unity as an input. However, in the Kyber specification, for $n = 256$ we don't have a $2n$th root mod $q=3329$, we only have an $n$th root which is 17. So how can one use the algorithm without the $2n$th root for $n = 256$?

$\endgroup$
1
  • $\begingroup$ It is called incomplet-NTT; You can check some resources on it $\endgroup$ Commented Sep 1 at 8:36

1 Answer 1

4
$\begingroup$

We can use a 512th root of unity by working in the field $\mathbb F_{q^2}$, say for example using the representation as $\mathbb F_q[\omega]$ where $\omega^2=17$. Here all elements are of the form $a+b\omega$ where $a,b\in\mathbb F_q$ and for example $$(a+b\omega)(c+d\omega)=((ac+17bd)\mod q)+((ad+bc)\mod q)\omega.$$

$\endgroup$
2
  • $\begingroup$ I dont understand,The radix 4 algorithm uses 2nth root of unity as its input but i only know its nth root,Also Why would u change the field? $\endgroup$ Commented Sep 1 at 5:33
  • 2
    $\begingroup$ Because you do not have a $2n$th root of unity in $\mathbb F_q$ you must change to a field where you do. In this case $\mathbb F_{q^2}$ has a $2n$th root of unity which we write as $\omega$. $\endgroup$ Commented Sep 1 at 8:02

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.