DCAP quote verification -- discussion and todo list #498
Labels
documentation
Primary component is missing or incorrect documentation
question
Further information is requested
Here is a proposal for an attestation flow for PDO, which closely follows what FPC does.
The attestation library is available under the attestation-dev branch.
The library is divided in 3 main components:
The figure depicts the flows for attestation generation, conversion and verification.
For additional technical details look at the
test/attested_evidence_test.sh
script in the library.Also, for additional details about the APIs look at the headers in the
include
folder.Attestation generation.
The library exposes the
init_attestation(params)
andattestation_blob = get_attestation(statement)
APIs.params
is a json blob to initialize the internal state of the library for an attestation. Thestatement
is a binary string which (in SGX) is hashed to generate the "report data" to be attested.attestation
is a json blob containing the remote attestation. So notice that, for EPID and DCAP, the trusted attestation library has ocalls in untrusted space to get the remote attestation from the Intel Quoting Enclave.Attestation conversion.
The library provides a script for converting the attestation into evidence:
evidence_blob = attestation_to_evidence(attestation_blob)
. Additional sub-scripts perform the conversion based on the attestation type. For thesimulated
type, it simply copies the attestation fields into the evidence field. For EPID, the script contacts the Intel Attestation Service (IAS) for verification -- an API key is required in the collateral folder. Fordcap-sgx
, the script contacts the Intel Trust Authority (ITA) for verification through the provided url -- an API key is required in the collateral folder. Fordcap-direct-sgx
, the script uses the DCAP library to retrieve the collateral from the Intel Provisioning Certification Service (PCS) or the Intel Provisioning Certificate Caching Service (PCCS), depending on the configuration in/etc/sgx_default_qcnl.conf
. Here, no third-party verification is performed -- the verification fully happens in the last step.Attestation verification.
The attestation library exposes the
verify_evidence(evidence_blob, statement, code_id)
API. In SGX, the code identity refers to themrenclave
value. The verification result is simplytrue
orfalse
, depending on the outcome. The API mainly verifies: the chain of trust of the evidence (i.e., none for thesimulated
type; up to the IAS root CA for EPID; up to the SGX Root CA for thedcap-direct-sgx
type; up to the ITA root CA for thedcap-sgx
type. The respective root CA certificates are all retrieved at build time and compiled into the library.The text was updated successfully, but these errors were encountered: