The following table shows all the TEE platforms we currently support, and the supported interfaces for each TEE platform.
TEE platforms
UAR Generation
UAR Verification
Intel SGX1
Yes
Yes
Intel SGX2
Yes
Yes
HyperEnclave
Yes
Yes
Kunpeng Trustzone
No
Yes
Hygon CSV
No
Yes
Quick Start
Update the submodules
git submodule update --init --recursive
Initialize and enter the development environment container
./dockerenv.sh --init # create the container instance
./dockerenv.sh --exec # enter the container instance
Build the unified attestation library and samples
In the development environment container, run the following command:
./build.sh --with-samples --mode SIM
NOTES: SIM mode is used here, which means you can try the quick start
in the environment without TEE. If you want to try it in real TEE,
you need to setup the TEE and configure remote attestation firstly.
For example, in SGX2 platform, you need to register the platform to PCCS,
and set the PCCS URL in /etc/sgx_default_qcnl.conf and in
/etc/kubetee/unified_attestation.json (or by environment variable UA_ENV_PCCS_URL).
For How to setup the PCCS, please refer to Intel DCAP document.
Run the sample code
In the development environment container, run any application samples,
for example, report generation sample like this:
mkdir /etc/kubetee
cp ./deployment/conf/unified_attestation.json /etc/kubetee/
cd build/out
./app-sample-unified-attestation-generation
./app-sample-unified-attestation-verification-untrusted
Use UAL in your application
Jinzhao Attest provides UAL which can be integrated into an application with SGX SDK, Occlum LibOS, or without TEE at all.
Include header files
Please choose C++ or C ABI header files according to your programming language.
Header files for C++ programming language: have almost all the public interfaces
ua_untrusted.h: includes all untrusted header files, used in untrusted code or Occlum application
ua_trusted.h: includes all trusted header files, used in trusted code
Header files for other programming languages which are compatible with C ABI: have limited public interfaces
Jinzhao Attest
Jinzhao Attest provides unified attestation workflows for TEE compatibility, usability, and security.
Features Overview
Supported TEE platforms and interfaces
The following table shows all the TEE platforms we currently support, and the supported interfaces for each TEE platform.
Quick Start
Update the submodules
Initialize and enter the development environment container
Build the unified attestation library and samples
In the development environment container, run the following command:
NOTES: SIM mode is used here, which means you can try the quick start in the environment without TEE. If you want to try it in real TEE, you need to setup the TEE and configure remote attestation firstly. For example, in SGX2 platform, you need to register the platform to PCCS, and set the PCCS URL in /etc/sgx_default_qcnl.conf and in /etc/kubetee/unified_attestation.json (or by environment variable UA_ENV_PCCS_URL). For How to setup the PCCS, please refer to Intel DCAP document.
Run the sample code
In the development environment container, run any application samples, for example, report generation sample like this:
Use UAL in your application
Jinzhao Attest provides UAL which can be integrated into an application with SGX SDK, Occlum LibOS, or without TEE at all.
Include header files
Please choose C++ or C ABI header files according to your programming language.
Header files for C++ programming language: have almost all the public interfaces
Header files for other programming languages which are compatible with C ABI: have limited public interfaces
Include EDL file
This step is only for SGX-liked TEE platforms and SGX-SDK development model
Link unified attestation libraries
In different TEE platforms and different development containers(see also dockerenv.sh), you will build out different libraries:
NOTES: Please refer to the example applications in the ./samples directory for more details.
Contributing
Anyone is welcome to provide any form of contribution, for example:
Please check CONTRIBUTING.md.
License
Please check LICENSE for details.