Show simple item record

dc.contributor.authorErbsen, Andres
dc.contributor.authorPhilipoom, Jade
dc.contributor.authorJamner, Dustin
dc.contributor.authorLin, Ashley
dc.contributor.authorGruetter, Samuel
dc.contributor.authorPit-Claudel, Clément
dc.contributor.authorChlipala, Adam
dc.date.accessioned2024-07-09T15:43:16Z
dc.date.available2024-07-09T15:43:16Z
dc.date.issued2024-06-20
dc.identifier.issn2475-1421
dc.identifier.urihttps://hdl.handle.net/1721.1/155516
dc.description.abstractWe present verification of a bare-metal server built using diverse implementation techniques and languages against a whole-system input-output specification in terms of machine code, network packets, and mathematical specifications of elliptic-curve cryptography. We used very different formal-reasoning techniques throughout the stack, ranging from computer algebra, symbolic execution, and verification-condition generation to interactive verification of functional programs including compilers for C-like and functional languages. All these component specifications and domain-specific reasoning techniques are defined and justified against common foundations in the Coq proof assistant. Connecting these components is a minimalistic specification style based on functional programs and assertions over simple objects, omnisemantics for program execution, and basic separation logic for memory layout. This design enables us to bring the components together in a top-level correctness theorem that can be audited without understanding or trusting the internal interfaces and tools. Our case study is a simple cryptographic server for flipping of a bit of state through public-key authenticated network messages, and its proof shows total functional correctness including static bounds on memory usage. This paper also describes our experiences with the specific verification tools we build upon, along with detailed analysis of reasons behind the widely varying levels of productivity we experienced between combinations of tools and tasks.en_US
dc.publisherAssociation for Computing Machineryen_US
dc.relation.isversionof10.1145/3656446en_US
dc.rightsCreative Commons Attributionen_US
dc.rights.urihttps://creativecommons.org/licenses/by/4.0/en_US
dc.sourceAssociation for Computing Machineryen_US
dc.titleFoundational Integration Verification of a Cryptographic Serveren_US
dc.typeArticleen_US
dc.identifier.citationErbsen, Andres, Philipoom, Jade, Jamner, Dustin, Lin, Ashley, Gruetter, Samuel et al. 2024. "Foundational Integration Verification of a Cryptographic Server." Proceedings of the ACM on Programming Languages, 8 (PLDI).
dc.contributor.departmentMassachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
dc.contributor.departmentMassachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
dc.relation.journalProceedings of the ACM on Programming Languagesen_US
dc.identifier.mitlicensePUBLISHER_CC
dc.eprint.versionFinal published versionen_US
dc.type.urihttp://purl.org/eprint/type/JournalArticleen_US
eprint.statushttp://purl.org/eprint/status/PeerRevieweden_US
dc.date.updated2024-07-01T07:59:25Z
dc.language.rfc3066en
dc.rights.holderThe author(s)
dspace.date.submission2024-07-01T07:59:25Z
mit.journal.volume8en_US
mit.journal.issuePLDIen_US
mit.licensePUBLISHER_CC
mit.metadata.statusAuthority Work and Publication Information Neededen_US


Files in this item

Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record