Get the latest tech news

Crux, a Precise Verifier for Rust and Other Languages


We present Crux, a cross-language verification tool for Rust and C/LLVM. Crux targets bounded, intricate pieces of code that are difficult for humans to get right: for example, cryptographic modules and serializer / deserializer pairs. Crux builds on the same framework as the mature SAW-Cryptol toolchain, but Crux provides an interface where proofs are phrased as symbolic unit tests. Crux is designed for use in production environments, and has already seen use in industry. In this paper, we focus on Crux-MIR, our verification tool for Rust. Crux-MIR provides a bit-precise model of safe and unsafe Rust which can be used to check both inline properties about Rust code, and extensional equality to executable specifications written in Cryptol or in the hacspec dialect of Rust. Notably, Crux-MIR supports compositional reasoning, which is necessary to scale to even moderately complex proofs. We demonstrate Crux-MIR by verifying the Ring library implementations of SHA1 and SHA2 against pre-existing functional specifications. Crux is available at https://crux.galois.com.

View a PDF of the paper titled Crux, a Precise Verifier for Rust and Other Languages, by Stuart Pernsteiner and 8 other authors View PDFHTML (experimental) Abstract:We present Crux, a cross-language verification tool for Rust and C/LLVM. Crux targets bounded, intricate pieces of code that are difficult for humans to get right: for example, cryptographic modules and serializer / deserializer pairs.

Get the Android app

Or read this on Hacker News

Read more on:

Photo of languages

languages

Photo of Rust

Rust

Photo of Crux

Crux

Related news:

News photo

Rust and C++ with Steve Klabnik and Herb Sutter [audio]

News photo

A comparison of Rust’s borrow checker to the one in C#

News photo

Show HN: G-win – .gcode parser written in Rust with winnow