8.4 Rings and polynomials
The notation behind Ring-LWE, Module-LWE, NTRU, Kyber, Dilithium and Falcon, and what each symbol means on this site.
Structured lattice schemes do their arithmetic with polynomials instead of long integer vectors. A polynomial of degree less than is stored as its coefficients, so every ring element is also a vector, and every ring operation is also a structured matrix operation. The tables below list the symbols, how to read them aloud, and the chapters where they appear. The variable is written in chapters 1.6 and 2.x and in 3.3, 3.5 and FIPS 203/204; both mean the same indeterminate.
Polynomial rings
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “Z adjoin x” | All polynomials in with integer coefficients. | 2.6, 2.4, 3.6, 1.6, 3.2 | ||
| “Z q of X” | Polynomials whose coefficients are integers modulo . | 3.5, 3.3, 2.3, 3.6 | ||
| “Z x modulo x to the n plus one” | Quotient ring: polynomials of degree less than , where products are reduced using . is a power of 2. | for | 2.4, 2.6, 3.6, 1.6, 2.5, 3.2 | |
| “R” | Shorthand for the integer ring of the chapter, usually ; in 2.6 it can also be . | 2.6, 2.4, 3.6, 3.2, 1.6 | ||
| “R q” | The same ring with every coefficient also reduced modulo : . Its elements are what Kyber and Dilithium store. | 3.3, 2.3, 3.1, 2.6, 2.4, 2.5 | ||
| “R p” | NTRU’s second, small modulus (typically ). Written and interchangeably. | 2.6 | ||
| “mod x to the n minus one” | Original NTRU ring: , so products wrap around without a sign change (cyclic). | for | 2.6, 1.6, 5.1 | |
| “mod x to the p minus x minus one” | NTRU Prime’s ring, with prime; chosen to avoid the extra structure of cyclotomic rings. | 2.6 |
Which ring each scheme uses
| Scheme | Ring | Chapter | ||
|---|---|---|---|---|
| ML-KEM (Kyber) | 256 | 3329 | 3.1, 3.5 | |
| ML-DSA (Dilithium) | 256 | 8,380,417 | 3.3 | |
| Falcon (FN-DSA) | , mod | 512 or 1024 | 12289 | 3.6 |
| Original NTRU | scheme-dependent | power of 2 or prime, | 2.6 | |
| NTRU Prime | prime | prime | 2.6 |
Polynomials as vectors
A ring element is identified with its coefficient vector . Addition is coordinate-wise. Multiplication is polynomial multiplication followed by reduction: in rings every becomes . That sign flip is why the product is called a negacyclic convolution.
Worked example in with and . The schoolbook product is . Replace :
The same product is a matrix–vector product. Column of the matrix below holds the coefficients of : each column is the previous one shifted down by one, with the coefficient that falls off the bottom re-entering at the top with its sign flipped. Such a matrix is called anti-circulant (or negacyclic). In a ring there is no sign flip and the matrix is an ordinary circulant, which is the “circulant block matrix” of the NTRU lattice in 1.6 and 2.6.
This is the ring-versus-matrix view: a Ring-LWE sample in is an ordinary LWE system whose matrix is determined by just numbers. The matrix is written with columns here; with the row convention used in the embedding guides, use its transpose.
Size of a polynomial
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “infinity norm of a” | Largest absolute coefficient, with coefficients mod first taken in the centred range . For a vector of polynomials, the maximum over all of them. | 3.3, 2.5, 2.4, 2.6 | ||
| “norm of a” | Euclidean length of the coefficient vector. Ring-SIS solutions and Falcon signatures are bounded this way. | 2.4, 3.6 | ||
| “one-norm of h” | Sum of absolute coefficients. In 3.3 it counts the 1-bits of Dilithium’s hint vector. | means too many hint bits | 3.3 | |
| small, ternary | A polynomial whose coefficients are tiny. Ternary means every coefficient is in . These are the short vectors of ring lattices. | 2.6, 2.4, 3.3 |
Roots of unity and the NTT
Fast multiplication in uses roots of unity modulo . The letters are not used consistently across the literature, and on this site means a different root in each chapter that uses it. Always check which power of it equals .
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “omega” | In 3.5: a primitive -th root of unity in , meaning and no smaller positive power is 1. In 3.3 the same letter is Dilithium’s maximum hint weight. | , so 2 is a primitive 8th root | 3.5, 3.3 | |
| “psi” | A primitive -th root of unity. The roots of are its odd powers . | mod 17 for : roots 2, 8, 15, 9 | 3.5 | |
| “zeta” | The fixed root of a specific scheme. ML-KEM: , a primitive 256th root mod 3329 (). ML-DSA: , a primitive 512th root mod 8,380,417 (). In 3.2 and 1.6 it is a complex root, or . | twiddle factors | 3.5, 3.3, 3.2, 1.6 | |
| “gamma i” | In 3.5: the constants of ML-KEM’s 128 quadratic factors , with . Unrelated to the Hermite constant . | 3.5 | ||
| “N T T of a” | The number-theoretic transform and its inverse: evaluate at the roots (or reduce it modulo the factors), then map back. | 3.5, 3.1, 3.3 | ||
| “a hat” | In 3.1 and 3.3: the NTT-domain representation of a polynomial. In 2.2 the hat means Babai’s output vector instead. | 3.1, 3.3 | ||
| “bit-reverse seven of k” | Write in 7 bits and reverse them. ML-KEM stores its twiddle factors in this order. | 3.5 | ||
| “is isomorphic to” | Two rings with the same structure. In 3.5 it is the Chinese-remainder splitting behind the NTT. | 3.5 |
The algebraic view: number fields and ideals
For a power of 2, is the -th cyclotomic polynomial, so is the ring of integers of a cyclotomic number field. Chapter 1.6 uses this language; the rest of the site mostly does not need it.
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “Q adjoin zeta two n” | The cyclotomic field: rational combinations of powers of a primitive -th complex root of unity. Its ring of integers is . | for | 1.6 | |
| “sigma” | In 3.2: the canonical embedding, evaluating a polynomial at the complex roots . Everywhere else is a Gaussian width. | 3.2 | ||
| ideal lattice | A lattice that is (the image of) an ideal of the ring, so it is closed under multiplication by . In an ring that multiplication is a negacyclic rotation: shift the coefficients and negate the one that wraps. | 1.6 |
Modules: vectors and matrices of polynomials
Module-LWE and Module-SIS replace the single ring element by short vectors and small matrices of ring elements. Superscripts give the shape, exactly as for .
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “R q to the k” | Vectors of ring elements. Kyber’s rank selects ML-KEM-512, -768, -1024. | 3.1, 2.3, 3.3 | ||
| “R q k by ell” | Matrices with rows and columns of ring elements. Dilithium uses . | 3.3, 2.5, 2.3 | ||
| “a transpose s” | Inner product of two module vectors: , each product taken in . | 2.3, 3.1 | ||
| “R to the m” | Module vectors over the integer ring, used for Ring-SIS and Module-SIS solutions. | 2.4 |
Each ring element is an -vector, so is an integer matrix of size built from anti-circulant blocks. For ML-KEM-768 that is a matrix described by nine polynomials.
NTRU and Falcon symbols
| Symbol | Read as | Meaning on this site | Example | Used in |
|---|---|---|---|---|
| “f, g” | The two small secret polynomials. is the short vector hidden in the NTRU lattice. | ternary, about nonzero coefficients | 2.6, 1.6, 3.6 | |
| “f inverse” | The inverse of in (named in 2.6) or in (). Computed with the extended Euclidean algorithm. | 2.6, 3.6, 1.6 | ||
| “h” | The public key. Chapters 1.6 and 3.6 use ; the encryption chapter 2.6 uses , which puts the factor into the key instead of the message step. | 2.6, 1.6, 3.6 | ||
| “capital F, G” | Falcon’s second pair of trapdoor polynomials, completing to a full short basis. | 3.6 | ||
| “lambda h” | The NTRU lattice of pairs satisfying one linear congruence with , a -dimensional lattice. 1.6 writes the condition as , 3.6 as ; both are the same kind of lattice with the roles of the coordinates swapped. | when | 1.6, 3.6 |
Scheme-specific functions
| Symbol | Meaning | Used in |
|---|---|---|
| Dilithium splits each coefficient as with centred; HighBits returns , LowBits returns . Applied coefficient-wise to polynomials and vectors. | 3.3, 2.5 | |
| (Dilithium), | The hint vector that lets the verifier recompute HighBits, and , the maximum number of 1s it may contain. Not the NTRU public key. | 3.3 |
| Compress, Decompress | Kyber’s lossy rounding of coefficients to bits (12 to 10 bits for , 12 to 4 for in 3.1). FIPS 203 defines and . Chapter 3.1 describes them in words. | 3.1 |
Same symbol, different meaning
| Symbol | Ring meaning | Other meaning on this site |
|---|---|---|
| Primitive 256th root mod 3329 (3.5); primitive 512th root mod 8,380,417 (3.3) | Complex root of unity (3.2, 1.6) | |
| Primitive root of unity (3.5) | Maximum hint weight in Dilithium (3.3) | |
| NTT base-case constants (3.5) | Hermite constant (1.3, 1.4); Dilithium bounds (3.3) | |
| Canonical embedding (3.2) | Gaussian standard deviation (2.3, 6.3 and others) | |
| NTRU / Falcon public key (1.6, 2.6, 3.6) | Dilithium hint (3.3); hash value in 6.4 | |
| NTT-domain value (3.1, 3.3) | Babai’s output (2.2) | |
| Would be a cyclotomic polynomial in the literature | On this site only the LLL potential function (1.5) | |
| Would be a ring of integers in the literature | On this site only big-O notation (4.x) | |
| Would be a number field in the literature | On this site a convex body (1.3) |
Conventions we follow
- Ring elements are polynomials of degree less than , identified with their coefficient vectors , lowest degree first.
- Coefficients mod are taken in the centred range whenever a size or norm is measured.
- and denote the same indeterminate; chapters that follow FIPS 203/204 use .
- Module shapes use superscripts: for vectors, for matrices, as with .
- Multiplication matrices are written with columns . In the row convention of chapters 7.x and g6k-rs, transpose them.
Further reading
NIST FIPS 203 and FIPS 204 fix the ring, the roots of unity, BitRev, Compress and HighBits exactly as ML-KEM and ML-DSA use them. Lyubashevsky, Peikert and Regev, On Ideal Lattices and Learning with Errors over Rings (Eurocrypt 2010), introduces the cyclotomic-ring and canonical-embedding view. Chris Peikert’s survey A Decade of Lattice Cryptography explains ideal and module lattices in one place. These references are cited from memory.