すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:SGX 機密コンピューティング環境の構築

最終更新日:Sep 03, 2026

このトピックでは、Intel® SGX 対応の Elastic Compute Service (ECS) インスタンス (vSGX インスタンス) 上に Software Guard Extensions (SGX) 機密コンピューティング環境を構築する方法と、インスタンス上で SGX 機能を検証する方法について説明します。

前提条件

vSGX インスタンスが作成済みであり、インスタンスにログインしていること。

説明

g7t、c7t、r7t、g9it インスタンスファミリーのみが SGX 機能をサポートしています。詳細については、「インスタンスファミリー概要」をご参照ください。

背景情報

Intel® SGX は、物理レベルで機密コンピューティング環境をセットアップし、ファームウェアまたはソフトウェアベースの保護の代わりにハードウェアベースの保護を提供することで、データのセキュリティを確保します。Intel® SGX は、命令セット拡張とアクセス制御メカニズムを使用して、SGX プログラムのランタイム環境を分離します。これにより、マルウェア攻撃から主要なコードとデータの機密性と完全性を保護します。他のセキュリティ技術と比較して、Intel® SGX はハードウェアのみから成る信頼のルートを使用します。これにより、信頼の基盤となるソフトウェアのセキュリティ脆弱性に起因する欠陥を防ぎ、システムのセキュリティを向上させます。

g7t、c7t、r7t、g9it セキュリティ強化型インスタンスファミリーは、Intel® SGX に基づく機密メモリを提供し、仮想マシン向けの SGX 技術をサポートしています。vSGX インスタンス上で SGX プログラムを開発および実行できます。

重要

ハードウェアにバインドされているキー (SGXシーリングキーなど) を使用して、Intel SGXエンクレーブ内のインスタンスのデータを暗号化する場合、インスタンスのホストが変更された後、暗号化されたデータを復号化することはできません。 アプリケーションの信頼性を確保するために、アプリケーション層でデータの冗長化とバックアップを実行することを推奨します。

操作手順

手順1:SGX が有効になっているかの確認

SGX 機密コンピューティング環境を構築する前に、CPUID を使用して SGX が有効になっているかどうかを確認できます。このセクションでは、SGX が有効になっているかどうかを確認する方法について説明します。次の例では、Alibaba Cloud Linux 2 (UEFI) イメージまたは Alibaba Cloud Linux 3 (UEFI) イメージ、および Ubuntu 22.04 (UEFI) イメージを使用します。

Alibaba Cloud Linux 2/3 (UEFI) イメージ

  1. CPUID をインストールします。

    sudo yum install -y cpuid
  2. SGX が有効になっているかを確認します。

    cpuid -1 -l 0x7 |grep SGX

    次のようなコマンド出力は、SGX が有効であることを示します。

    # 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
    説明

    SGX を有効にした後、SGX プログラムを実行するには SGX ドライバーが必要です。Alibaba Cloud が提供する専用イメージには、SGX ドライバーが組み込まれています。専用イメージを使用したくない場合は、SGX ドライバーをインストールしてください。

  3. SGX ドライバーがインストールされているかを確認します。

    ls -l /dev/{sgx_enclave,sgx_provision}

    次のようなコマンド出力は、SGX ドライバーがインストールされていることを示します。

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

Ubuntu 22.04 (UEFI) イメージ

  1. CPUID をインストールします。

    sudo apt-get update && sudo apt-get install -y --no-install-recommends cpuid
  2. SGX が有効になっているかを確認します。

    cpuid -1 -l 0x7 |grep SGX

    次のようなコマンド出力は、SGX が有効であることを示します。

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

    SGX を有効にした後、SGX プログラムを実行するには SGX ドライバーが必要です。Alibaba Cloud が提供する専用イメージには、SGX ドライバーが組み込まれています。専用イメージを使用したくない場合は、SGX ドライバーをインストールしてください。

  3. SGX ドライバーをインストールします。

    1. 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. スクリプトを実行して SGX ドライバーをインストールします。

      sudo bash ./install_sgx_dcap.sh
  4. SGX ドライバーがインストールされているかを確認します。

    ls -l /dev/{sgx_enclave,sgx_provision}

    次のようなコマンド出力は、SGX ドライバーがインストールされていることを示します。

    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

手順2:SGX 機密コンピューティング環境の構築

