All Products
Search
Document Center

Elastic Compute Service:Membangun lingkungan komputasi rahasia TDX dan memverifikasi remote attestation

Last Updated:Jun 02, 2026

Siapkan Intel® TDX pada Instance ECS dan verifikasi dengan kode contoh remote attestation.

Latar Belakang

Intel® TDX adalah teknologi perlindungan berbasis perangkat keras untuk Instance ECS. Pada instans TDX, register CPU, data memori, penanganan interupsi, dan status runtime lainnya dilindungi secara rahasia oleh perangkat keras CPU. Penyedia cloud maupun penyerang eksternal tidak dapat memantau atau mengubah status runtime internal instans TDX, seperti proses yang sedang berjalan dan data sensitif selama komputasi. Lihat Intel® Trusted Domain Extension (Intel® TDX).

Intel® TDX mengamankan instans dan aplikasi secara default. Aplikasi yang sudah ada dapat dimigrasikan ke instans TDX tanpa perlu pengembangan ulang.

Prasyarat

Konsol

Membuat instans TDX mirip dengan membuat instans standar. Hanya konfigurasi khusus TDX yang dijelaskan di sini. Untuk konfigurasi umum, lihat Buat instans secara kustom.

  1. Buka ECS console - Instances.

  2. Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.地域

  3. Klik Create Instance dan konfigurasikan parameter berikut.

    Parameter

    Deskripsi

    Wilayah dan zona

    Wilayah dan zona yang didukung bervariasi tergantung tipe instans. Lihat Wilayah, tipe instans, dan image yang didukung.

    Contoh ini menggunakan China (Beijing) Zona I dan ecs.g8i.xlarge.

    Tipe instans

    Image

    Pilih kotak centang Confidential VM, lalu pilih image Alibaba Cloud Linux 3.2104 LTS 64-bit.

    image

  4. Selesaikan konfigurasi tersisa untuk membuat instans.

CLI dan API

Panggil operasi RunInstances atau gunakan Alibaba Cloud CLI untuk membuat Instance ECS yang mendukung TDX. Konfigurasikan parameter berikut.

Parameter

Deskripsi

Contoh

RegionId

China (Beijing)

cn-beijing

ZoneId

Hanya tersedia di zona tertentu. Tipe instans bervariasi tergantung zona. Lihat Wilayah, tipe instans, dan image yang didukung.

cn-beijing-i

InstanceType

ecs.g8i.2xlarge

ImageId

ID image yang mendukung TDX. Hanya image UEFI Alibaba Cloud Linux 3.2104 LTS 64-bit dengan kernel 5.10.134-16.al8.x86_64 atau lebih baru yang didukung.

aliyun_3_x64_20G_alibase_20241218.vhd

SecurityOptions.ConfidentialComputingMode

Mode komputasi rahasia.

TDX

Contoh CLI

aliyun ecs RunInstances \
  --SecurityOptions.ConfidentialComputingMode TDX \
  --Region cn-beijing \
  --ZoneId cn-beijing-i \
  --SystemDisk.Category cloud_essd \
  --ImageId 'aliyun_3_x64_20G_alibase_20241218.vhd' \
  --InstanceType 'ecs.g8i.2xlarge' \
  --SecurityGroupId 'sg-<YourSecurityGroupId>' \
  --VSwitchId 'vsw-<YourVSwitchId>' \
  --KeyPairName <YourKeyPairName> \
  

Prosedur

Langkah 1: Verifikasi bahwa TDX diaktifkan

Verifikasi bahwa TDX diaktifkan pada instans Anda sebelum melanjutkan.

  1. Periksa apakah TDX diaktifkan.

    lscpu |grep -i tdx_guest

    Jika output berisi tdx_guest, berarti TDX telah diaktifkan.tdx-install

  2. Periksa apakah driver TDX telah diinstal.

    ls -l /dev/tdx_guest

    Jika output berisi /dev/tdx_guest, berarti driver TDX telah diinstal.image

Langkah 2: Bangun lingkungan TDX

Catatan

Sebagian besar aplikasi dapat dimigrasikan ke instans TDX tanpa perlu pengembangan ulang. Untuk memanfaatkan keamanan TDX secara maksimal, gunakan fitur-fitur yang dijelaskan di bawah ini.

