Verifying Rust cryptography in SymCrypt, from standards to code
Cryptographic code supports vital protections in modern computing systems. Learn how a new method helps verify code as developers write it while preserving speed and adaptability as it gets implemented and evolves. The post Verifying Rust cryptography in SymCrypt, from standards to code appeared first on Microsoft Research .
Cryptography plays a critical role in ensuring secure computing. Even minor errors can have major implications. While testing and audits are necessary, they are not sufficient on their own. Implementations often need to be optimized, constant-time, and low-level. Formal verification helps by providing machine-checked proofs instead of relying solely on testing.
Microsoft has committed to formally verifying new Rust algorithms in SymCrypt, a cryptographic provider used across products like Windows and Azure. Algorithms are being written in safe Rust and verified using the Lean formal proof framework and the Aeneas toolchain. This approach provides two layers of assurance: Rust rules out memory-safety issues, while Lean proofs establish functional correctness against standards.
A public SymCrypt branch has been released, including formal specifications and proofs for Rust ML-KEM and SHA3 code in insiders builds of Windows. The library will extend this methodology to more Rust-native algorithms, including AES-GCM, FrodoKEM, and ML-DSA, and integrate them into production versions of Windows and Linux. This example illustrates how public standards become executable Lean specifications, allowing for easy review by cryptographers and proof engineers.
The verification process connects the Lean specification to the Rust code exactly as it is written, using Aeneas to translate Rust's ownership and borrowing discipline into a functional model that is easier to verify.
Written by urgent.news from Microsoft Research's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.