Improving software quality in cryptography standardization projects

Flaws found, and which tests might have detected them, in how many of the 10 KEMs and 7 signature schemes that have ever been included in PQClean

Abstract

The NIST post-quantum cryptography (PQC) standardization project is probably the largest and most ambitious cryptography standardization effort to date, and as such it makes an excellent case study of cryptography standardization projects. It is expected that with the end of round 3 in early 2022, NIST will announce the first set of primitives to advance to standardization, so it seems like a good time to look back and see what lessons can be learned from this effort. In this paper, we take a look at one specific aspect of the NIST PQC project: software implementations. We observe that many implementations included as a mandatory part of the submission packages were of poor quality and ignored decades-old standard techniques from software engineering to guarantee a certain baseline quality level. As a consequence, it was not possible to readily use those implementations in experiments for post-quantum protocol migration and software optimization efforts without first spending a significant amount of time to clean up the submitted reference implementations.

We do not mean to criticize cryptographers who submitted proposals, including software implementations, to NIST PQC: after all, it cannot reasonably be expected from every cryptographer to also have expertise in software engineering. Instead, we suggest how standardization bodies like NIST can improve the software-submission process in future efforts to avoid such issues with submitted software. More specifically, we present PQClean, an extensive (continuous-integration) testing framework for PQC software, which now also contains "clean" implementations of the NIST round 3 candidate schemes. We argue that the availability of such a framework—either in an online continuous-integration setup, or just as an offline testing system—long before the submission deadline would have resulted in much better implementations included in NIST PQC submissions and overall would have saved the community and probably also NIST a lot of time and effort.

Keywords: implementation, NIST PQC, post-quantum implementations, testing cryptographic software

Reference

Matthias J. Kannwischer, Peter Schwabe, Douglas Stebila, Thom Wiggers. Improving software quality in cryptography standardization projects. Technical report. March 2022. © The authors.

Download

Code

BibTeX

Funding

This research was supported by:
  • Natural Sciences and Engineering Research Council of Canada (NSERC) Discovery grant RGPIN-2016-05146
  • European Research Council through Starting Grant No. 805031 (EPOQUE)
  • Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) as part of the Excellence Strategy of the German Federal and State Governments EXC 2092 CASA - 390781972
  • Academia Sinica through the Sinica Investigator Award AS-IA-109-M01