The CMC repository provides software to enable remote attestation of computing platforms, as well as secure attested TLS and HTTPS channels between those platforms. Currently, the CMC repository supports Trusted Platform Modules (TPMs), AMD SEV-SNP, Intel SGX, as well as Intel TDX. The goal is to make attestation easy for verifiers without prior knowledge of the peer's software stack. This is achieved through a set of trusted CAs and self-contained attestation reports that include signed metadata and reference hash values.
A detailed description of the architecture can be found in our paper and in the documentation
Note: If you want to run the cmc on actual hardware, refer to the Setup, Build and Run documentation.
For demonstration purposes only, we provide a docker container for building the software and a Virtual Machine (VM) with attached software TPM.
If you choose to use the Docker container, simply ensure that Docker is installed. The container bind-mounts the repository root directory and runs as the current user, meaning all artifacts are built in the same location as they would be without Docker.
If you prefer not to use Docker, make sure all prerequisites are
installed, and omit the cmc-docker
prefix from each command.
Create and launch the VM with attached swTPM, establish server-side attested TLS connection to VM:
# Setup environment
source env.bash
# Download and configure image and tools
cmc-docker vm-setup
# Start swTPM (separate terminal )
cmc-docker vm-swtpm
# Start estserver
cmc-docker vm-estserver
# Start VM
cmc-docker vm-start
# Establish attested TLS connection to Ubuntu VM
cmc-docker vm-cmcctl
cmcctl on the host establishes an attested TLS connection
to the cmcctl running within the ubuntu VM with server-side authentication and server-side
attestation. Find the generated attestation result in cmc/data/attestation-result
.
Note: This demo is not secure and attestation might fail. Refer to VM Setup for more information and how to fix.
The following contents can be found in the doc folder:
An overview of the architecture is given in Architecture.
For detailed instructions on how to setup TPM, Intel SGX, Intel TDX or AMD SEV-SNP platforms including PKI and metadata generation, refer to the Setup Documentation
See Build Documentation for instructions on how to build the go binaries.
For configuring and running the go binaries, refer to the Run Documentation.
For a description of the cmcd
gRPC, CoaP and socket APIs, refer to CMCD API.
For a description of the attested TLS attestation protocol, refer to
Attestation Protocol.
Usually, the attested TLS or HTTPS libraries are used within own projects to provide attestation for TLS or HTTPS connections, as described in Integration
For an alternative demo setup with a more complex PKI and policies based on the requirements of the International Data Spaces (IDS), see IDS Example Setup