{"id":559317,"date":"2019-01-14T09:00:34","date_gmt":"2019-01-14T17:00:34","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?p=559317"},"modified":"2020-06-08T10:20:12","modified_gmt":"2020-06-08T17:20:12","slug":"project-everest-reaching-greater-heights-in-internet-communication-security","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/research\/blog\/project-everest-reaching-greater-heights-in-internet-communication-security\/","title":{"rendered":"Project Everest: Reaching greater heights in internet communication security"},"content":{"rendered":"

\"\"<\/p>\n

Project Everest (opens in new tab)<\/span><\/a> is a multiyear collaborative effort focused on building a verified, secure communications stack designed to improve the security of HTTPS, a key internet safeguard. This post, about the verification tools and techniques the Everest team is using and developing, is the first in a series exploring the groundbreaking work, which is available on GitHub (opens in new tab)<\/span><\/a> now.<\/em><\/p>\n

Wouldn\u2019t it be great if a message you sent to your bank over the internet was guaranteed to be safe from tampering and readable only by your financial institution? Project Everest is building software that provides such a guarantee as a theorem<\/em> about the code<\/em> that implements a secure communication protocol deployed in web browsers and servers everywhere.<\/p>\n

\u201cProving theorems about programs has been a dream of computer science for the last 60 years or more, and we\u2019re finally able to do this at the scale required for an important, widely deployed security-critical piece of software,\u201d says Microsoft Senior Researcher Nik Swamy (opens in new tab)<\/span><\/a>, a member of the Project Everest team.<\/p>\n

The security of internet communications crucially depends on a variety of cryptographic algorithms and protocols. The most widely used among these falls under the umbrella of the Transport Layer Security (TLS) protocol (opens in new tab)<\/span><\/a>. TLS is used for secure web browsing via HTTPS, email, Voice over IP, instant messaging, and many other kinds of communication. Unfortunately, TLS and its many implementations have been attacked repeatedly (opens in new tab)<\/span><\/a> over its 25-year history.<\/p>\n

Project Everest (opens in new tab)<\/span><\/a> is an ongoing collaboration started in 2016 with researchers from Microsoft Research Redmond (opens in new tab)<\/span><\/a>, Microsoft Research Cambridge (opens in new tab)<\/span><\/a>, Microsoft Research India (opens in new tab)<\/span><\/a>, the Microsoft Research-Inria Joint Centre (opens in new tab)<\/span><\/a> in Paris, Inria (opens in new tab)<\/span><\/a>, Carnegie Mellon University (opens in new tab)<\/span><\/a>, and The University of Edinburgh (opens in new tab)<\/span><\/a>. Growing out of several prior Microsoft Research projects, including Ironclad (opens in new tab)<\/span><\/a>, miTLS (opens in new tab)<\/span><\/a>, and F* (opens in new tab)<\/span><\/a>, Everest aims to develop and deploy efficient, verified, open-source implementations of the entire TLS stack and related protocols, formally reducing the security of the code to the assumptions about the hardness of certain cryptographic problems (opens in new tab)<\/span><\/a>.<\/p>\n

For Jonathan Protzenko (opens in new tab)<\/span><\/a>, a Microsoft researcher on the Everest team, the project\u2019s open collaboration is special.<\/p>\n

\u201cEverest makes for a tight interaction between industrial and academic research,\u201d he says. \u201cOur members frequently visit each other, co-author papers together, and send students from one institution to the other over the summer. Several of our members studied at or later moved to these institutions. In that sense, for me, Project Everest truly represents the ideal of open, collaborative research.\u201d<\/p>\n

Project Everest is halfway through its projected five-year arc, and its verified components are beginning to replace the current infrastructure with proven, secure software. For instance, Everest\u2019s HACL* (opens in new tab)<\/span><\/a> library provides verified cryptographic primitives for Mozilla Firefox (opens in new tab)<\/span><\/a>, for the WireGuard VPN (opens in new tab)<\/span><\/a>, and for the Tezos blockchain (opens in new tab)<\/span><\/a>. And within Microsoft, Everest\u2019s miTLS protocol stack (opens in new tab)<\/span><\/a> powers the primary implementation of the QUIC transport protocol. The Everest team expects to announce further deployments in the coming weeks. Meanwhile, Everest code is already open source and is developed publicly on GitHub (opens in new tab)<\/span><\/a>.<\/p>\n

\"\"


Members of the Project Everest team are working hard for greater internet security, and their progress is tangible: Two and a half years in, their verified components are already beginning to replace the current infrastructure with proven, secure software.<\/p><\/div>\n

Formal Verification of Software<\/h3>\n

Formal verification involves using software tools, including various kinds of theorem provers and proof assistants, to analyze all<\/em> possible behaviors of a program and prove mathematically they comply with the code\u2019s specification, a machine-readable description of the developer\u2019s intentions. Once the code has been verified against its specification mechanically, based on trust in the software used to check proofs, a skeptical auditor need only study the specifications<\/em> and the theorem statements<\/em> proven without needing to consult the much larger programs and proofs.<\/p>\n

\u201cMost software built today gets tested before it is released\u2014at least one hopes it does!\u201d says Swamy. \u201cBut even the most rigorous testing can only find bugs; it cannot rule out the existence of errors. For certain kinds of software, say security-critical code like TLS, one may actually want to prove that no vulnerabilities exist. Software verification is time-consuming and requires expertise, but, unlike testing, it can actually guarantee mathematically the absence of entire classes of errors.\u201d<\/p>\n

For Everest programs, the team\u2019s specifications cover a range of properties, including:<\/p>\n