blog.robur.coop

The Robur cooperative blog.
Back to index

TLS 1.3: extending OCaml-TLS with protocol version 1.3

2018-09-01

Transport Layer Security (TLS) is the most widely used security protocol on the Internet, commonly deployed for securing web services (HTTPS), emails, VPNs and wireless networks. The pure OCaml implementation is ocaml-tls, with a suite of accompanying libraries for domain-specific functionality. The ‘not-quite-so-broken’ approach to reengineering security protocol specification and implementation is an attempt to address the root causes of common security flaws.

  • Implement an Async backend alongside the existing Lwt one, which follows best practises for Async-style programming.
  • Modernise the OCaml TLS libraries to current tooling and documentation systems.
  • Implement recent protocol enhancements such as TLS 1.3
  • Overall build and testing improvements, particularly around compiler versions and cross compilation.
  • Remove duplication of internal interfaces so that Async/Lwt share a common substrate.

In 2018 we received funding from Jane Street via OCaml Labs Consulting to extend the OCaml-TLS stack with protocol version 1.3 support. This fund was together with Tarides.

This project lasted between 2018 and 2020. Involved from the robur side were Joe and Hannes. In total we received 100_288.25€.

The code is part of tls. The opam package tls since version 0.12.0 (released 2020-05-12) supports TLS 1.3.