Bu konu, Intel® SGX destekli Elastic Compute Service (ECS) örneğinde (vSGX örneği olarak bilinir) Software Guard Extensions (SGX) gizli bilgi işlem ortamının nasıl oluşturulacağını ve örnekteki SGX özelliğinin nasıl doğrulanacağını açıklar.
Ön koşullar
Bir vSGX örneği oluşturulmuş ve örnekte oturum açılmış olmalıdır.
Yalnızca g7t, c7t, r7t ve g9it örnek aileleri SGX özelliğini destekler. Daha fazla bilgi için bkz. Örnek ailesine genel bakış.
Arka plan bilgileri
Intel® SGX, donanım tabanlı korumalar sağlayarak veri güvenliğini sağlamak amacıyla fiziksel düzeyde bir gizli bilgi işlem ortamı kurar; bu korumalar yazılım veya firmware tabanlı değildir. Intel® SGX, komut kümesi uzantıları ve erişim kontrolü mekanizması kullanarak SGX programlarının çalışma zamanı ortamını izole eder. Bu sayede anahtar kodlar ve veriler kötü amaçlı yazılım saldırılarına karşı korunarak bütünlük ve gizlilikleri sağlanır. Diğer güvenlik teknolojilerine kıyasla Intel® SGX, güven kökü olarak yalnızca donanımı kullanır. Bu yaklaşım, güven kökünün dayandığı yazılımlardaki güvenlik açıklarından kaynaklanan hataları önler ve sistem güvenliğini artırır.
g7t, c7t, r7t ve g9it güvenlik açısından güçlendirilmiş örnek aileleri, Intel® SGX tabanlı şifrelenmiş bellek sağlar ve sanal makineler için SGX teknolojisini destekler. vSGX örneklerinde SGX programları geliştirebilir ve çalıştırabilirsiniz.
Bir Intel SGX yuvası (enclave) içinde donanıma bağlı anahtarlar (SGX mühürleme anahtarları gibi) kullanarak bir örneğin verilerini şifrelerseniz, örneğin barındırıldığı sunucu değiştiğinde şifrelenmiş verilerin şifresi çözülemez. Uygulama güvenilirliğini sağlamak amacıyla uygulama katmanında veri çoğaltma ve yedekleme yapmanızı öneririz.
Yordam
1. Adım: SGX'in etkin olup olmadığını kontrol etme
Bir SGX gizli bilgi işlem ortamı oluşturmadan önce CPUID aracını kullanarak SGX'in etkin olup olmadığını kontrol edebilirsiniz. Bu bölümde SGX'in etkinliğinin nasıl kontrol edileceği açıklanmaktadır. Aşağıdaki örneklerde Alibaba Cloud Linux 2 (UEFI) görüntüsü, Alibaba Cloud Linux 3 (UEFI) görüntüsü ve Ubuntu 22.04 (UEFI) görüntüsü kullanılmaktadır.
Alibaba Cloud Linux 2/3 (UEFI) görüntüsü
-
CPUID'yi yükleyin.
sudo yum install -y cpuid -
SGX'in etkin olup olmadığını kontrol edin.
cpuid -1 -l 0x7 |grep SGXAşağıdakine benzer bir komut çıktısı, SGX'in etkin olduğunu gösterir.
# cpuid -1 -l 0x7 |grep SGX SGX: Software Guard Extensions supported = true SGX_LC: SGX launch config supported = true SGX-KEYS: SGX attestation services = falseNotSGX etkinleştirildikten sonra SGX programlarını çalıştırmak için SGX sürücüsü gerekir. Alibaba Cloud tarafından sağlanan özel görüntülerde yerleşik bir SGX sürücüsü bulunur. Özel bir görüntü kullanmak istemiyorsanız SGX sürücüsünü yükleyin.
-
SGX sürücüsünün yüklü olup olmadığını kontrol edin.
ls -l /dev/{sgx_enclave,sgx_provision}Aşağıdakine benzer bir komut çıktısı, SGX sürücüsünün yüklü olduğunu gösterir.
[ @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) görüntüsü
-
CPUID'yi yükleyin.
sudo apt-get update && sudo apt-get install -y --no-install-recommends cpuid -
SGX'in etkin olup olmadığını kontrol edin.
cpuid -1 -l 0x7 |grep SGXAşağıdakine benzer bir komut çıktısı, SGX'in etkin olduğunu gösterir.
$ cpuid -1 -l 0x7 |grep SGX SGX: Software Guard Extensions supported = true SGX_LC: SGX launch config supported = trueNotSGX etkinleştirildikten sonra SGX programlarını çalıştırmak için SGX sürücüsü gerekir. Alibaba Cloud tarafından sağlanan özel görüntülerde yerleşik bir SGX sürücüsü bulunur. Özel bir görüntü kullanmak istemiyorsanız SGX sürücüsünü yükleyin.
-
SGX sürücüsünü yükleyin:
-
install_sgx_dcap.shbetiğini oluşturun: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 sürücüsünü yüklemek için betiği çalıştırın:
sudo bash ./install_sgx_dcap.sh
-
-
SGX sürücüsünün yüklü olup olmadığını kontrol edin.
ls -l /dev/{sgx_enclave,sgx_provision}Aşağıdakine benzer bir komut çıktısı, SGX sürücüsünün yüklü olduğunu gösterir.
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. Adım: SGX gizli bilgi işlem ortamı oluşturma
SGX programları geliştirmeden önce vSGX örneğine SGX çalışma zamanını ve SDK'yı yüklemeniz ile uzak kanıtlama hizmetini yapılandırmanız gerekir. Daha iyi bir kullanıcı deneyimi sağlamak için Alibaba Cloud tarafından sağlanan özel görüntüleri kullanmanızı öneririz. Özel görüntüler, SGX sürücüsü ile birlikte gelir ve Intel® SGX SDK ile tam uyumlu olan Trusted Execution Environment (TEE) SDK'yı içerir. Bu bölümde SGX gizli bilgi işlem ortamının nasıl oluşturulacağı açıklanmaktadır. Aşağıdaki örneklerde Alibaba Cloud Linux 2 (UEFI) görüntüsü, Alibaba Cloud Linux 3 (UEFI) görüntüsü ve Ubuntu 22.04 (UEFI) görüntüsü kullanılmaktadır. CentOS gibi diğer Linux görüntülerini kullanıyorsanız SGX sürücüsünü ve Platform SoftWare (PSW) bileşenlerini yükleyin. Daha fazla bilgi için bkz. Intel® SGX SW Installation Guide for Linux.
-
SGX gizli bilgi işlem ortamını oluşturmak için gerekli modülleri yükleyin.
Alibaba Cloud Linux 2/3 (UEFI) görüntüsü
-
(Gerekli) Alibaba Cloud SGX çalışma zamanını yükleyin.
NotECS konsolunda bir vSGX örneği oluşturduğunuzda Alibaba Cloud SGX çalışma zamanı otomatik olarak yüklenir. Bu adımı atlayıp doğrudan Alibaba Cloud TEE SDK'yı yükleyebilirsiniz.
-
Alibaba Cloud gizli bilgi işlem için YUM yazılım deposunu içe aktarın.
NotAşağıdaki URL'lerdeki [Region-ID] değerini vSGX örneğinizin bölge kimliğiyle değiştirin:
Depo için genel URL şu biçimdedir:
https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo.Depo için dahili URL şu biçimdedir:
https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo.
Alternatif olarak, Alibaba Cloud gizli bilgi işlem için YUM yazılım deposunu içe aktarmak üzere bir betik oluşturup çalıştırabilirsiniz.
-
install_sgx_repo.shbetiğini oluşturun: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 -
Alibaba Cloud gizli bilgi işlem için YUM deposunu içe aktarın:
sudo bash ./install_sgx_repo.sh
-
Alibaba Cloud SGX çalışma zamanını yükleyin.
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-serviceNotSGX Architectural Enclave Service Manager (AESM), yuva başlatma, anahtar yapılandırması ve uzak kanıtlama gibi hizmetleri yönetmek için kullanılır. SGX AESM'nin varsayılan yükleme yolu /opt/intel/sgx-aesm-service konumudur.
-
-
Alibaba Cloud TEE SDK'yı yükleyin.
sudo yum install -y sgxsdk
Alibaba Cloud TEE SDK, Intel® SGX SDK ile tam uyumludur. Alibaba Cloud TEE SDK'yı yükledikten sonra SGX programları geliştirmek için Intel® SGX Developer Reference belgesine başvurabilirsiniz. Daha fazla bilgi için bkz. Intel®SGX Developer Reference.
NotAlibaba Cloud TEE SDK içindeki Intel® SGX SDK'nın varsayılan yükleme yolu /opt/alibaba/teesdk/intel/sgxsdk/ konumudur.
Ubuntu 22.04 (UEFI) görüntüsü
-
install_sgx_sdk.shbetiğini oluşturun: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 -
Intel® SGX SDK ve PSW'yi yüklemek için betiği çalıştırın:
sudo bash ./install_sgx_sdk.sh
-
-
Alibaba Cloud SGX uzak kanıtlama hizmetini yapılandırın.
Alibaba Cloud SGX uzak kanıtlama hizmeti, Intel® SGX Elliptic Curve Digital Signature Algorithm (ECDSA) tabanlı uzak kanıtlama hizmeti ve Intel® SGX SDK ile tam uyumludur. Alibaba Cloud tarafından sağlanan vSGX örnekleri, uzak kanıtlama yöntemiyle uzaktaki tedarikçilerden ve üreticilerden güven alabilir. Daha fazla bilgi için bkz. Attestation & Provisioning Services.
Alibaba Cloud SGX uzak kanıtlama hizmeti, SGX SDK için aşağıdaki bilgileri sağlar:
SGX sertifikaları: SGX sertifikaları.
İptal listesi: İptal edilmiş SGX sertifikalarının listesi.
Güvenilen hesaplama tabanı bilgileri: Güven köküne ilişkin bilgiler.
NotIntel Ice Lake yalnızca Intel Software Guard Extensions Data Center Attestation Primitives (Intel SGX DCAP) tabanlı uzak kanıtlamayı destekler ve Intel Enhanced Privacy ID (EPID) tabanlı uzak kanıtlamayı desteklemez. Uzak kanıtlama özelliğini kullanabilmeniz için uygulamalarınızı buna göre uyarlamalısınız. Uzak kanıtlama hakkında daha fazla bilgi için bkz. Strengthen Enclave Trust with Attestation.
Alibaba Cloud SGX uzak kanıtlama hizmeti bölge bazında dağıtılmıştır. Optimal kararlılık sağlamak için vSGX örneğinizle aynı bölgede bulunan hizmete erişmenizi öneririz. Alibaba Cloud TEE SDK'yı yükledikten sonra uzak kanıtlama hizmeti için /etc/sgx_default_qcnl.conf adlı varsayılan yapılandırma dosyası otomatik olarak oluşturulur. Bu dosyayı, vSGX örneğinizin dağıtıldığı bölgedeki Alibaba Cloud SGX uzak kanıtlama hizmetine uyacak şekilde aşağıdaki yöntemlerden birini kullanarak yapılandırmanız gerekir.
NotAşağıdaki tabloda Alibaba Cloud SGX uzak kanıtlama hizmetinin desteklendiği bölgeler gösterilmektedir.
Desteklenen bölge
Bölge Kimliği
Çin (Qingdao)
cn-qingdao
Çin (Pekin)
cn-beijing
Çin (Zhangjiakou)
cn-zhangjiakou
Çin (Ulanqab)
cn-wulanchabu
Çin (Hangzhou)
cn-hangzhou
Çin (Şanghay)
cn-shanghai
Çin (Shenzhen)
cn-shenzhen
Çin (Heyuan)
cn-heyuan
Çin (Guangzhou)
cn-guangzhou
Çin (Chengdu)
cn-chengdu
Çin (Hong Kong)
cn-hongkong
Singapur
ap-southeast-1
Endonezya (Cakarta)
ap-southeast-5-
(Önerilen) 1. Yöntem: /etc/sgx_default_qcnl.conf dosyasını otomatik olarak yapılandırın.
/etc/sgx_default_qcnl.conf dosyasını otomatik olarak yapılandırmak için aşağıdaki komutları çalıştırın. Daha fazla bilgi için bkz. Örnek meta verilerine erişme.
# 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 -
Yöntem: /etc/sgx_default_qcnl.conf dosyasını manuel olarak değiştirin.
-
vSGX örneğine bir genel IP adresi atanmışsa /etc/sgx_default_qcnl.conf dosyasındaki yapılandırmaları aşağıdaki içerikle değiştirin. [Region-ID] değerini vSGX örneğinizin bölge kimliğiyle değiştirin.
# 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 -
vSGX örneği bir sanal özel cloud (VPC) içindeyse ve yalnızca dahili IP adreslerine sahipse /etc/sgx_default_qcnl.conf dosyasındaki yapılandırmaları aşağıdaki içerikle değiştirin. [Region-ID] değerini vSGX örneğinizin bölge kimliğiyle değiştirin.
# 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
-
SGX özelliğini doğrulamaya yönelik örnekler
Bu bölümde, yüklenen SGX SDK'nın beklendiği gibi çalışıp çalışmadığını kontrol etmek için bir yuvanın (enclave) nasıl başlatılacağı açıklanmaktadır. Yuva başarıyla başlatılırsa SDK düzgün çalışıyor demektir. Aşağıdaki örneklerde SampleEnclave adlı örnek kod dosyası kullanılmaktadır.
Örnek 1: Bir yuva başlatma
Alibaba Cloud Linux 2/3 (UEFI) görüntüsü
Alibaba Cloud TEE SDK, SGX özelliğini doğrulamak için SGX örnek kodları sağlar. Bu kodlar varsayılan olarak /opt/alibaba/teesdk/intel/sgxsdk/SampleCode dizininde saklanır.
Derleyici yükleyin.
-
SGX SDK ile ilgili ortam değişkenlerini yapılandırın.
if [ "$ID" = "alinux" -a "$VERSION_ID" = "2.1903" ]; then source /opt/rh/devtoolset-9/enable fi source /opt/alibaba/teesdk/intel/sgxsdk/environment -
SampleEnclave dosyasındaki örnek kodu derleyin.
-
SampleEnclave dizinine gidin:
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/SampleEnclave -
SampleEnclave içindeki örnek kodu derleyin:
sudo -E make
-
-
Derlenen yürütülebilir dosyayı çalıştırın.
sudo ./appAşağıdaki komut çıktısı döndürülürse SGX beklendiği gibi çalışır.
[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
fi
Ubuntu 22.04 (UEFI) görüntüsü
-
Paket listesini güncelleyin.
sudo apt update -
build-essentialderleyicisini yükleyin.sudo apt install -y build-essential -
SampleEnclave dosyasındaki örnek kodu derleyin.
-
SampleEnclave dizinine gidin:
cd /opt/intel/sgxsdk/SampleCode/SampleEnclave/ -
SampleEnclave içindeki örnek kodu derleyin:
sudo make SGX_DEBUG=1
-
-
Derlenen yürütülebilir dosyayı çalıştırın.
sudo ./appAşağıdaki komut çıktısı döndürülürse SGX beklendiği gibi çalışır.
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 ...
Örnek 2: SGX uzak kanıtlama hizmetini kullanma
Alibaba Cloud TEE SDK, SGX özelliğini doğrulamak için SGX örnek kodları sağlar. Bu kodlar varsayılan olarak /opt/alibaba/teesdk/intel/sgxsdk/SampleCode dizininde saklanır. Bu bölümde SGX uzak kanıtlama hizmetinin nasıl kullanılacağı açıklanmaktadır. Örnekte Alibaba Cloud Linux 2 (UEFI) veya Alibaba Cloud Linux 3 (UEFI) görüntüsü kullanılmaktadır.
Beklenen sonuç, QuoteGenerationSample dosyası kullanılarak bir alıntının (quote) oluşturulması ve QuoteVerificationSample dosyası kullanılarak bu alıntının doğrulanmasıdır. Örnek, meydan okunan tarafı (vSGX örneğinde çalışan SGX programları) ve meydan okuyan tarafı (SGX programlarının güvenilir olup olmadığını doğrulamak isteyen taraf) içerir. Bu örnekte, meydan okunan taraf tarafından bir alıntı oluşturmak için QuoteGenerationSample adlı örnek kod dosyası ve meydan okuyan taraf tarafından alıntıyı doğrulamak için QuoteVerificationSample adlı örnek kod dosyası kullanılır.
-
Derleyici yükleyin.
-
Alibaba Cloud Linux 2 (UEFI) görüntüsü kullanılıyorsa devtoolset'i yükleyin.
-
devtoolset'i yükleyin.
sudo yum install -y devtoolset-9 -
devtoolset ile ilgili ortam değişkenlerini yapılandırın.
source /opt/rh/devtoolset-9/enable
-
-
Alibaba Cloud Linux 3 (UEFI) görüntüsü kullanılıyorsa Development Tools'u yükleyin.
sudo yum groupinstall -y "Development Tools"
-
-
SGX SDK ile ilgili ortam değişkenlerini yapılandırın.
source /opt/alibaba/teesdk/intel/sgxsdk/environment -
SGX uzak kanıtlama için bağımlılık paketini yükleyin.
sudo yum install -y libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel -
Meydan okunan taraf tarafından kullanılan QuoteGenerationSample dosyasındaki örnek kodu derleyin.
-
QuoteGenerationSample dizinine gidin.
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteGenerationSample -
QuoteGenerationSample dosyasındaki örnek kodu derleyin.
sudo -E make
-
-
Bir alıntı oluşturmak için derlenen yürütülebilir dosyayı çalıştırın.
sudo ./appAşağıdaki komut çıktısı döndürülürse alıntı doğrulaması başarılı olur.
[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 -
Meydan okuyan taraf tarafından kullanılan QuoteVerificationSample dosyasındaki örnek kodu derleyin.
-
QuoteVerificationSample dizinine gidin.
cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/QuoteVerificationSample -
QuoteVerificationSample dosyasındaki örnek kodu derleyin.
sudo -E make
-
-
QuoteVerificationSample yuvasını imzalayın.
Bir yuvanın resmi sürümünü yayınlamak için yuvayı imzalamak amacıyla imza anahtarını sağlamanız gerekir.
sudo sgx_sign sign -key Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xmlNotFailed to open file "Enclave/Enclave_private_sample.pem"hata mesajı görünürse imzayı yeniden oluşturmak için aşağıdaki komutu çalıştırın:sudo sgx_sign sign -key ../QuoteGenerationSample/Enclave/Enclave_private_sample.pem -enclave enclave.so -out enclave.signed.so -config Enclave/Enclave.config.xml -
Alıntıyı doğrulamak için derlenen yürütülebilir dosyayı çalıştırın.
sudo ./appAşağıdaki komut çıktısı döndürülürse alıntı doğrulaması başarılı olur.
[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 ve DCAP yazılımını güncelleme
Intel® SGX yazılım yığını SGX SDK, SGX PSW ve SGX Data Center Attestation Primitives (DCAP) bileşenlerini içerir. Optimal güvenlik sağlamak için yazılım sürümlerini düzenli olarak güncellemenizi öneririz. Bu örnekte SGX SDK, SGX PSW ve SGX DCAP yazılım paketlerini güncellemek için Alibaba Cloud Linux 3 UEFI görüntüsü kullanılmaktadır.
-
SGX SDK, SGX PSW ve SGX DCAP yazılımını güncelleyin.
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 ve SGX DCAP yazılımının sürümlerini görüntüleyin.
-
SGX SDK ve SGX PSW yazılımının sürümlerini görüntüleyin.
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şağıdaki komut çıktısı döndürülür.
[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 -
SGX DCAP yazılımının sürümünü görüntüleyin.
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şağıdaki komut çıktısı döndürülür.
[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
-
Bilinen sorunlar
Çekirdek sürümü 4.19.91-23.al7.x86_64 olan Alibaba Cloud Linux 2 ile birlikte gelen SGX sürücüsünde bellek sızıntıları oluşabilir. Bu sorun en son sürümde giderilmiştir. Çekirdeği en son sürüme güncellemenizi öneririz. Bu eski çekirdek sürümünü kullanmaya devam etmek istiyorsanız sorunu önlemek için aşağıdaki komutları çalıştırarak yamaları yükleyin:
sudo yum install -y alinux-release-experimentals && \
sudo yum install -y kernel-hotfix-5577959-23.al7.x86_64