NistyPQC

Nifty PQC promoted by NIST.

These are implementations in Julia of various post-quantum cryptography (PQC) algorithms that were picked as (candidate) winners in the Post-Quantum Cryptography Standardization Project run by the National Institute of Standards and Technology (NIST). They fall in two categories:

All implementations in this package strive for simplicity and close resemblance with the specifications. The focus is not on performance, let alone on security.

Algorithms

Winners

At the moment, NIST has published draft Federal Information Processing Standards (FIPS) for three of the winners:

There is one more winner with no draft standard available yet:

  • Falcon (Fast-Fourier Lattice-based Compact Signatures over NTRU)

Candidates

The team of winners might be joined by some of the submissions to Round 4 of the standardization project. Up to now, three of the candidates remain unbroken. All of them are code-based KEM's. For the time being, I've included two of them in this package:

Security Categories

Each algorithm comes in multiple variants. They are categorized according to the believed security strength. Namely, NIST defined the following five security strength categories based on corresponding attacks on symmetric ciphers:

categorysuccessful attack at least as hard as
1key search on a block cipher with a 128-bit key (e.g. AES128)
2collision search on a 256-bit hash function (e.g. SHA256/SHA3-256)
3key search on a block cipher with a 192-bit key (e.g. AES192)
4collision search on a 384-bit hash function (e.g. SHA384/SHA3-384)
5key search on a block cipher with a 256-bit key (e.g. AES256)