December 1, 2022
Sanjay Deshpande - Yale University
This work presents a hardware design for constant-time implementation of the HQC (Hamming Quasi-Cyclic) code-based key encapsulation mechanism. HQC has been selected for the fourth-round of NIST’s Post-Quantum Cryptography standardization process and this work presents first, hand-optimized design of HQC key generation, encapsulation, and decapsulation written in Verilog targeting implementation on FPGAs. The three modules further share a common SHAKE256 hash module to reduce area overhead. All the hardware modules are parametrizable at compile time so that designs for the different security levels can be easily generated. The architecture of the hardware modules includes novel, dual clock domain design, allowing the common SHAKE module to run at slower clock speed compared to the rest of the design, while other faster modules run at their optimal clock rate. The design currently outperforms the other hardware designs for HQC, and many of the fourth-round Post-Quantum Cryptography standardization process, with one of the best time-area products as well. For the combined HighSpeed design targeting lowest security level, we show that the HQC design can perform key generation in 0.1 ms, encapsulation in 0.14 ms, and decapsulation in 0.23 ms when synthesized for an Xilinx Artix 7 FPGA. As this work shows, code-based algorithms can be competitive with other schemes when optimized hardware is developed. The presented design will further be made available under open-source license.