By bringing consolidated structure to the panoply of requirements that make up the transport layer security (TLS) standard, this paper allows practitioners to formulate a framework for testing how compliant several of their open-source software (OSS) implementations are.
TLS and its precursors have been, for a couple of decades, the lifeblood of secure communication across the Web. Backward compatibility, feature bloat, and many specifications unaware of each other over that lengthy period have together provided a fertile substrate for the culturing of software bugs. This paper contributes a method for framing the assembly of those requirements into a cohesive whole, a mechanism for testing relevant OSS implementations for compliance with that structured assembly, the outcome of such testing (which includes serious vulnerabilities), and an implementation of TLS geared toward correctness rather than performance (therefore arguably not production-ready). The authors have acknowledged limitations as well; for instance, testing is not exhaustive as it disregards many combinations of configuration parameters or content, and vetting, albeit partially automated, depends heavily on manual intervention. The effort is, however, worthwhile.
In addition, the methodology can be an inspiration for other software engineering challenges. The mechanisms are focused on the correctness of TLS, but the underlying guidance can be generalized for the verification of certain software artifacts that are otherwise very difficult to test.