Tous les produits
Search
Centre de documentation

Elastic Compute Service:Build an SGX confidential computing environment

Dernière mise à jour :Sep 02, 2026

Cette rubrique explique comment mettre en place un environnement de calcul confidentiel basé sur Software Guard Extensions (SGX) sur une instance Elastic Compute Service (ECS) compatible avec Intel® SGX, également appelée instance vSGX. Elle détaille également la procédure de vérification de la fonctionnalité SGX sur l'instance.

Prérequis

Une instance vSGX doit être créée et vous devez y être connecté.

Remarque

Seules les familles d'instances g7t, c7t, r7t et g9it prennent en charge la fonctionnalité SGX. Pour plus d'informations, consultez la section Présentation des familles d'instances.

Contexte

Intel® SGX établit un environnement de calcul confidentiel au niveau physique afin de garantir la sécurité des données grâce à des protections matérielles plutôt qu'à des protections basées sur le micrologiciel ou le logiciel. Intel® SGX utilise des extensions de jeu d'instructions et un mécanisme de contrôle d'accès pour isoler l'environnement d'exécution des programmes SGX. Cela protège la confidentialité et l'intégrité du code clé et des données contre les attaques de logiciels malveillants. Contrairement à d'autres technologies de sécurité, Intel® SGX s'appuie sur une racine de confiance purement matérielle. Cette approche évite les défauts liés aux vulnérabilités logicielles dont dépendrait autrement la racine de confiance, renforçant ainsi la sécurité du système.

Les familles d'instances renforcées en matière de sécurité g7t, c7t, r7t et g9it fournissent une mémoire confidentielle basée sur Intel® SGX et prennent en charge la technologie SGX pour les machines virtuelles. Vous pouvez développer et exécuter des programmes SGX sur des instances vSGX.

Important

Si vous utilisez des clés (telles que les clés de scellement SGX) liées au matériel pour chiffrer les données d'une instance au sein d'un enclave Intel SGX, les données chiffrées ne pourront pas être déchiffrées après un changement d'hôte de l'instance. Nous vous recommandons de mettre en œuvre la redondance et la sauvegarde des données au niveau de la couche application afin de garantir la fiabilité de celle-ci.

Procédure

Étape 1 : Vérifier si SGX est activé

Avant de construire un environnement de calcul confidentiel SGX, vous pouvez utiliser CPUID pour vérifier si SGX est activé. Cette section décrit la méthode de vérification. Les exemples suivants utilisent une image Alibaba Cloud Linux 2 (UEFI), Alibaba Cloud Linux 3 (UEFI) ou Ubuntu 22.04 (UEFI).

