CRYSTALS-Kyber (source code)

= CRYSTALS-Kyber
{c}

<CRYSTALS-Kyber> is a <key encapsulation mechanism> based on <module learning with errors>. Its underlying <encryption> uses polynomial-vector arithmetic with small secret and error coefficients; a transformation around that <encryption> supplies resistance to chosen-ciphertext attacks. Encapsulation produces a fresh shared secret and the <ciphertext> needed by the decapsulating party.<Kyber documentation by CRYSTALS project>[Introduction and Scientific Background]{ref}

Using a module structure reduces representation and computation costs compared with a fully unstructured matrix description. The security claim concerns the difficulty of the resulting noisy algebraic problem; the word lattice does not by itself prove resistance to every attack. <ML-KEM> standardizes a descendant of Kyber with exact <algorithm>[algorithms] and encodings. Applications must name the chosen version rather than treating Kyber and ML-KEM as byte-for-byte synonyms.