このトピックでは、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) イメージ
CPUID をインストールします。
sudo yum install -y cpuidSGX が有効になっているかを確認します。
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 ドライバーをインストールしてください。
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) イメージ
CPUID をインストールします。
sudo apt-get update && sudo apt-get install -y --no-install-recommends cpuidSGX が有効になっているかを確認します。
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 ドライバーをインストールしてください。
SGX ドライバーをインストールします。
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スクリプトを実行して SGX ドライバーをインストールします。
sudo bash ./install_sgx_dcap.sh
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」をご参照ください。
SGX 機密コンピューティング環境の構築に必要なモジュールをインストールします。
Alibaba Cloud Linux 2/3 (UEFI) イメージ
(必須) Alibaba Cloud SGX ランタイムのインストール
説明ECS コンソールで vSGX インスタンスを作成すると、Alibaba Cloud SGX ランタイムが自動的にインストールされます。この手順をスキップして、Alibaba Cloud TEE SDK をインストールできます。
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 ソフトウェアリポジトリをインポートすることもできます。
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 EOFAlibaba Cloud 機密コンピューティング用の YUM リポジトリをインポートします。
sudo bash ./install_sgx_repo.sh
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 です。
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) イメージ
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スクリプトを実行して Intel® SGX SDK と PSW をインストールします。
sudo bash ./install_sgx_sdk.sh
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=TRUEvSGX インスタンスが 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 ディレクトリに保存されています。
コンパイラをインストールします。
SGX SDK に関連する環境変数を設定します。
if [ "$ID" = "alinux" -a "$VERSION_ID" = "2.1903" ]; then source /opt/rh/devtoolset-9/enable fi source /opt/alibaba/teesdk/intel/sgxsdk/environmentSampleEnclave ファイルのサンプルコードをコンパイルします。
SampleEnclave ディレクトリに移動します。
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/SampleEnclaveSampleEnclave のサンプルコードをコンパイルします。
sudo -E make
コンパイルされた実行可能ファイルを実行します。
sudo ./app次のようなコマンド出力は、SGX が正常に実行されていることを示します。
[ecs-user@ixxxxxxxxxxxx ~ SampleEnclave]$ sudo ./app Checksum(0x0x7ffd25e190a0, 100) = 0xffffd4143 Info: executing thread synchronization, please wait... Info: SampleEnclave successfully returned.
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
fiUbuntu 22.04 (UEFI) イメージ
パッケージリストを更新します。
sudo apt updatebuild-essentialコンパイラをインストールします。sudo apt install -y build-essentialSampleEnclave ファイルのサンプルコードをコンパイルします。
SampleEnclave ディレクトリに移動します。
cd /opt/intel/sgxsdk/SampleCode/SampleEnclave/SampleEnclave のサンプルコードをコンパイルします。
sudo make SGX_DEBUG=1
コンパイルされた実行可能ファイルを実行します。
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 を検証します。
コンパイラをインストールします。
Alibaba Cloud Linux 2 (UEFI) イメージを使用している場合は、devtoolset をインストールします。
devtoolset をインストールします。
sudo yum install -y devtoolset-9devtoolset に関連する環境変数を設定します。
source /opt/rh/devtoolset-9/enable
Alibaba Cloud Linux 3 (UEFI) イメージを使用している場合は、Development Tools をインストールします。
sudo yum groupinstall -y "Development Tools"
SGX SDK に関連する環境変数を設定します。
source /opt/alibaba/teesdk/intel/sgxsdk/environmentSGX リモートアテステーションの依存パッケージをインストールします。
sudo yum install -y libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel被検証者が使用する QuoteGenerationSample ファイルのサンプルコードをコンパイルします。
QuoteGenerationSample ディレクトリに移動します。
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteGenerationSampleQuoteGenerationSample ファイルのサンプルコードをコンパイルします。
sudo -E make
コンパイルされた実行可能ファイルを実行して 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検証者が使用する QuoteVerificationSample ファイルのサンプルコードをコンパイルします。
QuoteVerificationSample ディレクトリに移動します。
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteVerificationSampleQuoteVerificationSample ファイルのサンプルコードをコンパイルします。
sudo -E make
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コンパイルされた実行可能ファイルを実行して 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 ソフトウェアパッケージを更新します。
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 "$@"' _SGX SDK、SGX PSW、および SGX DCAP ソフトウェアのバージョンを表示します。
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_64SGX 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