Image Alibaba Cloud Linux 2/3 (UEFI)

  1. Installez CPUID.

    sudo yum install -y cpuid
  2. Vérifiez si SGX est activé.

    cpuid -1 -l 0x7 |grep SGX

    Un résultat de commande similaire à celui ci-dessous indique que SGX est activé.

    # 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
    Remarque

    Une fois SGX activé, le pilote SGX est requis pour exécuter des programmes SGX. Les images dédiées fournies par Alibaba Cloud intègrent ce pilote. Si vous choisissez de ne pas utiliser une image dédiée, installez le pilote SGX manuellement.

  3. Vérifiez si le pilote SGX est installé.

    ls -l /dev/{sgx_enclave,sgx_provision}

    Un résultat de commande similaire à celui ci-dessous indique que le pilote SGX est installé.

    [ @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

Image Ubuntu 22.04 (UEFI)

  1. Installez CPUID.

    sudo apt-get update && sudo apt-get install -y --no-install-recommends cpuid
  2. Vérifiez si SGX est activé.

    cpuid -1 -l 0x7 |grep SGX

    Un résultat de commande similaire à celui ci-dessous indique que SGX est activé.

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

    Une fois SGX activé, le pilote SGX est requis pour exécuter des programmes SGX. Les images dédiées fournies par Alibaba Cloud intègrent ce pilote. Si vous choisissez de ne pas utiliser une image dédiée, installez le pilote SGX manuellement.

  3. Installez le pilote SGX :

    1. Créez le 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. Exécutez le script pour installer le pilote SGX :

      sudo bash ./install_sgx_dcap.sh
  4. Vérifiez si le pilote SGX est installé.

    ls -l /dev/{sgx_enclave,sgx_provision}

    Un résultat de commande similaire à celui ci-dessous indique que le pilote SGX est installé.

    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

Étape 2 : Construire un environnement de calcul confidentiel SGX

Avant de développer des programmes SGX, vous devez installer le runtime SGX et le SDK sur une instance vSGX, puis configurer le service d'attestation distante. Pour une expérience utilisateur optimale, nous vous recommandons d'utiliser les images dédiées fournies par Alibaba Cloud. Ces images intègrent le pilote SGX et proposent un kit de développement Trusted Execution Environment (TEE) entièrement compatible avec le SDK Intel® SGX. Cette section explique comment mettre en place un environnement de calcul confidentiel SGX. Les exemples suivants utilisent une image Alibaba Cloud Linux 2 (UEFI), Alibaba Cloud Linux 3 (UEFI) ou Ubuntu 22.04 (UEFI). Si vous utilisez des images Linux telles que CentOS, installez le pilote SGX et Platform SoftWare (PSW). Pour plus d'informations, consultez le guide Intel® SGX SW Installation Guide for Linux.

  1. Installez les modules nécessaires à la construction de l'environnement de calcul confidentiel SGX.

    Image Alibaba Cloud Linux 2/3 (UEFI)

    1. (Requis) Installez le runtime SGX d'Alibaba Cloud.

      Remarque

      Lorsque vous créez une instance vSGX dans la console ECS, le runtime SGX d'Alibaba Cloud est automatiquement installé. Vous pouvez ignorer cette étape et installer directement le SDK TEE d'Alibaba Cloud.

      1. Importez le dépôt logiciel YUM (Yellowdog Updater Modified) pour le calcul confidentiel d'Alibaba Cloud.

        Remarque

        Remplacez [Region-ID] dans les URL suivantes par l'ID de région de votre instance vSGX :

        • L'URL publique du dépôt suit le format suivant : https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo.

        • L'URL interne du dépôt suit le format suivant : https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo.

        Vous pouvez également créer et exécuter un script pour importer le dépôt logiciel YUM dédié au calcul confidentiel d'Alibaba Cloud.

        1. Créez le 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. Importez le dépôt YUM pour le calcul confidentiel d'Alibaba Cloud :

          sudo bash ./install_sgx_repo.sh
      2. Installez le runtime SGX d'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
        Remarque

        SGX Architectural Enclave Service Manager (AESM) sert à gérer des services tels que le démarrage de l'enclave, la configuration des clés et l'attestation distante. Le chemin d'installation par défaut de SGX AESM est /opt/intel/sgx-aesm-service.

    2. Installez le SDK TEE d'Alibaba Cloud.

      sudo yum install -y sgxsdk

    Le SDK TEE d'Alibaba Cloud est entièrement compatible avec le SDK Intel® SGX. Une fois le SDK TEE d'Alibaba Cloud installé, vous pouvez consulter la documentation de référence pour développeurs Intel® SGX afin de développer vos programmes SGX. Pour plus d'informations, reportez-vous au document Intel®SGX Developer Reference.

    Remarque

    Le chemin d'installation par défaut du SDK Intel® SGX dans le SDK TEE d'Alibaba Cloud est /opt/alibaba/teesdk/intel/sgxsdk/.

    Image Ubuntu 22.04 (UEFI)

    1. Créez le 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. Exécutez le script pour installer le SDK Intel® SGX et PSW :

      sudo bash ./install_sgx_sdk.sh
  2. Configurez le service d'attestation distante SGX d'Alibaba Cloud.

    Le service d'attestation distante SGX d'Alibaba Cloud est entièrement compatible avec le service d'attestation distante basé sur l'algorithme de signature numérique à courbe elliptique (ECDSA) d'Intel® SGX et avec le SDK Intel® SGX. Les instances vSGX proposées par Alibaba Cloud peuvent obtenir la confiance des fournisseurs et producteurs distants grâce à l'attestation distante. Pour plus d'informations, consultez la page Attestation & Provisioning Services.

    Le service d'attestation distante SGX d'Alibaba Cloud fournit les informations suivantes relatives au SDK SGX :

    • Certificats SGX : les certificats SGX.

    • Liste de révocation : liste des certificats SGX révoqués.

    • Informations sur la base de calcul de confiance : informations concernant la racine de confiance.

    Remarque

    Intel Ice Lake prend uniquement en charge l'attestation distante basée sur Intel Software Guard Extensions Data Center Attestation Primitives (Intel SGX DCAP) et ne prend pas en charge celle basée sur Intel Enhanced Privacy ID (EPID). Vous devez adapter vos applications avant de pouvoir utiliser la fonctionnalité d'attestation distante. Pour plus d'informations sur l'attestation distante, consultez la documentation Strengthen Enclave Trust with Attestation.

    Le service d'attestation distante SGX d'Alibaba Cloud est déployé par région. Pour garantir une stabilité optimale, nous vous recommandons d'accéder au service déployé dans la même région que votre instance vSGX. Après l'installation du SDK Alibaba Cloud TEE, le fichier de configuration par défaut /etc/sgx_default_qcnl.conf est automatiquement généré pour le service d'attestation distante. Vous devez utiliser l'une des méthodes suivantes pour adapter ce fichier au service d'attestation distante SGX d'Alibaba Cloud de la région où l'instance vSGX est déployée.

    Remarque

    Le tableau suivant décrit les régions prenant en charge le service d'attestation distante SGX d'Alibaba Cloud.

    Région prise en charge

    ID de région

    Chine (Qingdao)

    cn-qingdao

    Chine (Pékin)

    cn-beijing

    Chine (Zhangjiakou)

    cn-zhangjiakou

    Chine (Ulanqab)

    cn-wulanchabu

    Chine (Hangzhou)

    cn-hangzhou

    Chine (Shanghai)

    cn-shanghai

    Chine (Shenzhen)

    cn-shenzhen

    Chine (Heyuan)

    cn-heyuan

    Chine (Guangzhou)

    cn-guangzhou

    Chine (Chengdu)

    cn-chengdu

    Chine (Hong Kong)

    cn-hongkong

    Singapour

    ap-southeast-1

    Indonésie (Jakarta)

    ap-southeast-5

    • (Méthode recommandée) Méthode 1 : Configurer automatiquement le fichier /etc/sgx_default_qcnl.conf.

      Exécutez les commandes suivantes pour configurer automatiquement le fichier /etc/sgx_default_qcnl.conf. Pour plus d'informations, consultez Accéder aux métadonnées de l'instance.

      # 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éthode 2 : Modifier manuellement le fichier /etc/sgx_default_qcnl.conf.

      • Si l'instance vSGX dispose d'une adresse IP publique, remplacez la configuration du fichier /etc/sgx_default_qcnl.conf par le contenu suivant. Remplacez [Region-ID] par l'ID de région de l'instance 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
      • Si l'instance vSGX se trouve dans un VPC et ne dispose que d'adresses IP internes, remplacez la configuration du fichier /etc/sgx_default_qcnl.conf par le contenu suivant. Remplacez [Region-ID] par l'ID de région de l'instance 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

Exemples de vérification de la fonctionnalité SGX

Cette rubrique explique comment démarrer un enclave pour vérifier que le SDK SGX installé fonctionne correctement. Si l'enclave démarre, le SDK fonctionne comme prévu. Les exemples suivants utilisent le fichier de code exemple nommé SampleEnclave.

Exemple 1 : Démarrer un enclave

Image Alibaba Cloud Linux 2/3 (UEFI)

Le SDK Alibaba Cloud TEE fournit du code exemple SGX pour vérifier la fonctionnalité SGX. Par défaut, le code est stocké dans le répertoire /opt/alibaba/teesdk/intel/sgxsdk/SampleCode.

  1. Installez un compilateur.

  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. Configurez les variables d'environnement liées au SDK SGX.

    if [ "$ID" = "alinux" -a "$VERSION_ID" = "2.1903" ]; then
        source /opt/rh/devtoolset-9/enable
    fi
    source /opt/alibaba/teesdk/intel/sgxsdk/environment
  4. Compilez le code exemple du fichier SampleEnclave.

    1. Accédez au répertoire SampleEnclave :

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/SampleEnclave
    2. Compilez le code exemple de SampleEnclave :

      sudo -E make
  5. Exécutez le fichier exécutable compilé.

    sudo ./app

    Si la sortie de commande suivante s'affiche, SGX fonctionne correctement.

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

Image Ubuntu 22.04 (UEFI)

  1. Mettez à jour la liste des packages.

    sudo apt update
  2. Installez le compilateur build-essential.

    sudo apt install -y build-essential
  3. Compilez le code exemple du fichier SampleEnclave.

    1. Accédez au répertoire SampleEnclave :

      cd /opt/intel/sgxsdk/SampleCode/SampleEnclave/
    2. Compilez le code exemple de SampleEnclave :

      sudo make SGX_DEBUG=1
  4. Exécutez le fichier exécutable compilé.

    sudo ./app

    Si la sortie de commande suivante s'affiche, SGX fonctionne correctement.

    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 ...

Exemple 2 : Utiliser le service d'attestation distante SGX

Le SDK Alibaba Cloud TEE fournit du code exemple SGX pour vérifier la fonctionnalité SGX. Par défaut, le code est stocké dans le répertoire /opt/alibaba/teesdk/intel/sgxsdk/SampleCode. Cette section explique comment utiliser le service d'attestation distante SGX. Cet exemple utilise une image Alibaba Cloud Linux 2 (UEFI) ou Alibaba Cloud Linux 3 (UEFI).

Le résultat attendu est la génération d'un quote à l'aide du fichier QuoteGenerationSample, suivi de sa vérification avec le fichier QuoteVerificationSample. L'exemple implique deux parties : la partie défiée (programmes SGX exécutés dans l'instance vSGX) et la partie défieuse (celle qui souhaite vérifier si les programmes SGX sont fiables). Dans cet exemple, le fichier de code exemple nommé QuoteGenerationSample est utilisé par la partie défiée pour générer un quote, et le fichier nommé QuoteVerificationSample est utilisé par la partie défieuse pour vérifier le quote.

  1. Installez un compilateur.

    • Si vous utilisez une image Alibaba Cloud Linux 2 (UEFI), installez devtoolset.

      1. Installez devtoolset.

        sudo yum install -y devtoolset-9
      2. Configurez les variables d'environnement liées à devtoolset.

        source /opt/rh/devtoolset-9/enable
    • Si vous utilisez une image Alibaba Cloud Linux 3 (UEFI), installez Development Tools.

      sudo yum groupinstall -y "Development Tools"
  2. Configurez les variables d'environnement liées au SDK SGX.

    source /opt/alibaba/teesdk/intel/sgxsdk/environment
  3. Installez le package de dépendances pour l'attestation distante SGX.

    sudo yum install -y libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel
  4. Compilez le code exemple du fichier QuoteGenerationSample utilisé par la partie défiée.

    1. Accédez au répertoire QuoteGenerationSample.

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteGenerationSample
    2. Compilez le code exemple du fichier QuoteGenerationSample.

      sudo -E make
  5. Exécutez le fichier exécutable compilé pour générer un quote.

    sudo ./app

    Si la sortie de commande suivante s'affiche, la vérification du quote a réussi.

    [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. Compilez le code exemple du fichier QuoteVerificationSample utilisé par la partie défieuse.

    1. Accédez au répertoire QuoteVerificationSample.

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteVerificationSample
    2. Compilez le code exemple du fichier QuoteVerificationSample.

      sudo -E make
  7. Signez l'enclave QuoteVerificationSample.

    Pour publier une version officielle d'une enclave, vous devez fournir la clé de signature pour signer l'enclave.

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

    Si le message d'erreur Failed to open file "Enclave/Enclave_private_sample.pem" s'affiche, exécutez la commande suivante pour re-signer :

    sudo sgx_sign sign -key ../QuoteGenerationSample/Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml
  8. Exécutez le fichier exécutable compilé pour vérifier le quote.

    sudo ./app

    Si la sortie de commande suivante s'affiche, la vérification du quote a réussi.

    [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

Mettre à jour le logiciel SGX SDK, PSW et DCAP

La pile logicielle Intel® SGX comprend SGX SDK, SGX PSW, et SGX Data Center Attestation Primitives (DCAP). Pour garantir une sécurité optimale, nous vous recommandons de mettre régulièrement à jour les versions des logiciels. Cet exemple utilise une image Alibaba Cloud Linux 3 UEFI pour mettre à jour les packages logiciels SGX SDK, SGX PSW et SGX DCAP.

  1. Mettez à jour les logiciels SGX SDK, SGX PSW et SGX DCAP.

    sudo rpm -qa --qf "%{NAME}\n"|grep -E "sgxsdk|libsgx-|libtdx-|^sgx-|^tdx-"|sudo xargs bash -c '</dev/tty yum update "$@"' _
  2. Consultez les versions des logiciels SGX SDK, SGX PSW et SGX DCAP.

    1. Consultez les versions des logiciels SGX SDK et 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)"

      La sortie de commande suivante s'affiche.

      [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. Consultez la version du logiciel 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-"

      La sortie de commande suivante s'affiche.

      [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

Problèmes connus

Des fuites de mémoire peuvent survenir sur le pilote SGX fourni avec Alibaba Cloud Linux 2 dont la version du noyau est 4.19.91-23.al7.x86_64. Ce problème est corrigé dans la dernière version. Nous vous recommandons de mettre à jour le noyau vers la dernière version. Si vous souhaitez continuer à utiliser cette version antérieure du noyau, nous vous recommandons d'exécuter les commandes suivantes pour installer les correctifs et éviter ce problème :

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