TDX Report adalah struktur data yang dihasilkan oleh CPU yang merepresentasikan identitas instans TDX. Struktur ini berisi informasi penting seperti ATTRIBUTES, Runtime-extendable Measurement Registers (RTMRs), dan Trusted Computing Base Security Version Numbers (TCB SVNs), serta menggunakan metode kriptografi untuk melindungi integritasnya. Lihat Intel TDX Module.

  1. Tambahkan repositori yum komputasi rahasia Alibaba Cloud.

    • Format endpoint publik: https://enclave-[Region-ID].oss-[Region-ID].aliyuncs.com/repo/alinux/enclave-expr.repo.

    • Format endpoint VPC: https://enclave-[Region-ID].oss-[Region-ID]-internal.aliyuncs.com/repo/alinux/enclave-expr.repo.

      Ganti [Region-ID] dengan ID wilayah instans TDX. Contoh berikut menggunakan metadata instans untuk mendapatkan ID wilayah secara dinamis:

      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)
      
      sudo yum install -y yum-utils
      sudo yum-config-manager --add-repo https://enclave-${region_id}.oss-${region_id}-internal.aliyuncs.com/repo/alinux/enclave-expr.repo
  2. Instal tool pembangunan dan kode contoh.

    sudo yum groupinstall -y "Development Tools"
    sudo yum install -y sgxsdk libtdx-attest-devel
  3. Bangun contoh TDXReportParse.

    1. Masuk ke direktori TDXReportParse.

      cd /opt/alibaba/teesdk/intel/sgxsdk/SampleCode/TDXReportParse
    2. Bangun TDXReportParse.

      sudo make
  4. Jalankan file yang dapat dieksekusi hasil kompilasi.

    sudo ./tdx_report_parse

    NO_DEBUG dalam bidang attributes menunjukkan mode non-debug (mode aman).image

Verifikasi remote attestation TDX

Di lingkungan TDX Alibaba Cloud, remote attestation memverifikasi keandalan platform dan integritas serta kerahasiaan kode yang dijalankan di atasnya. Lihat Layanan remote attestation.

  • Platform: stack perangkat keras dan virtualisasi yang digunakan Alibaba Cloud.

  • Kode yang dijalankan di platform: sistem operasi (seperti Alibaba Cloud Linux) dan aplikasi (seperti Nginx dan Java) di lingkungan TDX.

  1. Instal dependensi remote attestation TDX.

    sudo yum install -y gcc gcc-c++ make openssl-devel git jq
    sudo yum install -y tdx-quote-generation-sample tee-appraisal-tool libsgx-dcap-ql-devel libsgx-dcap-quote-verify-devel libsgx-dcap-default-qpl-devel tdx-quote-verification-sample
  2. Konfigurasikan layanan remote attestation TDX Alibaba Cloud.

    Atur PCCS_URL di /etc/sgx_default_qcnl.conf. Contoh berikut menggunakan metadata instans untuk mendapatkan ID wilayah secara dinamis dan mengonfigurasi layanan DCAP:

    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)
    
    sudo sed -i.$(date "+%m%d%y") 's|PCCS_URL=.*|PCCS_URL=https://sgx-dcap-server.${region_id}.aliyuncs.com/sgx/certification/v4/|' /etc/sgx_default_qcnl.conf
  3. Masuk ke direktori tdx-quote-generation-sample dan bangun aplikasi.

    cd /opt/alibaba/tdx-quote-generation-sample
    sudo make
  4. Hasilkan quote.

    • Hasilkan report_data secara acak dan terbitkan quote:

      sudo ./app
    • Tentukan report_data dan terbitkan quote:

      sudo ./app -d <report_data_in_hex>
        Catatan
        • <report_data_in_hex> adalah string heksadesimal sepanjang 64 byte.

        • Data kustom dalam report_data_in_hex disertakan dalam quote yang dihasilkan.

        • Karena panjangnya terbatas, report_data_in_hex biasanya berupa nilai hash, seperti hash kunci publik untuk kesepakatan kunci.

        Contohnya:

        sudo ./app -d 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
        sudo ./app -d $(cat data.dat | xxd -p)

    Jika output serupa dikembalikan, berarti quote berhasil dihasilkan.

    image

  5. Verifikasi quote.

    1. Konfigurasikan dan tandatangani kebijakan appraisal.

      Penting

      Lakukan operasi ini di lingkungan tepercaya dan aman, bukan di lingkungan produksi.

      Definisikan kebijakan appraisal keamanan Anda dalam format JSON.

      • Sebagai contoh, kebijakan berikut memverifikasi bahwa Instance ECS TDX Anda berjalan dalam keadaan terenkripsi dan tidak dapat di-debug (mode aman).

      • Anda juga dapat menambahkan parameter untuk memverifikasi integritas OS dan aplikasi. Lihat Intel DCAP Appraisal Engine Developer Guide.

        {
            "policy_array":[
                {
                    "environment":{
                        "class_id":"45b734fc-aa4e-4c3d-ad28-e43d08880e68",
                        "description":"Application TD TCB 1.5"
                    },
                    "reference":{
                        "tdx_attributes":"0000000010000000",
                        "#NOTE": "0000000010000000 means for NO_DEBUG and SPTE_VE_DISABLE"
                    }
                }
            ]
        }

      Gunakan kebijakan default (di /opt/alibaba/tdx-quote-verification-sample/Policies/tenant_td_policy.json) atau tulis kebijakan kustom untuk menghasilkan Policy Token guna verifikasi. Token ini dapat ditransfer ke lingkungan mana pun tempat remote attestation diperlukan.

      cd /opt/alibaba/tdx-quote-verification-sample
      sudo make Policies/tenant_td_policy.jwt

      Jika output serupa dikembalikan, berarti Policy Token berhasil dihasilkan.

      image

    2. Bangun komponen lainnya untuk remote attestation TDX.

      cd /opt/alibaba/tdx-quote-verification-sample
      sudo make all

      Jika output serupa dikembalikan, berarti komponen berhasil dibangun.

      image

    3. Verifikasi quote.

      Penting

      Ganti <path_to_quote> dengan path quote aktual, seperti /opt/alibaba/tdx-quote-generation-sample/quote.dat.

      • Verifikasi quote terhadap kebijakan di Policies/tenant_td_policy.json. Hasilnya ditampilkan ke stdout sebagai JWT.

        ./verifier -quote <path_to_quote>

        Contoh output:

        image

      • Gunakan RelyingParty untuk memverifikasi signature JWT.

        ./verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jq 
        Catatan
        • Periksa bidang overall_appraisal_result dalam appraisal_result untuk memastikan apakah attester memenuhi kebijakan appraisal Anda.

          ./verifier -quote <path_to_quote> |./relying_party -v |grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.[0].result.overall_appraisal_result'
        • report_data yang ditentukan saat pembuatan quote juga muncul dalam hasil verifikasi (di bidang tdx_reportdata). Gunakan nilai ini untuk logika bisnis seperti pertukaran kunci.

          ./verifier -quote <path_to_quote> |./relying_party -v -a|grep "json payload" |awk -F 'payload:' '{print $2}'|jq '.. | .tdx_reportdata? | select(. != null)'

        Contoh output (beberapa bidang dihilangkan):

        [
          {
            "result": {
              "appraisal_check_date": 1710400829000000000,
              "nonce": 502551065253582,
              "certification_data": [
                {
                  "certification_data": {
                    "qe_identity_issuer_chain": "LS0t...",
                    "root_ca_crl": "MzA4...",
                    "pck_crl": "LS0t...",
                    "pck_crl_issuer_chain": "LS0t...",
                    "tcb_info": "eyJ0...",
                    "qe_identity": "eyJl...",
                    "tcb_info_issuer_chain": "LS0t..."
                  }
                }
              ],
              "overall_appraisal_result": 1,
              "appraised_reports": [
                {
                  "appraisal_result": 1,
                  "detailed_result": [
                    {
                      "td_mrownerconfig_check": true,
                      "td_xfam_check": true,
                      "td_mrservicetd_check": true,
                      "td_attributes_check": true,
                      "td_rtmr3_check": true,
                      "td_mrtd_check": true,
                      "td_mrowner_check": true,
                      "td_rtmr0_check": true,
                      "td_mrconfigid_check": true,
                      "td_rtmr1_check": true,
                      "td_rtmr2_check": true
                    }
                  ],
                  "policy": {
                    "environment": {
                      "description": "Application TD TCB 1.5",
                      "class_id": "45b734fc-aa4e-4c3d-ad28-e43d08880e68"
                    },
                    "signature": "-6C0-...",
                    "reference": {
                      ...
                    },
                    "signing_key": {
                      "kty": "EC",
                      "crv": "P-384",
                      "alg": "ES384",
                      "y": "CeW8...",
                      "x": "NmSa..."
                    }
                  },
                  "report": {
                    "environment": {
                      "Description": "Application TD TCB",
                      "class_id": "45b734fc-aa4e-4c3d-ad28-e43d08880e68"
                    },
                    "measurement": {
                      "tdx_mrownerconfig": "0000...",
                      "tdx_mrservicetd": "3D03...",
                      "tdx_xfam": "00000000000642E7",
                      "tdx_mrtd": "0A40...",
                      "tdx_mrowner": "0000...",
                      "tdx_attributes": "0000000010000000",
                      "tdx_mrconfigid": "0000...",
                      "tdx_reportdata": "D98B...",
                      "tdx_rtmr3": "0000...",
                      "tdx_rtmr2": "0000...",
                      "tdx_rtmr1": "6368...",
                      "tdx_rtmr0": "D0FD..."
                    }
                  }
                },
                {
                  "appraisal_result": 1,
                  "detailed_result": [
                    {
                      "platform_provider_id_check": true,
                      "sgx_types_check": true,
                      "cached_keys_check": true,
                      "smt_enabled_check": true,
                      "accepted_tcb_level_date_tag_check": true,
                      "advisory_ids_check": true,
                      "expiration_date_check": true,
                      "tcb_eval_num_check": true,
                      "earliest_accepted_tcb_level_date_tag_check": true,
                      "tcb_status_check": true,
                      "dynamic_platform_check": true
                    }
                  ],
                  "policy": {
                    "environment": {
                      "description": "Alibaba Cloud Evaluation Num Policy for TDX Platform",
                      "class_id": "f708b97f-0fb2-4e6b-8b03-8a5bcd1221d3"
                    },
                    "signature": "l00p...",
                    "reference": {
                      "accepted_tcb_status": [
                        "UpToDate"
                      ],
                      "allow_dynamic_plaform": true,
                      "min_eval_num": 16
                    },
                    "signing_key": {
                      "kty": "EC",
                      "crv": "P-384",
                      "alg": "ES384",
                      "y": "7hlr...",
                      "x": "OSbD..."
                    }
                  },
                  "report": {
                    "environment": {
                      "description": "TDX Platform TCB",
                      "class_id": "f708b97f-0fb2-4e6b-8b03-8a5bcd1221d3"
                    },
                    "measurement": {
                      "earliest_issue_date": "2018-05-21T10:45:10Z",
                      "is_cached_keys_policy": true,
                      "fmspc": "90C06F000000",
                      "is_smt_enabled": true,
                      "earliest_expiration_date": "2024-04-02T10:22:51Z",
                      "root_ca_crl_num": 1,
                      "root_key_id": "9309...",
                      "pck_crl_num": 1,
                      "tcb_eval_num": 16,
                      "latest_issue_date": "2024-03-13T15:45:02Z",
                      "tcb_status": [
                        "UpToDate"
                      ],
                      "tcb_level_date_tag": "2023-08-09T00:00:00Z",
                      "is_dynamic_platform": true,
                      "sgx_types": 1
                    }
                  }
                },
                {
                  "appraisal_result": 1,
                  "detailed_result": [
                    {
                      "td_qe_expiration_date_check": true,
                      "td_qe_tcb_eval_num_check": true,
                      "td_qe_earliest_accepted_tcb_level_date_tag_check": true,
                      "td_qe_tcb_status_check": true,
                      "td_qe_accepted_tcb_level_date_tag_check": true
                    }
                  ],
                  "policy": {
                    "environment": {
                      "description": "Alibaba Cloud Num Policy for Verified TDQE",
                      "class_id": "3769258c-75e6-4bc7-8d72-d2b0e224cad2"
                    },
                    "signature": "l00p...",
                    "reference": {
                      "accepted_tcb_status": [
                        "UpToDate"
                      ],
                      "min_eval_num": 16
                    },
                    "signing_key": {
                      "kty": "EC",
                      "crv": "P-384",
                      "alg": "ES384",
                      "y": "7hlr...",
                      "x": "OSbD..."
                    }
                  },
                  "report": {
                    "environment": {
                      "Description": "RAW TDX QE Report",
                      "class_id": "3769258c-75e6-4bc7-8d72-d2b0e224cad2"
                    },
                    "measurement": {
                      "earliest_expiration_date": "2025-05-21T10:50:10Z",
                      "earliest_issue_date": "2018-05-21T10:45:10Z",
                      "root_key_id": "9309...",
                      "tcb_eval_num": 16,
                      "latest_issue_date": "2018-05-21T10:50:10Z",
                      "tcb_status": [
                        "UpToDate"
                      ],
                      "tcb_level_date_tag": "2023-08-09T00:00:00Z"
                    }
                  }
                }
              ]
            }
          }
        ]

Wilayah, tipe instans, dan image yang didukung

Batasan wilayah dan tipe instans

Komputasi rahasia hanya tersedia di zona tertentu. Tipe instans yang didukung bervariasi tergantung zona.

Wilayah dan zona

Tipe instans

China (Beijing) Zona L

ecs.g8i.xlarge dan lebih besar

China (Beijing) Zona I

  • ecs.g8i.xlarge dan lebih besar

  • ecs.g9i.xlarge, ecs.c9i.xlarge, ecs.r9i.xlarge, dan lebih besar

  • keluarga instans ebmg8i

China (Hangzhou) Zona J

ecs.r9i.xlarge dan lebih besar

China (Hong Kong) Zona B

ecs.g8i.xlarge dan lebih besar

China (Hong Kong) Zona C

ecs.g8i.xlarge dan lebih besar

China (Hong Kong) Zona D

ecs.g8i.xlarge dan lebih besar

Singapore Zona B

ecs.g8i.xlarge dan lebih besar

Gambar

Penting

Kami menyarankan Anda menggunakan Alibaba Cloud Linux 3.

  • Debian 13.1 atau lebih baru: Debian 13.1, Debian 13.2, Debian 13.3.

  • Rocky 9.5 atau lebih baru: Rocky 9.5, Rocky 9.6, Rocky 9.7, Rocky 10.0, Rocky 10.1.

  • Ubuntu 24.04 atau lebih baru: Ubuntu 24.04.

  • Alibaba Cloud Linux 3 atau lebih baru: Alibaba Cloud Linux 3, Alibaba Cloud Linux 4.

