tencent cloud

文档反馈

构建 Tencent SGX 机密计算环境

最后更新时间:2022-12-01 14:23:06

    操作场景

    本文介绍如何在 M6ce 实例中构建 Tencent SGX 机密计算环境,并演示如何使用 intel SGXSDK 验证 SGX 功能。

    前提条件

    已创建并登录 M6ce 实例

    说明

    本文步骤以使用操作系统为 TencentOS Server 3.1(TK4) 的实例为例,不同操作系统版本步骤有一定区别,请结合实际情况进行操作。

    操作步骤

    1. 执行以下命令,检查 kernel 版本。
      uname -a
      

    查看 kernel 版本是否低于5.4.119-19.0008:

    • 是,请执行以下命令更新 kernel。

      yum update kernel
      
    • 否,则请执行下一步。

    1. 执行以下命令,安装 SGX runtime 所需的软件包。
      yum install \
      libsgx-ae-le libsgx-ae-pce libsgx-ae-qe3 libsgx-ae-qve \
      libsgx-aesm-ecdsa-plugin libsgx-aesm-launch-plugin libsgx-aesm-pce-plugin libsgx-aesm-quote-ex-plugin \
      libsgx-dcap-default-qpl libsgx-dcap-default-qpl-devel libsgx-dcap-ql libsgx-dcap-ql-devel \
      libsgx-dcap-quote-verify libsgx-dcap-quote-verify-devel libsgx-enclave-common libsgx-enclave-common-devel libsgx-epid-devel \
      libsgx-launch libsgx-launch-devel libsgx-pce-logic libsgx-qe3-logic libsgx-quote-ex libsgx-quote-ex-devel \
      libsgx-ra-network libsgx-ra-uefi libsgx-uae-service libsgx-urts sgx-ra-service \
      sgx-aesm-service
      
      说明

      SGX AESM 服务的默认安装目录为 /opt/intel/sgx-aesm-service

    2. 执行以下命令,安装 intel SGXSDK。
      yum install sgx-linux-x64-sdk
      
    说明

    Intel SGXSDK 的默认安装目录为 /opt/intel/sgxsdk。您可参考 intel SGXSDK 用户手册开发 SGX 程序。

    1. SGX runtime 和 intel SGXSDK 安装完成后,请重启实例。详情请参见 重启实例

    2. 配置腾讯云 SGX 远程证明服务。
      腾讯云 SGX 远程证明服务采用区域化部署,您可以访问 SGX 云服务器实例所在地域的腾讯云 SGX 远程证明服务来获得最佳体验。安装 intel SGXSDK 后会自动生成远程证明服务的默认配置文件 /etc/sgx_default_qcnl.conf,请根据以下步骤手动修改该文件,以适配 SGX 云服务器实例所在地域的腾讯云 SGX 远程证明服务。

      说明
      • 目前仅北京、上海及广州地域支持腾讯云 SGX 远程证明服务。
      • Intel Ice Lake 仅支持基于 Intel SGX DCAP 远程证明方式,不支持 Intel EPID 远程证明方式。

    使用 VIM 编辑器,将 /etc/sgx_default_qcnl.conf 修改为如下内容:

    # PCCS server address
    PCCS_URL=https://sgx-dcap-server-tc.[Region-ID].tencent.cn/sgx/certification/v3/
    # To accept insecure HTTPS cert, set this option to FALSE
    USE_SECURE_CERT=TRUE
    

    请将 [Region-ID] 替换为 SGX 云服务器实例所在地域的 ID。例如:

    北京地域修改示例如下:

    # PCCS server address
    PCCS_URL=https://sgx-dcap-server-tc.bj.tencent.cn/sgx/certification/v3/
    # To accept insecure HTTPS cert, set this option to FALSE
    USE_SECURE_CERT=TRUE
    

    上海地域修改示例如下:

    # PCCS server address
    PCCS_URL=https://sgx-dcap-server-tc.sh.tencent.cn/sgx/certification/v3/
    # To accept insecure HTTPS cert, set this option to FALSE
    USE_SECURE_CERT=TRUE
    

    广州地域修改示例如下:

    # PCCS server address
    PCCS_URL=https://sgx-dcap-server-tc.gz.tencent.cn/sgx/certification/v3/
    # To accept insecure HTTPS cert, set this option to FALSE
    USE_SECURE_CERT=TRUE
    

    验证 SGX 功能示例

    示例1:启动 Enclave

    Intel SGXSDK 中提供了 SGX 示例代码用于验证 SGX 功能,默认目录为 /opt/intel/sgxsdk/SampleCode。本示例中的代码(SampleEnclave)效果为启动一个 Enclave,以验证是否正常使用安装的 SGXSDK,以及 SGX 云服务器实例的机密内存资源是否可用。

    1. 执行以下命令,设置 intel SGXSDK 相关的环境变量。

      source /opt/intel/sgxsdk/environment
      
    2. 执行以下命令,编译示例代码 SampleEnclave。

      cd /opt/intel/sgxsdk/SampleCode/SampleEnclave && make
      
    3. 执行以下命令,运行编译出的可执行文件。

      ./app
      

    返回如下图所示结果,则说明已启动成功。

    示例2:SGX 远程证明

    Intel sgx 的 code tree 提供了示例代码用于验证 SGX 远程证明功能(DCAP)。本示例为生成和验证 Quote,示例涉及 Quote 生成方(QuoteGenerationSample)和 Quote 验证方(QuoteVerificationSample)。

    1. 执行以下命令,设置 intel SGXSDK 相关的环境变量。

      source /opt/intel/sgxsdk/environment
      
    2. 依次执行以下命令,安装 git 并下载 intel sgx DCAP code tree。

      cd /root && yum install git
      
    git clone https://github.com/intel/SGXDataCenterAttestationPrimitives.git
    
    1. 依次执行以下命令,编译并运行 Quote 生成方示例代码 QuoteGenerationSample。

      1. 进入 QuoteGenerationSample 目录。

        cd /root/SGXDataCenterAttestationPrimitives/SampleCode/QuoteGenerationSample
        
      2. 编译 QuoteGenerationSample。

        make
        
      3. 运行 QuoteGenerationSample 并生成 Quote。

        ./app
        
    2. 执行以下命令,编译 Quote 验证方示例代码 QuoteVerificationSample。

      cd /root/SGXDataCenterAttestationPrimitives/SampleCode/QuoteVerificationSample && make
      
    3. 执行以下命令,对 QuoteVerificationSample Enclave 进行签名。

      sgx_sign sign -key Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml
      
    4. 执行以下命令,运行 QuoteVerificationSample 以验证 Quote。

      ./app
      

    返回如下图所示结果,则说明已验证成功。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持