Copland

Semantics, languages and tools for layered attestation

Home
Publications
Documentation
Software
Blog

[Top] [Next]

Simple sequence

[Output]

The Copland phrase below expresses the simplest example of a mutual attestation for this scenario.

*bank: attest bank sys -> @client prove client id

The bank first attests to the integrity of its system. We have expressed this as the bank performing the attest measurement locally on sys. It could be that attest is composed of sub-measurements that have been bundled together, as in a layered attestation. The client receives the result of this measurement and implicitly appraises it. If the measurement value is acceptable, the client proceeds to prove its identity to the bank, which we have expressed as the client performing the prove measurement on id. It sends the result of this identity proof to the bank for appraisal (verification).

The final evidence produced by this Copland phrase has type

m(msp(prove, client, id), client, m(msp(attest, bank, sys), bank, mt))

This says that the final evidence is the result of performing the prove measurement from the place identified by client with target id also on place client. This measurement has as input evidence the result of performing the attest measurement from the place identified by bank with target sys also on place bank with empty input evidence.

This Copland phrase is simple and captures the sequential nature of mutual attestation in this scenario. However, it lacks some detail necessary to offer a satisfying characterization of this scenario: