Todos os produtos
Search
Central de documentação

Elastic Compute Service:Build an SGX confidential computing environment

Última atualização: Sep 02, 2026

Este tópico descreve como criar um ambiente de computação confidencial com Software Guard Extensions (SGX) em uma instância do Elastic Compute Service (ECS) habilitada para Intel® SGX, também conhecida como instância vSGX, e como verificar o recurso SGX na instância.

Pré-requisitos

Crie uma instância vSGX e conecte-se a ela.

Nota

Apenas as famílias de instâncias g7t, c7t, r7t e g9it suportam o recurso SGX. Para mais informações, consulte Instance family overview.

Informações de base

O Intel® SGX estabelece um ambiente de computação confidencial no nível físico para garantir a segurança dos dados, oferecendo proteções baseadas em hardware em vez de firmware ou software. O Intel® SGX utiliza extensões de conjunto de instruções e um mecanismo de controle de acesso para isolar o ambiente de execução de programas SGX. Isso protege a confidencialidade e a integridade de códigos e dados críticos contra ataques de malware. Em comparação com outras tecnologias de segurança, o Intel® SGX usa uma raiz de confiança composta exclusivamente por hardware. Isso evita falhas causadas por vulnerabilidades de segurança no software que serve de base para a raiz de confiança e aumenta a segurança do sistema.

As famílias de instâncias com segurança aprimorada g7t, c7t, r7t e g9it fornecem memória confidencial baseada em Intel® SGX e suportam a tecnologia SGX para máquinas virtuais. É possível desenvolver e executar programas SGX em instâncias vSGX.

Importante

Se você utilizar chaves vinculadas ao hardware (como chaves de selagem SGX) para criptografar os dados de uma instância dentro de um enclave Intel SGX, os dados criptografados não poderão ser descriptografados após a alteração do host da instância. Recomendamos implementar redundância e backup de dados na camada de aplicação para garantir a confiabilidade do aplicativo.

Procedimento

Etapa 1: Verificar se o SGX está ativado

Antes de criar um ambiente de computação confidencial SGX, utilize o CPUID para verificar se o SGX está ativado. Esta seção descreve como realizar essa verificação. Os exemplos a seguir utilizam uma imagem Alibaba Cloud Linux 2 (UEFI) ou Alibaba Cloud Linux 3 (UEFI) e uma imagem Ubuntu 22.04 (UEFI).

Imagem Alibaba Cloud Linux 2/3 (UEFI)

  1. Instale o CPUID.

    sudo yum install -y cpuid
  2. Verifique se o SGX está ativado.

    cpuid -1 -l 0x7 |grep SGX

    Uma saída de comando semelhante à seguinte indica que o SGX está ativado.

    # cpuid -1 -l 0x7 |grep SGX
    SGX: Software Guard Extensions supported = true
    SGX_LC: SGX launch config supported          = true
    SGX-KEYS: SGX attestation services            = false
    Nota

    Após ativar o SGX, o driver SGX é necessário para executar programas SGX. As imagens dedicadas fornecidas pela Alibaba Cloud possuem um driver SGX integrado. Caso não deseje usar uma imagem dedicada, instale o driver SGX.

  3. Verifique se o driver SGX está instalado.

    ls -l /dev/{sgx_enclave,sgx_provision}

    Uma saída de comando semelhante à seguinte indica que o driver SGX está instalado.

    [ @iZbp1cclxbc`    ~ ]# ls -l /dev/{sgx_enclave,sgx_provision}
    crw-rw-rw- 1 root root    10, 61 Mar 16 09:38 /dev/sgx_enclave
    crw------- 1 root sgx_prv 10, 62 Mar 16 09:38 /dev/sgx_provision

Imagem Ubuntu 22.04 (UEFI)

  1. Instale o CPUID.

    sudo apt-get update && sudo apt-get install -y --no-install-recommends cpuid
  2. Verifique se o SGX está ativado.

    cpuid -1 -l 0x7 |grep SGX

    Uma saída de comando semelhante à seguinte indica que o SGX está ativado.

    $ cpuid -1 -l 0x7 |grep SGX
       SGX: Software Guard Extensions supported = true
       SGX_LC: SGX launch config supported          = true
    Nota

    Após ativar o SGX, o driver SGX é necessário para executar programas SGX. As imagens dedicadas fornecidas pela Alibaba Cloud possuem um driver SGX integrado. Caso não deseje usar uma imagem dedicada, instale o driver SGX.

  3. Instale o driver SGX:

    1. Crie o script install_sgx_dcap.sh:

      cat <<'EOF' > install_sgx_dcap.sh
      #!/bin/bash
      
      version_id=$(cat /etc/os-release|grep "VERSION_ID"|cut -d"=" -f2|tr -d "\"")
      version_codename=$(cat /etc/os-release|grep "VERSION_CODENAME"|cut -d"=" -f2)
      apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential dkms curl wget
      
      if [ ! -e /dev/sgx/enclave -a ! -e /dev/sgx_enclave ]; then
        dcap_version=$(curl -s https://download.01.org/intel-sgx/latest/version.xml |grep dcap| sed -r 's/.*>(.*)<.*/\1/')
        dcap_files=$(curl -s https://download.01.org/intel-sgx/latest/dcap-latest/linux/SHA256SUM_dcap_${dcap_version}.cfg)
        echo "${dcap_files}" | grep "ubuntu${version_id}-server" |grep "sgx_linux_x64_driver" | awk '{print $2}' | xargs -I{} curl -O -J https://download.01.org/intel-sgx/latest/dcap-latest/linux/{}
        
        bash sgx_linux_x64_driver*.bin
      else
        echo "driver already installed"
      fi
      EOF
    2. Execute o script para instalar o driver SGX:

      sudo bash ./install_sgx_dcap.sh
  4. Verifique se o driver SGX está instalado.

    ls -l /dev/{sgx_enclave,sgx_provision}

    Uma saída de comando semelhante à seguinte indica que o driver SGX está instalado.

    ecs-user@iZxxx:~$ ls -l /dev/{sgx_enclave,sgx_provision}
    crw-rw---- 1 root sgx 10, 125 Mar 20 10:20 /dev/sgx_enclave
    crw------- 1 root root 10, 126 Mar 20 10:20 /dev/sgx_provision

Etapa 2: Criar um ambiente de computação confidencial SGX

Antes de desenvolver programas SGX, instale o runtime e o SDK do SGX em uma instância vSGX e configure o service de atestação remota. Para garantir uma melhor experiência de uso, recomendamos utilizar as imagens dedicadas fornecidas pela Alibaba Cloud. Essas imagens já incluem o driver SGX e oferecem um SDK de Ambiente de Execução Confiável (TEE) totalmente compatível com o Intel® SGX SDK. Esta seção descreve como criar um ambiente de computação confidencial SGX. Os exemplos a seguir utilizam uma imagem Alibaba Cloud Linux 2 (UEFI) ou Alibaba Cloud Linux 3 (UEFI) e uma imagem Ubuntu 22.04 (UEFI). Se você utilizar imagens Linux como CentOS, instale o driver SGX e o Platform SoftWare (PSW). Para mais informações, consulte Intel® SGX SW Installation Guide for Linux.

  1. Instale os módulos necessários para criar o ambiente de computação confidencial SGX.

    Imagem Alibaba Cloud Linux 2/3 (UEFI)

    1. (Obrigatório) Instale o runtime SGX da Alibaba Cloud.

      Nota

      Ao criar uma instância vSGX no console ECS, o runtime SGX da Alibaba Cloud é instalado automaticamente. Você pode pular esta etapa e instalar o Alibaba Cloud TEE SDK.

      1. Importe o repositório de software Yellowdog Updater Modified (YUM) para computação confidencial da Alibaba Cloud.

        Nota

        Substitua [Region-ID] nas URLs a seguir pelo ID da região da instância vSGX:

        • A URL pública do repositório tem o seguinte formato: https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo.

        • A URL interna do repositório tem o seguinte formato: https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo.

        Também é possível criar e executar um script para importar o repositório de software YUM para computação confidencial da Alibaba Cloud.

        1. Crie o script install_sgx_repo.sh:

          cat <<'EOF' > install_sgx_repo.sh
          ID=$(grep -w '^ID' /etc/os-release | awk -F= '{print $2}' | tr -d '"')
          VERSION_ID=$(grep -w '^VERSION_ID' /etc/os-release | awk -F= '{print $2}' | tr -d '"')
          
          # Query the region of the instance.
          token=$(curl -s -X PUT -H "X-aliyun-ecs-metadata-token-ttl-seconds: 5" "http://100.100.100.200/latest/api/token")
          region_id=$(curl -s -H "X-aliyun-ecs-metadata-token: $token" http://100.100.100.200/latest/meta-data/region-id)
          
          # Enable the Alibaba Cloud experimental repository for the instance if an Alibaba Cloud Linux 2 (UEFI) image is used.
          if [ "$ID" = "alinux" -a "$VERSION_ID" = "2.1903" ]; then
              sudo rpmkeys --import http://mirrors.cloud.aliyuncs.com/epel/RPM-GPG-KEY-EPEL-7
              sudo yum install -y alinux-release-experimentals
          fi
          
          yum install -y yum-utils && \
          yum-config-manager --add-repo \
          https://enclave-${region_id}.oss-${region_id}-internal.aliyuncs.com/repo/alinux/enclave-expr.repo
          
          EOF
        2. Importe o repositório YUM para computação confidencial da Alibaba Cloud:

          sudo bash ./install_sgx_repo.sh
      2. Instale o runtime SGX da Alibaba Cloud.

        sudo yum install -y 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-ql \
        libsgx-dcap-quote-verify libsgx-enclave-common libsgx-launch libsgx-pce-logic \
        libsgx-qe3-logic libsgx-quote-ex libsgx-ra-network libsgx-ra-uefi \
        libsgx-uae-service libsgx-urts sgx-ra-service sgx-aesm-service
        Nota

        O SGX Architectural Enclave Service Manager (AESM) gerencia services como início de enclave, configuração de chaves e atestação remota. O caminho de instalação padrão do SGX AESM é /opt/intel/sgx-aesm-service.

    2. Instale o Alibaba Cloud TEE SDK.

      sudo yum install -y sgxsdk

    O Alibaba Cloud TEE SDK é totalmente compatível com o Intel® SGX SDK. Após instalar o Alibaba Cloud TEE SDK, consulte a Referência do Desenvolvedor Intel® SGX para desenvolver programas SGX. Para mais informações, consulte Intel®SGX Developer Reference.

    Nota

    O caminho de instalação padrão do Intel® SGX SDK no Alibaba Cloud TEE SDK é /opt/alibaba/teesdk/intel/sgxsdk/.

    Imagem Ubuntu 22.04 (UEFI)

    1. Crie o script install_sgx_sdk.sh:

      cat <<'EOF' > install_sgx_sdk.sh
      #!/bin/bash
      
      version_id=$(cat /etc/os-release|grep "VERSION_ID"|cut -d"=" -f2|tr -d "\"")
      version_codename=$(cat /etc/os-release|grep "VERSION_CODENAME"|cut -d"=" -f2)
      apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential dkms curl wget
      
      dcap_version=$(curl -s https://download.01.org/intel-sgx/latest/version.xml |grep dcap| sed -r 's/.*>(.*)<.*/\1/')
      linux_version=$(curl -s https://download.01.org/intel-sgx/latest/version.xml |grep linux| sed -r 's/.*>(.*)<.*/\1/')
      dcap_files=$(curl -s https://download.01.org/intel-sgx/latest/dcap-latest/linux/SHA256SUM_dcap_${dcap_version}.cfg)
      echo "${dcap_files}" | grep "ubuntu${version_id}-server" | awk '{print $2}' | xargs -I{} curl -O -J https://download.01.org/intel-sgx/latest/dcap-latest/linux/{}
      
      # install sgx_sdk
      bash sgx_linux_x64_sdk*.bin --prefix /opt/intel
      source /opt/intel/sgxsdk/environment
      
      # install psw
      echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu ${version_codename} main" |  tee /etc/apt/sources.list.d/intelsgx.list
      wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
      apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libsgx-launch libsgx-urts libsgx-epid libsgx-quote-ex libsgx-dcap-ql libsgx-dcap-ql-dev
      systemctl enable --now aesmd.service
      EOF
    2. Execute o script para instalar o Intel® SGX SDK e o PSW:

      sudo bash ./install_sgx_sdk.sh
  2. Configure o service de atestação remota SGX da Alibaba Cloud.

    O service de atestação remota SGX da Alibaba Cloud é totalmente compatível com o service de atestação remota baseado no algoritmo de assinatura digital de curva elíptica (ECDSA) do Intel® SGX e com o Intel® SGX SDK. As instâncias vSGX fornecidas pela Alibaba Cloud podem obter confiança de provedores e produtores remotos por meio da atestação remota. Para mais informações, consulte Attestation & Provisioning Services.

    O service de atestação remota SGX da Alibaba Cloud fornece as seguintes informações sobre o SGX SDK:

    • Certificados SGX: os certificados do SGX.

    • Lista de revogação: uma lista de certificados SGX revogados.

    • Informações da base de computação confiável: informações sobre a raiz de confiança.

    Nota

    O Intel Ice Lake suporta apenas atestação remota baseada em Intel Software Guard Extensions Data Center Attestation Primitives (Intel SGX DCAP) e não suporta atestação remota baseada em Intel Enhanced Privacy ID (EPID). É necessário adaptar os aplicativos antes de usar o recurso de atestação remota. Para mais informações sobre atestação remota, consulte Strengthen Enclave Trust with Attestation.

    O service de atestação remota SGX da Alibaba Cloud é implantado por região. Para garantir estabilidade ideal, recomendamos acessar o service implantado na mesma região da sua instância vSGX. Após instalar o Alibaba Cloud TEE SDK, o arquivo de configuração padrão /etc/sgx_default_qcnl.conf é gerado automaticamente para o service de atestação remota. Utilize um dos métodos a seguir para adaptar o arquivo ao service de atestação remota SGX da Alibaba Cloud na região onde a instância vSGX está implantada.

    Nota

    A tabela a seguir descreve as regiões onde o service de atestação remota SGX da Alibaba Cloud é suportado.

    Região suportada

    ID da região

    China (Qingdao)

    cn-qingdao

    China (Beijing)

    cn-beijing

    China (Zhangjiakou)

    cn-zhangjiakou

    China (Ulanqab)

    cn-wulanchabu

    China (Hangzhou)

    cn-hangzhou

    China (Shanghai)

    cn-shanghai

    China (Shenzhen)

    cn-shenzhen

    China (Heyuan)

    cn-heyuan

    China (Guangzhou)

    cn-guangzhou

    China (Chengdu)

    cn-chengdu

    China (Hong Kong)

    cn-hongkong

    Singapore

    ap-southeast-1

    Indonesia (Jakarta)

    ap-southeast-5

    • (Recomendado) Método 1: Configurar automaticamente o arquivo /etc/sgx_default_qcnl.conf.

      Execute os comandos a seguir para configurar automaticamente o arquivo /etc/sgx_default_qcnl.conf. Para mais informações, consulte Access instance metadata.

      # View the region of the instance.
      token=$(curl -s -X PUT -H "X-aliyun-ecs-metadata-token-ttl-seconds: 5" "http://100.100.100.200/latest/api/token")
      region_id=$(curl -s -H "X-aliyun-ecs-metadata-token: $token" http://100.100.100.200/latest/meta-data/region-id)
      
      # Specify the URL of Alibaba Cloud Provisioning Certificate Caching Service (PCCS) for the region in which the instance is deployed.
      PCCS_URL=https://sgx-dcap-server-vpc.${region_id}.aliyuncs.com/sgx/certification/v4/
      sudo bash -c 'cat > /etc/sgx_default_qcnl.conf' << EOF
      # PCCS server address
      PCCS_URL=${PCCS_URL}
      # To accept insecure HTTPS cert, set this option to FALSE
      USE_SECURE_CERT=TRUE
      EOF
    • Método 2: Modificar manualmente o arquivo /etc/sgx_default_qcnl.conf.

      • Se a instância vSGX tiver um endereço IP público atribuído, altere as configurações no arquivo /etc/sgx_default_qcnl.conf para o conteúdo a seguir. Substitua [Region-ID] pelo ID da região da instância vSGX.

        # PCCS server address
        PCCS_URL=https://sgx-dcap-server.[Region-ID].aliyuncs.com/sgx/certification/v4/
        # To accept insecure HTTPS cert, set this option to FALSE
        USE_SECURE_CERT=TRUE
      • Se a instância vSGX estiver em uma virtual private cloud (VPC) e possuir apenas endereços IP internos, altere as configurações no arquivo /etc/sgx_default_qcnl.conf para o conteúdo a seguir. Substitua [Region-ID] pelo ID da região da instância vSGX.

        # PCCS server address
        PCCS_URL=https://sgx-dcap-server-vpc.[Region-ID].aliyuncs.com/sgx/certification/v4/
        # To accept insecure HTTPS cert, set this option to FALSE
        USE_SECURE_CERT=TRUE

Exemplos de verificação do recurso SGX

Esta seção descreve como iniciar um enclave para verificar se o SGX SDK instalado funciona conforme o esperado. Se o enclave for iniciado, o SDK está funcionando corretamente. Nos exemplos a seguir, utiliza-se o arquivo de código de exemplo chamado SampleEnclave.

Exemplo 1: Iniciar um enclave

Imagem Alibaba Cloud Linux 2/3 (UEFI)

O Alibaba Cloud TEE SDK fornece código de exemplo SGX para verificar o recurso SGX. Por padrão, o código está armazenado no diretório /opt/alibaba/teesdk/intel/sgxsdk/SampleCode.

  1. Instale um compilador.

  2. ID=$(grep -w '^ID' /etc/os-release | awk -F= '{print $2}' | tr -d '"')
    VERSION_ID=$(grep -w '^VERSION_ID' /etc/os-release | awk -F= '{print $2}' | tr -d '"')
    
    if [ "$ID" = "alinux" ]; then
        case "$VERSION_ID" in
            "2.1903" )
                sudo yum install -y devtoolset-9
                ;;
            "3" )
                sudo yum groupinstall -y "Development Tools"
                ;;
        esac
    fi
  3. Configure as variáveis de ambiente relacionadas ao SGX SDK.

    if [ "$ID" = "alinux" -a "$VERSION_ID" = "2.1903" ]; then
        source /opt/rh/devtoolset-9/enable
    fi
    source /opt/alibaba/teesdk/intel/sgxsdk/environment
  4. Compile o código de exemplo no arquivo SampleEnclave.

    1. Acesse o diretório SampleEnclave:

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/SampleEnclave
    2. Compile o código de exemplo em SampleEnclave:

      sudo -E make
  5. Execute o arquivo executável compilado.

    sudo ./app

    Se a seguinte saída de comando for retornada, o SGX está funcionando conforme o esperado.

    [ecs-user@ixxxxxxxxxxxx ~ SampleEnclave]$ sudo ./app
    Checksum(0x0x7ffd25e190a0, 100) = 0xffffd4143
    Info: executing thread synchronization, please wait...
    Info: SampleEnclave successfully returned.

Imagem Ubuntu 22.04 (UEFI)

  1. Atualize a lista de pacotes.

    sudo apt update
  2. Instale o compilador build-essential.

    sudo apt install -y build-essential
  3. Compile o código de exemplo no arquivo SampleEnclave.

    1. Acesse o diretório SampleEnclave:

      cd /opt/intel/sgxsdk/SampleCode/SampleEnclave/
    2. Compile o código de exemplo em SampleEnclave:

      sudo make SGX_DEBUG=1
  4. Execute o arquivo executável compilado.

    sudo ./app

    Se a seguinte saída de comando for retornada, o SGX está funcionando conforme o esperado.

    ecs-user@iZ2z..........:/opt/intel/sgxsdk/SampleCode/SampleEnclave$ sudo ./app
    Checksum(0x0x7ffdfe154760, 100) = 0xfffd4143
    Info: executing thread synchronization, please wait...
    Info: SampleEnclave successfully returned.
    Enter a character before exit ...

Exemplo 2: Usar o service de atestação remota SGX

O Alibaba Cloud TEE SDK fornece código de exemplo SGX para verificar o recurso SGX. Por padrão, o código está armazenado no diretório /opt/alibaba/teesdk/intel/sgxsdk/SampleCode. Esta seção descreve como usar o service de atestação remota SGX. Neste exemplo, utiliza-se uma imagem Alibaba Cloud Linux 2 (UEFI) ou Alibaba Cloud Linux 3 (UEFI).

O resultado esperado é a geração de uma citação (quote) usando o arquivo QuoteGenerationSample e sua verificação usando o arquivo QuoteVerificationSample. O exemplo envolve a parte desafiada (programas SGX executados na instância vSGX) e a parte desafiadora (a parte que deseja verificar se os programas SGX são confiáveis). Neste exemplo, o arquivo de código de exemplo chamado QuoteGenerationSample é usado pela parte desafiada para gerar uma citação, e o arquivo de código de exemplo chamado QuoteVerificationSample é usado pela parte desafiadora para verificar a citação.

  1. Instale um compilador.

    • Se for utilizada uma imagem Alibaba Cloud Linux 2 (UEFI), instale o devtoolset.

      1. Instale o devtoolset.

        sudo yum install -y devtoolset-9
      2. Configure as variáveis de ambiente relacionadas ao devtoolset.

        source /opt/rh/devtoolset-9/enable
    • Se for utilizada uma imagem Alibaba Cloud Linux 3 (UEFI), instale o Development Tools.

      sudo yum groupinstall -y "Development Tools"
  2. Configure as variáveis de ambiente relacionadas ao SGX SDK.

    source /opt/alibaba/teesdk/intel/sgxsdk/environment
  3. Instale o pacote de dependências da atestação remota SGX.

    sudo yum install -y libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel
  4. Compile o código de exemplo no arquivo QuoteGenerationSample usado pela parte desafiada.

    1. Acesse o diretório QuoteGenerationSample.

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteGenerationSample
    2. Compile o código de exemplo no arquivo QuoteGenerationSample.

      sudo -E make
  5. Execute o arquivo executável compilado para gerar uma citação.

    sudo ./app

    Se a seguinte saída de comando for retornada, a verificação da citação foi bem-sucedida.

    [ecs-user@iZ2ze4xxx QuoteGenerationSample]$ sudo ./app
    [APP] Info: sgx_qe_set_enclave_load_policy is valid in in-proc mode only and it is optional: the default enclave load policy is persistent
    [APP] Info: set the enclave load policy as persistent
    [APP] Step1: Call sgx_qe_get_target_info:
    [APP] succeed!
    [APP] Step2: Call create_app_report
    [APP] Step3: Call sgx_qe_get_quote_size
    [APP] Step4: Call sgx_qe_get_quote
    [APP] cert_key_type = 0x5
    [APP] Info: sgx_qe_cleanup_by_policy is valid in in-proc mode only.
    [APP] Info: Clean up the enclave load policy
  6. Compile o código de exemplo no arquivo QuoteVerificationSample usado pela parte desafiadora.

    1. Acesse o diretório QuoteVerificationSample.

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteVerificationSample
    2. Compile o código de exemplo no arquivo QuoteVerificationSample.

      sudo -E make
    3. Assine o enclave QuoteVerificationSample.

      Para lançar uma versão oficial de um enclave, é necessário fornecer a chave de assinatura para assinar o enclave.

      sudo sgx_sign sign -key Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml
      Nota

      Se a mensagem de erro Failed to open file "Enclave/Enclave_private_sample.pem" aparecer, execute o comando a seguir para reassinar a assinatura:

      sudo sgx_sign sign -key ../QuoteGenerationSample/Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml
    4. Execute o arquivo executável compilado para verificar a citação.

      sudo ./app

      Se a seguinte saída de comando for retornada, a verificação da citação foi bem-sucedida.

      [ecs-user@iZ2zxxx QuoteVerificationSample]$ sudo ./app
      [APP] Info: ECDSA quote path: ../QuoteGenerationSample/quote.dat
      
        Trusted quote verification:
      [APP] Info: get target info successfully returned.
      [APP] Info: sgx_qv_set_enclave_load_policy successfully returned.
      [APP] Info: tee_get_quote_supplemental_data_version_and_size successfully returned.
      [APP] Info: latest supplemental data major version: 3, minor version: 3
    5. Atualizar o SGX SDK, PSW e software DCAP

      A pilha de software Intel® SGX inclui SGX SDK, SGX PSW e SGX Data Center Attestation Primitives (DCAP). Para garantir segurança ideal, recomendamos atualizar as versões do software regularmente. Neste exemplo, utiliza-se uma imagem Alibaba Cloud Linux 3 UEFI para atualizar os pacotes de software SGX SDK, SGX PSW e SGX DCAP.

      1. Atualize o software SGX SDK, SGX PSW e SGX DCAP.

        sudo rpm -qa --qf "%{NAME}\n"|grep -E "sgxsdk|libsgx-|libtdx-|^sgx-|^tdx-"|sudo xargs bash -c '</dev/tty yum update "$@"' _
      2. Visualize as versões do software SGX SDK, SGX PSW e SGX DCAP.

        1. Visualize as versões do software SGX SDK e SGX PSW.

          sudo rpm -qa|grep -E "sgxsdk|sgx-aesm-service|libsgx-(ae-epid|ae-le|ae-pce|aesm|enclave|epid|headers|launch|quote-ex|uae-service|urts)"

          A seguinte saída de comando é retornada.

          [ecs-user@iZ2zexxxxxxxxxxxxx /]$ sudo rpm -qa|grep -E "sgxsdk|sgx-aesm-service|libsgx-(ae-epid|ae-le|ae-pce|aesm|enclave|epid|headers|launch|quote-ex|uae-service|urts)"
          sgx-aesm-service-2.23.100.2-1.al8.x86_64
          libsgx-epid-2.23.100.2-1.al8.x86_64
          libsgx-ae-pce-2.23.100.2-1.al8.x86_64
          libsgx-ae-le-2.23.100.2-1.al8.x86_64
          libsgx-aesm-launch-plugin-2.23.100.2-1.al8.x86_64
          libsgx-launch-2.23.100.2-1.al8.x86_64
          libsgx-enclave-common-2.23.100.2-1.al8.x86_64
          libsgx-urts-2.23.100.2-1.al8.x86_64
          libsgx-aesm-pce-plugin-2.23.100.2-1.al8.x86_64
          libsgx-aesm-ecdsa-plugin-2.23.100.2-1.al8.x86_64
          libsgx-aesm-quote-ex-plugin-2.23.100.2-1.al8.x86_64
          libsgx-quote-ex-2.23.100.2-1.al8.x86_64
          libsgx-uae-service-2.23.100.2-1.al8.x86_64
          sgxsdk-2.23.100.2-1.al8.x86_64
          libsgx-headers-2.23.100.2-1.al8.x86_64
        2. Visualize a versão do software SGX DCAP.

          sudo rpm -qa|grep -E "sgx-(dcap-pccs|pck|ra-service)|libsgx-(ae-id-enclave|ae-qe3|ae-qve|ae-tdqe|dcap|pce-logic|qe3-logic|ra-|tdx-)|libtdx-|^tdx-"

          A seguinte saída de comando é retornada.

          [ecs-user@iZ2zexxxxxxxxxxxxx /]$ sudo rpm -qa|grep -E "sgx-(dcap-pccs|pck|ra-service)|libsgx-(ae-id-enclave|ae-qe3|ae-qve|ae-tdqe|dcap|pce-logic|qe3-logic|ra-|tdx-)|libtdx-|^tdx-"
          libsgx-ra-uefi-1.20.100.2-1.al8.x86_64
          libsgx-ra-network-1.20.100.2-1.al8.x86_64
          libsgx-ae-qve-1.20.100.2-1.al8.x86_64
          libsgx-ae-qe3-1.20.100.2-1.al8.x86_64
          libsgx-pce-logic-1.20.100.2-1.al8.x86_64
          libsgx-dcap-quote-verify-1.20.100.2-1.al8.x86_64
          libsgx-ae-id-enclave-1.20.100.2-1.al8.x86_64
          libsgx-qe3-logic-1.20.100.2-1.al8.x86_64
          libsgx-dcap-ql-1.20.100.2-1.al8.x86_64
          sgx-ra-service-1.20.100.2-1.al8.x86_64
          libsgx-dcap-default-qpl-1.20.100.2-2.al8.x86_64
          libsgx-dcap-ql-devel-1.20.100.2-1.al8.x86_64
          libsgx-dcap-quote-verify-devel-1.20.100.2-1.al8.x86_64
          libsgx-dcap-default-qpl-devel-1.20.100.2-2.al8.x86_64

      Problemas conhecidos

      Podem ocorrer vazamentos de memória no driver SGX que acompanha o Alibaba Cloud Linux 2 com versão de kernel 4.19.91-23.al7.x86_64. Esse problema foi corrigido na versão mais recente. Recomendamos atualizar o kernel para a versão mais recente. Se desejar continuar usando esta versão anterior do kernel, recomendamos executar os comandos a seguir para instalar patches e evitar esse problema:

      sudo yum install -y alinux-release-experimentals && \
      sudo yum install -y kernel-hotfix-5577959-23.al7.x86_64