Optimized implementation of QC-MDPC code-based cryptography

This paper presents a new enhanced version of the QcBits key encapsulation mechanism, which is a constant-time implementation of the Niederreiter cryptosystem using QC-MDPC codes. In this version, we updated the implementation parameters to meet the 128-bit quantum security level, replaced some of the core algorithms to avoid using slower instructions, vectorized the entire code using the AVX-512 instruction set extension, and applied several other techniques to achieve a competitive performance level. Our implementation takes 928, 259, and 5008 thousand Skylake cycles to perform batch key generation (cost per key), encryption, and uniform decryption, respectively. Comparing with the current state-of-the-art implementation for QC-MDPC codes, BIKE, our code is 1.9 times faster when decrypting messages.