Paper 2026/670

Verification Facade: Masquerading Insecure Cryptographic Implementations as Verified Code

Nadim Kobeissi, Symbolic Software
Abstract

Hax is a verification pipeline that translates a subset of Rust into F*, enabling machine-checked proofs of panic freedom and functional correctness for cryptographic implementations being developed in partnership with Google and tested in Signal's post-quantum protocol. We study whether hax's translation preserves the security properties it claims to verify. Through a structural analysis of its 35-phase transformation engine, F* proof libraries, and specification API, we identify three classes of semantic gap between the Rust source and the F* verification target: translation infidelity, where pipeline transformations distort security-relevant semantics; unverifiable trust boundaries, where operations are axiomatized without postconditions; and specification gaming, where escape hatches inject unproven facts into the verification context. We demonstrate each class through five proof-of-concept exploits against ML-DSA (FIPS 204), ML-KEM (FIPS 203), Ed25519 (FIPS 186-5), and ChaCha20 (RFC 8439). Every exploit meets a strict criterion: the Rust code compiles, passes functional tests, and extracts to F* without warnings, while harboring a security gap invisible to testing. We distinguish three gradations: facade gaps where the F* model actively diverges from Rust semantics, a conditional gap dependent on the compilation mode, and a scope gap where the model is faithful but cannot cover a critical property. We call the resulting phenomenon a verification facade: verification that is performed but covers less than it appears to cover.

Note: This update adds a stronger variant to the E1 proof of concept exploit.

Metadata
Available format(s)
PDF
Category
Attacks and cryptanalysis
Publication info
Preprint.
Keywords
high-assurance cryptographyformal verificationverification boundariescryptographic engineering
Contact author(s)
nadim @ symbolic software
History
2026-04-07: revised
2026-04-06: received
See all versions
Short URL
https://ia.cr/2026/670
License
Creative Commons Attribution
CC BY

BibTeX

@misc{cryptoeprint:2026/670,
      author = {Nadim Kobeissi},
      title = {Verification Facade: Masquerading Insecure Cryptographic Implementations as Verified Code},
      howpublished = {Cryptology {ePrint} Archive, Paper 2026/670},
      year = {2026},
      url = {https://eprint.iacr.org/2026/670}
}
Note: In order to protect the privacy of readers, eprint.iacr.org does not use cookies or embedded third party content.