Skip to content

Latest commit

 

History

History
66 lines (49 loc) · 3.54 KB

File metadata and controls

66 lines (49 loc) · 3.54 KB

How to Verify Intel(R) Prebuilt Architectural Enclaves (AE) Reproducibility

Purpose

Intel® prebuilt AEs have been signed by Intel which include the Enclave Signature Structure to the files. Therefore, it's not easy to verify they are reproducible by comparing the checksums of your AE builds with the ones found in Intel(R) prebuilt AEs.
This document outlines a process to guarantee Intel(R) prebuilt AEs are:

  • Built using the open source codebase and toolchain
  • Signed using the open source enclave config.xml

Prerequisites

How to verify

  • Run below command to verify

    $ ./reproducibility_verifier.sh intel_signed_ae user_build_unsigned_ae user_private_key intel_ae_config_xml [output_dir]

    Note:

    • To show the usage, please run ./reproducibility_verifier.sh.
    • The first four required arguments MUST in the same order above. (See Prerequisites - Prepare below 4 materials).
    • The last argument 'output_dir' is optional. If not provided, it will use 'output' by default. The result will be generated in 'output_dir'.
  • Check the verification result

    • If successful, the exit code will be 0, and the following message will be displayed:

      $ ./reproducibility_verifier.sh intel_signed_ae user_build_unsigned_ae user_private_key intel_ae_config_xml
      ...
      Reproducibility Verification PASSED!
    • If it fails, the exit code will be 1 or 2, and the following message will be displayed:

      $ ./reproducibility_verifier.sh intel_signed_ae user_build_unsigned_ae user_private_key intel_ae_config_xml output
      ...
      Reproducibility Verification FAILED!
      Please find the diff contents in output/metadata_diff.txt

      Meanwhile, you can find the metadata of Intel and user are generated in ./output/intel_metadata.txt and ./output/user_metadata.txt

  • For one release, we may not sign all the AEs but only sign a portion of them. So please don't anticipate to reproduce all of the AEs in a single release. You can refer to README.md and README.md to obtain the appropriate reproducible release for each AE and utilize the corresponding release branch to reproduce the AE.