SGX プログラムを開発する前に、vSGX インスタンスに SGX ランタイムと SDK をインストールし、リモートアテステーションサービスを設定する必要があります。より良いユーザーエクスペリエンスを確保するために、Alibaba Cloud が提供する専用イメージを使用することを推奨します。専用イメージには SGX ドライバーが搭載されており、Intel® SGX SDK と完全な互換性がある高信頼実行環境 (TEE) SDK を提供します。このセクションでは、SGX 機密コンピューティング環境を構築する方法について説明します。次の例では、Alibaba Cloud Linux 2 (UEFI) イメージまたは Alibaba Cloud Linux 3 (UEFI) イメージ、および Ubuntu 22.04 (UEFI) イメージを使用します。CentOS イメージなどの Linux イメージを使用する場合は、SGX ドライバーとプラットフォームソフトウェア (PSW) をインストールしてください。詳細については、「Intel® SGX SW Installation Guide for Linux」をご参照ください。

  1. SGX 機密コンピューティング環境の構築に必要なモジュールをインストールします。

    Alibaba Cloud Linux 2/3 (UEFI) イメージ

    1. (必須) Alibaba Cloud SGX ランタイムのインストール

      説明

      ECS コンソールで vSGX インスタンスを作成すると、Alibaba Cloud SGX ランタイムが自動的にインストールされます。この手順をスキップして、Alibaba Cloud TEE SDK をインストールできます。

      1. Alibaba Cloud 機密コンピューティング用の Yellowdog Updater Modified (YUM) ソフトウェアリポジトリをインポートします。

        説明

        次の URL の [Region-ID] を vSGX インスタンスのリージョン ID に置き換えてください。

        • リポジトリのパブリック URL は次の形式です:https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo

        • リポジトリの内部 URL は次の形式です:https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo

        スクリプトを作成して実行し、Alibaba Cloud 機密コンピューティング用の YUM ソフトウェアリポジトリをインポートすることもできます。

        1. 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 '"')
          
          # インスタンスのリージョンを取得します。
          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)
          
          # Alibaba Cloud Linux 2 (UEFI) イメージが使用されている場合、インスタンスの Alibaba Cloud 実験的リポジトリを有効にします。
          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. Alibaba Cloud 機密コンピューティング用の YUM リポジトリをインポートします。

          sudo bash ./install_sgx_repo.sh
      2. Alibaba Cloud SGX ランタイムをインストールします。

        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
        説明

        SGX Architectural Enclave Service Manager (AESM) は、エンクレーブの開始、キーの設定、リモートアテステーションなどのサービスを管理します。SGX AESM のデフォルトのインストールパスは /opt/intel/sgx-aesm-service です。

    2. Alibaba Cloud TEE SDK をインストールします。

      sudo yum install -y sgxsdk

    Alibaba Cloud TEE SDK は Intel® SGX SDK と完全な互換性があります。Alibaba Cloud TEE SDK をインストールした後、Intel® SGX Developer Reference を参照して SGX プログラムを開発できます。詳細については、「Intel®SGX Developer Reference」をご参照ください。

    説明

    Alibaba Cloud TEE SDK における Intel® SGX SDK のデフォルトのインストールパスは /opt/alibaba/teesdk/intel/sgxsdk/ です。

    Ubuntu 22.04 (UEFI) イメージ

    1. 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/{}
      
      # sgx_sdk のインストール
      bash sgx_linux_x64_sdk*.bin --prefix /opt/intel
      source /opt/intel/sgxsdk/environment
      
      # 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. スクリプトを実行して Intel® SGX SDK と PSW をインストールします。

      sudo bash ./install_sgx_sdk.sh
  2. Alibaba Cloud SGX リモートアテステーションサービスの設定

    Alibaba Cloud SGX リモートアテステーションサービスは、Intel® SGX Elliptic Curve Digital Signature Algorithm (ECDSA) ベースのリモートアテステーションサービスおよび Intel® SGX SDK と完全な互換性があります。Alibaba Cloud が提供する vSGX インスタンスは、リモートアテステーションを使用することで、リモートのプロバイダーやプロデューサーからの信頼を得ることができます。詳細については、「Attestation & Provisioning Services」をご参照ください。

    Alibaba Cloud SGX リモートアテステーションサービスは、SGX SDK に関する以下の情報を提供します。

    • SGX 証明書:SGX 証明書。

    • 失効リスト:失効した SGX 証明書のリスト。

    • 高信頼コンピューティングベース情報:信頼のルートに関する情報。

    説明

    Intel Ice Lakeは、Intel Software Guard Extensions Data Center attestation Primitives (Intel SGX DCAP) に基づくリモート証明のみをサポートし、Intel Enhanced Privacy ID (EPID) に基づくリモート証明はサポートしていません。 リモート認証機能を使用する前に、アプリケーションを適応させる必要があります。 リモート認証の詳細については、「認証によるエンクレーブ信頼の強化」をご参照ください。

    Alibaba Cloud SGX リモートアテステーションサービスはリージョンごとにデプロイされます。最適な安定性を確保するために、vSGX インスタンスと同じリージョンにデプロイされているサービスにアクセスすることを推奨します。Alibaba Cloud TEE SDK をインストールすると、リモートアテステーションサービス用のデフォルト設定ファイル /etc/sgx_default_qcnl.conf が自動的に生成されます。vSGX インスタンスがデプロイされているリージョンの Alibaba Cloud SGX リモートアテステーションサービスに合わせてファイルを設定するには、次のいずれかの方法を使用する必要があります。

    説明

    Alibaba Cloud SGX リモートアテステーションサービスがサポートされているリージョンを次の表に示します。

    サポート対象リージョン

    リージョン ID

    中国 (青島)

    cn-qingdao

    中国 (北京)

    cn-beijing

    中国 (張家口)

    cn-zhangjiakou

    中国 (ウランチャブ)

    cn-wulanchabu

    中国 (杭州)

    cn-hangzhou

    中国 (上海)

    cn-shanghai

    中国 (深圳)

    cn-shenzhen

    中国 (河源)

    cn-heyuan

    中国 (広州)

    cn-guangzhou

    中国 (成都)

    cn-chengdu

    中国 (香港)

    cn-hongkong

    シンガポール

    ap-southeast-1

    インドネシア (ジャカルタ)

    ap-southeast-5

    • (推奨) 方法1:/etc/sgx_default_qcnl.conf ファイルの自動設定

      次のコマンドを実行して、/etc/sgx_default_qcnl.conf ファイルを自動的に設定します。詳細については、「インスタンスメタデータへのアクセス」をご参照ください。

      # インスタンスのリージョンを取得します。
      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)
      
      # インスタンスがデプロイされているリージョンの Alibaba Cloud Provisioning Certificate Caching Service (PCCS) の URL を指定します。
      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 サーバーのアドレス
      PCCS_URL=${PCCS_URL}
      # 安全でない HTTPS 証明書を許容するには、このオプションを FALSE に設定します
      USE_SECURE_CERT=TRUE
      EOF
    • 方法2:/etc/sgx_default_qcnl.conf ファイルを手動で変更する

      • vSGX インスタンスにパブリック IP アドレスが割り当てられている場合は、/etc/sgx_default_qcnl.conf ファイルの設定を次の内容に変更します。[Region-ID] を vSGX インスタンスのリージョン ID に置き換えます。

        # PCCS サーバーのアドレス
        PCCS_URL=https://sgx-dcap-server.[Region-ID].aliyuncs.com/sgx/certification/v4/
        # 安全でない HTTPS 証明書を許容するには、このオプションを FALSE に設定します
        USE_SECURE_CERT=TRUE
      • vSGX インスタンスが Virtual Private Cloud (VPC) 内にあり、内部 IP アドレスのみを持つ場合は、/etc/sgx_default_qcnl.conf ファイルの設定を次の内容に変更します。[Region-ID] を vSGX インスタンスのリージョン ID に置き換えます。

        # PCCS サーバーのアドレス
        PCCS_URL=https://sgx-dcap-server-vpc.[Region-ID].aliyuncs.com/sgx/certification/v4/
        # 安全でない HTTPS 証明書を許容するには、このオプションを FALSE に設定します
        USE_SECURE_CERT=TRUE