Batasan

  • Instans TDX mungkin memiliki performa lebih rendah dibandingkan instans biasa karena register CPU dan data memori dienkripsi oleh perangkat keras CPU.

  • Karena reset RTMR, perlindungan interupsi, dan pemulihan status register, instans TDX tidak mendukung reboot dalam OS. Anda tidak dapat menjalankan perintah reboot di dalam OS.

  • Login VNC tidak didukung. Gunakan SSH melalui Workbench atau klien pihak ketiga sebagai gantinya. Untuk log runtime, lihat Lihat log sistem dan tangkapan layar instans atau GetInstanceConsoleOutput.

  • Batasan image:

    • Hanya image UEFI yang didukung.

    • Windows tidak didukung.

    • Image dengan kernel lawas tidak didukung. Versi kernel harus 5.10.134-16.al8.x86_64 atau lebih baru.

  • eRDMA dan berbagai jenis akselerator tidak didukung.

  • Isu yang diketahui terkait buffer SWIOTLB kernel guest Linux:

    • Memori yang terlihat oleh OS lebih sedikit dibandingkan instans biasa. Instans TDX menyisihkan memori tidak terenkripsi (SWIOTLB) untuk komunikasi perangkat periferal. Secara default, area ini sebesar 6% dari memori yang tersedia, hingga maksimal 1 GiB.

    • Menambahkan multiple elastic network interfaces (ENIs) ke instans besar dapat menyebabkan crash akibat kekurangan memori SWIOTLB dalam skenario kartu jaringan multi-antrian. Hentikan instans di konsol dan lepas ENI untuk memulihkan.

    • Beban kerja I/O tinggi mungkin mengalami degradasi performa akibat kekurangan SWIOTLB. Periksa dengan:

      dmesg| grep 'swiotlb buffer is full'
      Penting

      Pengaturan SWIOTLB yang salah dapat menyebabkan kegagalan boot. Buat snapshot sebelum melanjutkan agar Anda dapat melakukan rollback jika terjadi error.

      Jika masalah ini terjadi, tingkatkan ukuran SWIOTLB:

      • Atur ukuran SWIOTLB menjadi 1 GiB.

        grubby --update-kernel=ALL --args=swiotlb=524288
      • Untuk versi kernel lebih baru dari 5.10.134-18.al8.x86_64, tambahkan parameter any untuk mendukung ukuran SWIOTLB yang lebih besar:

        grubby --update-kernel=ALL --args=swiotlb=2097152,any   # Mengatur SWIOTLB menjadi 4 GiB.
        Catatan

        Hitung nilai parameter SWIOTLB: Ukuran target (dalam MiB) × 512. Lihat The kernel's command-line parameters.