Paper 2018/354

Start your ENGINEs: dynamically loadable contemporary crypto

Nicola Tuveri and Billy B. Brumley


Software ever-increasingly relies on building blocks implemented by security libraries, which provide access to evolving standards, protocols, and cryptographic primitives. These libraries are often subject to complex development models and long decision-making processes, which limit the ability of contributors to participate in the development process, hinder the deployment of scientific results and pose challenges for OS maintainers. In this paper, focusing on OpenSSL as a de-facto standard, we analyze these limits, their impact on the security of modern systems, and their significance for researchers. We propose the OpenSSL ENGINE API as a tool in a framework to overcome these limits, describing how it fits in the OpenSSL architecture, its features, and a technical review of its internals. We evaluate our methodology by instantiating libsuola, a new ENGINE providing support for emerging cryptographic standards such as X25519 and Ed25519 for currently deployed versions of OpenSSL, performing benchmarks to demonstrate the viability and benefits. The results confirm that the ENGINE API offers (1) an ideal architecture to address wide-ranging security concerns; (2) a valuable tool to enhance future research by easing testing and facilitating the dissemination of novel results in real-world systems; and (3) a means to bridge the gaps between research results and currently deployed systems.

Available format(s)
Publication info
Preprint. MINOR revision.
applied cryptographypublic key cryptographyelliptic curve cryptographysoftware engineeringsoftware implementationOpenSSL
Contact author(s)
nicola tuveri @ tuni fi
billy brumley @ tuni fi
2019-06-11: last of 2 revisions
2018-04-18: received
See all versions
Short URL
Creative Commons Attribution


      author = {Nicola Tuveri and Billy B.  Brumley},
      title = {Start your ENGINEs: dynamically loadable contemporary crypto},
      howpublished = {Cryptology ePrint Archive, Paper 2018/354},
      year = {2018},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.