SGX 機能の検証方法の例

このセクションでは、エンクレーブを開始して、インストールされている SGX SDK が期待どおりに動作するかどうかを確認する方法について説明します。エンクレーブを開始できれば、SDK は期待どおりに動作していることになります。次の例では、SampleEnclave というサンプルコードファイルを使用します。

例1:エンクレーブの開始

Alibaba Cloud Linux 2/3 (UEFI) イメージ

Alibaba Cloud TEE SDK は、SGX 機能を検証するための SGX サンプルコードを提供します。デフォルトでは、コードは /opt/alibaba/teesdk/intel/sgxsdk/SampleCode ディレクトリに保存されています。

  1. コンパイラをインストールします。

  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. 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. SampleEnclave ファイルのサンプルコードをコンパイルします。

    1. SampleEnclave ディレクトリに移動します。

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/SampleEnclave
    2. SampleEnclave のサンプルコードをコンパイルします。

      sudo -E make
  5. コンパイルされた実行可能ファイルを実行します。

    sudo ./app

    次のようなコマンド出力は、SGX が正常に実行されていることを示します。

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

Ubuntu 22.04 (UEFI) イメージ

  1. パッケージリストを更新します。

    sudo apt update
  2. build-essential コンパイラをインストールします。

    sudo apt install -y build-essential
  3. SampleEnclave ファイルのサンプルコードをコンパイルします。

    1. SampleEnclave ディレクトリに移動します。

      cd /opt/intel/sgxsdk/SampleCode/SampleEnclave/
    2. SampleEnclave のサンプルコードをコンパイルします。

      sudo make SGX_DEBUG=1
  4. コンパイルされた実行可能ファイルを実行します。

    sudo ./app

    次のようなコマンド出力は、SGX が正常に実行されていることを示します。

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

