Show simple item record

dc.contributor.authorKuepper, Joel
dc.contributor.authorErbsen, Andres
dc.contributor.authorGross, Jason
dc.contributor.authorConoly, Owen
dc.contributor.authorSun, Chuyue
dc.contributor.authorTian, Samuel
dc.contributor.authorWu, David
dc.contributor.authorChlipala, Adam
dc.contributor.authorChuengsatiansup, Chitchanok
dc.contributor.authorGenkin, Daniel
dc.contributor.authorWagner, Markus
dc.contributor.authorYarom, Yuval
dc.date.accessioned2023-07-05T20:02:53Z
dc.date.available2023-07-05T20:02:53Z
dc.date.issued2023-06-06
dc.identifier.issn2475-1421
dc.identifier.urihttps://hdl.handle.net/1721.1/150988
dc.description.abstractMost software domains rely on compilers to translate high-level code to multiple different machine languages, with performance not too much worse than what developers would have the patience to write directly in assembly language. However, cryptography has been an exception, where many performance-critical routines have been written directly in assembly (sometimes through metaprogramming layers). Some past work has shown how to do formal verification of that assembly, and other work has shown how to generate C code automatically along with formal proof, but with consequent performance penalties vs. the best- known assembly. We present CryptOpt, the first compilation pipeline that specializes high-level cryptographic functional programs into assembly code significantly faster than what GCC or Clang produce, with mechanized proof (in Coq) whose final theorem statement mentions little beyond the input functional program and the operational semantics of x86-64 assembly. On the optimization side, we apply randomized search through the space of assembly programs, with repeated automatic benchmarking on target CPUs. On the formal-verification side, we connect to the Fiat Cryptography framework (which translates functional programs into C-like IR code) and extend it with a new formally verified program-equivalence checker, incorporating a modest subset of known features of SMT solvers and symbolic-execution engines. The overall prototype is quite practical, e.g. producing new fastest-known implementations of finite-field arithmetic for both Curve25519 (part of the TLS standard) and the Bitcoin elliptic curve secp256k1 for the Intel 12��ℎ and 13��ℎ generations.en_US
dc.publisherACMen_US
dc.relation.isversionofhttps://doi.org/10.1145/3591272en_US
dc.rightsCreative Commons Attributionen_US
dc.rights.urihttps://creativecommons.org/licenses/by/4.0/en_US
dc.sourceAssociation for Computing Machineryen_US
dc.titleCryptOpt: Verified Compilation with Randomized Program Search for Cryptographic Primitivesen_US
dc.typeArticleen_US
dc.identifier.citationKuepper, Joel, Erbsen, Andres, Gross, Jason, Conoly, Owen, Sun, Chuyue et al. 2023. "CryptOpt: Verified Compilation with Randomized Program Search for Cryptographic Primitives." Proceedings of the ACM on Programming Languages, 7 (PLDI).
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.updated2023-07-01T07:55:39Z
dc.language.rfc3066en
dc.rights.holderThe author(s)
dspace.date.submission2023-07-01T07:55:39Z
mit.journal.volume7en_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