Skip to content

The Connector Measurement Component (CMC) repository provides tools and software to enable remote attestation of computing platforms.

License

Notifications You must be signed in to change notification settings

Fraunhofer-AISEC/cmc

Repository files navigation

CMC

build Go Report Card

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

Quick Start

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.

Further Documentation

The following contents can be found in the doc folder:

Architecture

An overview of the architecture is given in Architecture.

Setup

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

Build

See Build Documentation for instructions on how to build the go binaries.

Run

For configuring and running the go binaries, refer to the Run Documentation.

APIs and Protocols

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.

Integration

Usually, the attested TLS or HTTPS libraries are used within own projects to provide attestation for TLS or HTTPS connections, as described in Integration

Additional Demo Setups

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

About

The Connector Measurement Component (CMC) repository provides tools and software to enable remote attestation of computing platforms.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 8