例2:SGX リモートアテステーションサービスの使用

Alibaba Cloud TEE SDK は、SGX 機能を検証するための SGX サンプルコードを提供します。デフォルトでは、コードは /opt/alibaba/teesdk/intel/sgxsdk/SampleCode ディレクトリに保存されています。このセクションでは、SGX リモートアテステーションサービスの使用方法について説明します。この例では、Alibaba Cloud Linux 2 (UEFI) イメージまたは Alibaba Cloud Linux 3 (UEFI) イメージを使用します。

期待される結果として、QuoteGenerationSample ファイルを使用して Quote が生成され、QuoteVerificationSample ファイルで検証が行われます。この例には、被検証者 (vSGX インスタンスで実行される SGX プログラム) と検証者 (SGX プログラムが信頼できるかどうかを検証したい当事者) が登場します。この例では、被検証者は QuoteGenerationSample というサンプルコードファイルを使用して Quote を生成し、検証者は QuoteVerificationSample というサンプルコードファイルを使用して Quote を検証します。

  1. コンパイラをインストールします。

    • Alibaba Cloud Linux 2 (UEFI) イメージを使用している場合は、devtoolset をインストールします。

      1. devtoolset をインストールします。

        sudo yum install -y devtoolset-9
      2. devtoolset に関連する環境変数を設定します。

        source /opt/rh/devtoolset-9/enable
    • Alibaba Cloud Linux 3 (UEFI) イメージを使用している場合は、Development Tools をインストールします。

      sudo yum groupinstall -y "Development Tools"
  2. SGX SDK に関連する環境変数を設定します。

    source /opt/alibaba/teesdk/intel/sgxsdk/environment
  3. SGX リモートアテステーションの依存パッケージをインストールします。

    sudo yum install -y libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel
  4. 被検証者が使用する QuoteGenerationSample ファイルのサンプルコードをコンパイルします。

    1. QuoteGenerationSample ディレクトリに移動します。

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteGenerationSample
    2. QuoteGenerationSample ファイルのサンプルコードをコンパイルします。

      sudo -E make
  5. コンパイルされた実行可能ファイルを実行して Quote を生成します。

    sudo ./app

    次のコマンド出力が返された場合、Quote の生成が成功したことを示します。

    [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. 検証者が使用する QuoteVerificationSample ファイルのサンプルコードをコンパイルします。

    1. QuoteVerificationSample ディレクトリに移動します。

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteVerificationSample
    2. QuoteVerificationSample ファイルのサンプルコードをコンパイルします。

      sudo -E make
  7. QuoteVerificationSample エンクレーブへの署名

    エンクレーブの公式バージョンをリリースするには、署名キーを使用してエンクレーブに署名する必要があります。

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

    Failed to open file "Enclave/Enclave_private_sample.pem" エラーメッセージが表示された場合は、次のコマンドを実行して再度署名してください。

    sudo sgx_sign sign -key ../QuoteGenerationSample/Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml
  8. コンパイルされた実行可能ファイルを実行して Quote を検証します。

    sudo ./app

    次のようなコマンド出力は、Quote の検証が成功したことを示します。

    [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

SGX SDK、PSW、および DCAP ソフトウェアの更新

Intel® SGX ソフトウェアスタックには、SGX SDK、SGX PSW、および SGX Data Center Attestation Primitives (DCAP) が含まれています。最適なセキュリティを確保するために、定期的にソフトウェアバージョンを更新することを推奨します。この例では、Alibaba Cloud Linux 3 UEFI イメージを使用して、SGX SDK、SGX PSW、および SGX DCAP ソフトウェアパッケージを更新します。

  1. SGX SDK、SGX PSW、および SGX DCAP ソフトウェアを更新します。

    sudo rpm -qa --qf "%{NAME}\n"|grep -E "sgxsdk|libsgx-|libtdx-|^sgx-|^tdx-"|sudo xargs bash -c '</dev/tty yum update "$@"' _
  2. SGX SDK、SGX PSW、および SGX DCAP ソフトウェアのバージョンを表示します。

    1. SGX SDK および 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)"

      次のコマンド出力が返されます。

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

      次のコマンド出力が返されます。

      [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

既知の問題

カーネルバージョンが 4.19.91-23.al7.x86_64 の Alibaba Cloud Linux 2 に付属の SGX ドライバーでは、メモリリークが発生する可能性があります。この問題は最新バージョンで修正されています。カーネルを最新バージョンに更新することを推奨します。この以前のカーネルバージョンを引き続き使用する場合は、この問題を回避するため、次のコマンドを実行してパッチをインストールすることを推奨します。

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