Paper 2022/112

Faster Kyber and Dilithium on the Cortex-M4

Amin Abdulrahman
Vincent Hwang
Matthias J. Kannwischer
Amber Sprenkels

This paper presents faster implementations of the lattice-based schemes Dilithium and Kyber on the Cortex-M4. Dilithium is one of the three signature finalists in the NIST post-quantum project (NIST PQC), while Kyber is one of the four key-encapsulation mechanism (KEM) finalists. Our optimizations affect the core polynomial arithmetic using the number-theoretic transform (NTT) of both schemes. Our main contributions are threefold: We present a faster signed Barrett reduction for Kyber, propose to switch to a smaller prime modulus for the polynomial multiplications \(c\mathbf{s}_1\) and \(c\mathbf{s}_2\) in the signing procedure of Dilithium, and apply various known optimizations to the polynomial arithmetic in both schemes. Using a smaller prime modulus is particularly interesting as it allows using the Fermat number transform resulting in especially fast code. We outperform the state-of-the-art for both Dilithium and Kyber. For Dilithium, our NTT and iNTT are faster by 5.2% and 5.7%. Switching to a smaller modulus results in speed-up of 33.1%-37.6% for the relevant operations (sum of basemul and iNTT) in the signing procedure. For Kyber, the optimizations results in 15.9%-17.8% faster matrix-vector product which presents the core arithmetic operation in Kyber.

Available format(s)
Publication info
Published elsewhere. ACNS 2022
Dilithium Kyber NIST PQC Fermat Number Transform Number-Theoretic Transform Arm Cortex-M4
Contact author(s)
amin abdulrahman @ mpi-sp org
vincentvbh7 @ gmail com
matthias @ kannwischer eu
amber @ electricdusk com
2022-11-04: last of 2 revisions
2022-01-31: received
See all versions
Short URL
Creative Commons Attribution


      author = {Amin Abdulrahman and Vincent Hwang and Matthias J.  Kannwischer and Amber Sprenkels},
      title = {Faster Kyber and Dilithium on the Cortex-M4},
      howpublished = {Cryptology ePrint Archive, Paper 2022/112},
      year = {2022},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.