Search papers, labs, and topics across Lattice.
The paper introduces Cerisier, a program logic built on Iris and the Rocq Prover, designed for modular verification of systems using attestation in capability machines. Cerisier formalizes CHERI-TrEE, an extension to the Cerise capability machine, to enable reasoning about trusted, untrusted, and attested code. The logic includes a universal contract for untrusted code, capturing capability safety and local enclave attestation, and is demonstrated through proofs of end-to-end properties in secure outsourced computation, mutual attestation, and trusted sensor components.
Finally, a program logic lets you formally verify end-to-end security properties of complex systems that combine trusted, untrusted, and attested code running on capability machines.
A key feature in trusted computing is attestation, which allows encapsulated components (enclaves) to prove their identity to (local or remote) distrusting components. Reasoning about software that uses the technique requires tracking how trust evolves after successful attestation. This process is security-critical and non-trivial, but no existing formal verification technique supports modular reasoning about attestation of enclaves and their clients, or proving end-to-end properties for systems combining trusted, untrusted and attested code. We contribute Cerisier, the first program logic for modular reasoning about trusted, untrusted and attested code, fully mechanized in the Iris separation logic and the Rocq Prover. We formalize a recent proposal, CHERI-TrEE, to extend capability machines with enclave primitives, as an extension to the Cerise capability machine and program logic. Our program logic comes with a universal contract for untrusted code, which captures both capability safety and local enclave attestation. Like Cerise, this universal contract is phrased in terms of a logical relation defining capabilities'authority. We demonstrate Cerisier by proving end-to-end properties for three representative applications of trusted computing: secure outsourced computation, mutual attestation and a modeled trusted sensor component.