Post Quantum Cryptography: NTRU

Preliminary

Parameters

First, we begin by fixing an integer $N \ge 1$ and two moduli $p$ and $q$, and we let $R, R_p$, and $R_q$ be the convolution polynomial rings

As usual, we may view a polynomial $\boldsymbol{a}(x) \in R$ as an element of $R_p$ or $R_q$ by reducing its coefficients modulo $p$ or $q$. In the other direction, we use center-lifts to move elements from $R_p$ or $R_q$ to $R$. We make various assumptions on the parameters $N, p$ and $q$, in particular we require that $N$ be prime and that $\operatorname{gcd}(N, q)=\operatorname{gcd}(p, q)=1$.

Ternary Polynomial

For any positive integers $d_1$ and $d_2$, we let

Polynomials in $\mathcal{T}\left(d_1, d_2\right)$ are called ternary (or trinary) polynomials. They are analogous to binary polynomials, which have only 0’s and 1’s as coefficients.

NTRU Encryption

We are now ready to describe NTRUEncrypt. Alice (or some trusted authority) chooses public parameters ( $N, p, q, d$ ) satisfying: (1) $\gcd(p,q)=\gcd(N,q)=1$;(2)$q>(6d+1)p$ . Alice’s private key consists of two randomly chosen polynomials

Alice computes the inverses

Alice next computes

The polynomial $\boldsymbol{h}(x)$ is Alice’s public key. Her private key, which she’ll need to decrypt messages, is the pair $\left(\boldsymbol{f}(x), \boldsymbol{F}_p(x)\right)$. Alternatively, Alice can just store $\boldsymbol{f}(x)$ and recompute $\boldsymbol{F}_p(x)$ when she needs it.

Bob’s plaintext is a polynomial $\boldsymbol{m}(x) \in R$ whose coefficients satisfy $-\frac{1}{2} p<$ $m_i \leq \frac{1}{2} p$, i.e., the plaintext $\boldsymbol{m}$ is a polynomial in $R$ that is the center-lift of a polynomial in $R_p$. Bob chooses a random polynomial (a random element) $\boldsymbol{r}(x) \in \mathcal{T}(d, d)$ and computes

Bob’s ciphertext $\boldsymbol{e}(x)$ is in the ring $R_q$.
On receiving Bob’s ciphertext, Alice starts the decryption process by computing

She then center lifts $\boldsymbol{a}(x)$ to an element of $R$ and does a $\bmod p$ computation,

Assuming that the parameters have been chosen properly, we now verify that the polynomial $\boldsymbol{b}(x)$ is equal to the plaintext $\boldsymbol{m}(x)$.

NTRUEncrypt: the NTRU public key cryptosystem

alt text

References

[1] Hoffstein J, Pipher J, Silverman J H, et al. An Introduction to Cryptography[M]. Springer New York, 2014.

[2] https://0xffff.one/d/1424/5