CRYSTALS

Cryptographic Suite for Algebraic Lattices

Software

Public git repository

The primary source to obtain the Kyber software is the public GitHub repository. To download and build the software, follow the following steps:

git clone https://github.com/pq-crystals/kyber.git
cd kyber/ref && make
cd ../avx2 && make

In each of the subdirectories ref/ and avx/ this will build 13 binaries. For each of the 3 parameter sets Kyber-512, Kyber-768, and Kyber-1024 it will build test_kyber, test_kex, testvectors, and speed. Additionally it will build the NIST test-vector generation binary PQCgenKAT_kem for the recommended parameter set Kyber-768.

  • test_kyber runs several invocations of key generation, encapsulation and decapsulation and tests that they produce the same key on both sides. Also it runs several key exchanges with modified secret key or with modified ciphertext and tests that the key exchange fails. If all tests are successful, the program only prints sizes of secret key, public key, and ciphertext.
  • test_kex runs several tests of unilaterally authenticated and mutually authenticated key exchange and, if successful, prints only the amount of data transmitted by the two participants
  • testvectors prints deterministically generated testvectors of several executions of Kyber. This binary is meant to be used to ensure compatibility of different independent implementations.
  • speed prints benchmarks of various subroutines of Kyber. It assumes cycle counting on an Intel CPU.

Integration with Open Quantum Safe

For users of the Open Quantum Safe framework it may be easier to use liboqs, which includes an implementation of Kyber.

Third-party implementations

In the following list we collect links to third-party implementations of Kyber. These implementations are not maintained by the CRYSTALS team; please contact the authors for any issues with those implementations.