Lattice-based cryptography is a class of cryptographic methods that rely on the mathematical structure of lattice problems for their security. A lattice is a regular grid of points in a multi-dimensional space, and certain problems related to lattices are believed to be hard to solve, even with quantum computers. This makes lattice-based cryptography a promising alternative to traditional cryptographic methods that may be vulnerable to quantum attacks.
Dilithium is one of the lattice-based cryptographic schemes, specifically designed as a digital signature algorithm. Its security is based on the hardness of two lattice problems: the Short Integer Solution (SIS) problem and the Learning With Errors (LWE) problem. Both of these problems are considered hard to solve, even with quantum computers.
As of October 2023, NIST has not yet released any final PQC standards, but it has published draft standards for three of the four algorithms it selected in 2022: CRYSTALS-Dilithium, CRYSTALS-KYBER, and SPHINCS+. These draft standards are currently open for public comment until November 22, 2023.
In our cryptographic works we focus on Crystals. Dilithium was implemented for our QSB, while KYBER is used by pQKD.
generate – generate key pair:
crypto generate --algorithm dilithium5 --out key.pem
pull the public key from the pair:
crypto public --in key.pem --out pub.pem
sign a file:
crypto sign --sec key.pem --out signature --file <PATH>
verify the file:
crypto verify --sig signature --pub pub.pem --file <PATH>