  For trusted execution environments (TEEs), remote attestation permits
establishing trust in software executed on a remote host. It requires that the
measurement of a remote TEE is both complete and fresh: We need to measure all
aspects that might determine the behavior of an application, and this
measurement has to be reasonably fresh. Performing measurements only at the
start of a TEE simplifies the attestation but enables "reuse" attacks of
enclaves. We demonstrate how to perform such reuse attacks for different TEE
frameworks. We also show how to address this issue by enforcing freshness -
through the concept of a singleton enclave - and completeness of the
measurements. Completeness of measurements is not trivial since the secrets
provisioned to an enclave and the content of the filesystem can both affect the
behavior of the software, i.e., can be used to mount reuse attacks. We present
mechanisms to include measurements of these two components in the remote
attestation. Our evaluation based on real-world applications shows that our
approach incurs only negligible overhead ranging from 1.03% to 13.2%.
