Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Leverage external utility(CC Trusted API) to ease the process of confidential environment evidence fetching/verifying #2879

Open
1 task done
Ruoyu-y opened this issue Jan 31, 2024 · 4 comments

Comments

@Ruoyu-y
Copy link

Ruoyu-y commented Jan 31, 2024

Use case

Constellation, working as the typical confidential cluster that could run on either cloud environment or local machine across platforms, need to fetch measurements/evidence against different type of TEEs/TPM to prove its trustworthiness. Once a new confidential computing environment get supported in CSP's environment or a new technology revealed to the market, Constellation must make addition to the current code space to enable the evidence fetching or replaying function for the platform.

In the meanwhile, different platform or confidential computing technologies varies in use, which requires the Constellation developers to have knowledge and understandings on different architectures. Maintaining these code seems another burden for the project, as efforts are required once there's change in API or Specifications of the underlying technologies.

Describe your solution

Instead of maintaining the code within Constellation, it seems more efficient to leverage an utility which provides the capability for application to do evidence fetching or replaying using a set of simple APIs across all kinds of platforms.

CC Trusted API is a nice approach to streamline the effort that Constellation requires on this side. As a project that aims to collect confidential primitives (i.e., measurement, event log, quote) for zero-trust design, it provides the capability to fulfill this need using some vendor agnostic and TCG compliant APIs in multiple deployment environments (e.g. firmware/VM/cloud native clusters).

By leveraging these APIs, Constellation can perform with evidence fetching on different platforms through a unified API and requires little effort on maintenance of code related to platform features.

Would you be willing to implement this feature?

  • Yes, I could contribute this feature.
@thomasten
Copy link
Member

Hi,

Thanks for reaching out and describing your idea. We agree with the goal to handle as much as possible of the TEE-specific tasks with external libraries.

CC Trusted API is an interesting project, but we have some concerns around it:

  • It seems to be in an early stage and probably doesn't cover all aspects required by Constellation
  • It doesn't seem to have much adoption yet. (If the project would be backed by multiple hardware vendors, this might be less of a problem.)
  • There doesn't seem to be a Go API yet
  • We would strongly prefer a pure Go implementation

An alternative approach that we currently follow is using TEE-specific, but CSP-agnostic libraries, like

https://github.com/google/go-tdx-guest
https://github.com/google/go-sev-guest
https://github.com/google/go-tpm
https://github.com/google/go-tpm-tools

While these are maintained by Google, they also work for AWS and Azure.

@Ruoyu-y
Copy link
Author

Ruoyu-y commented Feb 27, 2024

Hi,

Thanks for reaching out and describing your idea. We agree with the goal to handle as much as possible of the TEE-specific tasks with external libraries.

CC Trusted API is an interesting project, but we have some concerns around it:

  • It seems to be in an early stage and probably doesn't cover all aspects required by Constellation
  • It doesn't seem to have much adoption yet. (If the project would be backed by multiple hardware vendors, this might be less of a problem.)
  • There doesn't seem to be a Go API yet
  • We would strongly prefer a pure Go implementation

An alternative approach that we currently follow is using TEE-specific, but CSP-agnostic libraries, like

https://github.com/google/go-tdx-guest https://github.com/google/go-sev-guest https://github.com/google/go-tpm https://github.com/google/go-tpm-tools

While these are maintained by Google, they also work for AWS and Azure.

Thanks for the feedback. We are already discussing with several potential users. In the meanwhile, we are working hard to provide Golang support and adding more partners to the community for contribution. Once we have more progress, i will get it updated here and ask for a second round evaluation.

@Ruoyu-y
Copy link
Author

Ruoyu-y commented May 7, 2024

Updates for CC-API projects:

  1. CC-API already has full support on Go/Python/Rust with all APIs defined here. The API implementation for VM usage is located here, and the implementation for container usage is located here.
  2. Configfs-tsm support has been added recently and will be part of the next release of CC-API implementations. Hence, supporting both Intel TDX and other vendors.
  3. As we would like to make CC-API a standardized API for all the stuff on CC attestation/validation related operations, we already started promoting the project to CCC and got nice feedbacks from the community. For customer adoption side, we are WIP with several parties including CSP, enterprises.

@hpvd
Copy link

hpvd commented Jun 12, 2024

this looks like an interesting presentation on this topic:
from Open Confidential Computing Conference
https://assets-global.website-files.com/63c54a346e01f30e726f97cf/660e6b338a5ac8a245191011_Extending%20Integrity%20Measurement%20-%20Wenhui%20Zhang.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants