Bagikan melalui


Set klaim

Klaim yang dihasilkan dalam proses membuktikan enklave menggunakan Microsoft Azure Attestation dapat dibagi menjadi kategori ini:

  • Klaim masuk: Klaim yang dihasilkan oleh Microsoft Azure Attestation setelah mengurai bukti pengesahan. Klaim dapat digunakan oleh penulis kebijakan untuk menentukan aturan otorisasi dalam kebijakan kustom.
  • Klaim keluar: Klaim yang dihasilkan oleh Azure Attestation dan disertakan dalam token pengesahan.
  • Klaim properti: Klaim yang dibuat sebagai output oleh Azure Attestation. Ini berisi semua klaim yang mewakili properti token pengesahan, seperti pengodean laporan, durasi validitas laporan, dan sebagainya.

Klaim masuk

Pengesahan SGX

Klaim yang digunakan oleh penulis kebijakan untuk menentukan aturan otorisasi dalam kebijakan pengesahan SGX:

  • x-ms-sgx-is-debuggable: Nilai boolean, yang menunjukkan apakah debugging enklave diaktifkan atau tidak.

    Enklave SGX dapat dimuat dengan debugging dinonaktifkan maupun diaktifkan. Ketika bendera diatur ke true di enklave, bendera memungkinkan fitur debugging untuk kode enklave, yang mencakup kemampuan untuk mengakses memori enklave. Oleh karena itu disarankan untuk mengatur bendera ke true untuk tujuan pengembangan. Jika diaktifkan di lingkungan produksi, jaminan keamanan SGX tidak dipertahankan.

    Pengguna Azure Attestation dapat menggunakan kebijakan pengesahan untuk memverifikasi apakah debugging dinonaktifkan untuk enklave SGX. Setelah aturan kebijakan ditambahkan, pengesahan gagal ketika pengguna jahat mengaktifkan dukungan penelusuran kesalahan untuk mendapatkan akses ke konten enklave.

  • x-ms-sgx-product-id: Nilai bilangan bulat, yang menunjukkan ID produk dari enklave SGX.

    Pembuat enklave menetapkan ID Produk untuk setiap enklave. ID Produk memungkinkan pembuat enklave untuk segmen enklave yang ditandatangani menggunakan MRSIGNER yang sama. Pelanggan dapat menambahkan aturan validasi ke kebijakan pengesahan untuk memeriksa apakah mereka menggunakan enklave yang dimaksudkan. Pengesahan gagal jika ID produk enklave tidak cocok dengan nilai yang diterbitkan oleh penulis enklave.

  • x-ms-sgx-mrsigner: Nilai string, yang mengidentifikasi pembuat enklave SGX.

    MRSIGNER adalah hash kunci publik penulis enklave, yang terkait dengan kunci privat yang digunakan untuk menandatangani biner enklave. Dengan memvalidasi MRSIGNER melalui kebijakan pengesahan, pelanggan dapat memverifikasi apakah biner tepercaya berjalan di dalam enklave. Ketika klaim kebijakan tidak cocok dengan MRSIGNER penulis enklave, itu menyiratkan bahwa biner enklave tidak ditandatangani oleh sumber tepercaya dan pengesahan gagal.

    Ketika penulis enklave lebih suka memutar MRSIGNER karena alasan keamanan, kebijakan Azure Attestation harus diperbarui untuk mendukung nilai MRSIGNER baru dan lama sebelum biner diperbarui. Jika tidak, pemeriksaan otorisasi gagal, mengakibatkan kegagalan pengesahan.

    Kebijakan pengesahan harus diperbarui menggunakan format di bawah ini.

    Sebelum rotasi kunci

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      };
    

    Selama rotasi kunci

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      [ type=="x-ms-sgx-is-debuggable", value==false ]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    

    Setelah rotasi kunci

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: Nilai string, yang mengidentifikasi kode dan data yang dimuat dalam memori enklave.

    MRENCLAVE adalah salah satu pengukuran enklave yang dapat digunakan untuk memverifikasi biner enklave. Ini adalah hash kode yang berjalan di dalam enklave. Pengukuran berubah dengan setiap perubahan pada kode biner enklave. Dengan memvalidasi MRENCLAVE melalui kebijakan pengesahan, pelanggan dapat memverifikasi apakah biner yang dimaksud berjalan di dalam enklave. Namun, karena MRENCLAVE diperkirakan akan sering berubah dengan sedikit modifikasi pada kode yang ada, disarankan untuk memverifikasi biner enklave menggunakan validasi MRSIGNER dalam kebijakan pengesahan.

  • x-ms-sgx-svn: Nilai bilangan bulat, yang menunjukkan nomor versi keamanan enklave SGX

    Pembuat enklave menetapkan Nomor Versi Keamanan (SVN) ke setiap versi enklave SGX. Ketika masalah keamanan ditemukan dalam kode enklave, pembuat enklave menambah perbaikan kerentanan posting nilai SVN. Untuk mencegah berinteraksi dengan kode enklave yang tidak aman, pelanggan dapat menambahkan aturan validasi dalam kebijakan pengesahan. Jika SVN kode enklave tidak cocok dengan versi yang direkomendasikan oleh pembuat enklave, pengesahan gagal.

Klaim ini dianggap tidak digunakan lagi tetapi didukung sepenuhnya dan akan terus disertakan di masa mendatang. Disarankan untuk menggunakan nama klaim yang tidak digunakan lagi:

Klaim yang tidak digunakan lagi Rekomendasi klaim
$is-debuggable x-ms-sgx-is-debuggable
Id Produk x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

Pengesahan TPM

Klaim yang digunakan oleh penulis kebijakan untuk menentukan aturan otorisasi dalam kebijakan pengesahan TPM:

  • aikValidated: Nilai Boolean yang berisi informasi jika sertifikasi Attestation Identity Key (AIK) memvalidasi atau tidak.
  • aikPubHash: String yang berisi base64(SHA256(kunci umum AIK dalam format DER)).
  • tpmVersion: Nilai bilangan bulat yang berisi versi utama Modul Platform Tepercaya (TPM).
  • secureBootEnabled: Nilai Boolean untuk menunjukkan apakah boot aman diaktifkan.
  • iommuEnabled: Nilai Boolean untuk menunjukkan apakah unit manajemen memori input-output (Iommu) diaktifkan.
  • bootDebuggingDisabled: Nilai Boolean untuk menunjukkan apakah penelusuran kesalahan boot dinonaktifkan.
  • notSafeMode: Nilai Boolean untuk menunjukkan apakah Windows tidak berjalan pada mode aman.
  • notWinPE: Nilai boolean yang menunjukkan apakah Windows tidak berjalan dalam mode WinPE.
  • vbsEnabled: Nilai Boolean yang menunjukkan apakah VBS diaktifkan.
  • vbsReportPresent: Nilai Boolean yang menunjukkan apakah laporan enklave VBS tersedia.

Pengesahan VBS

Selain klaim kebijakan pengesahan TPM, pembuat kebijakan dapat menggunakan klaim ini untuk menentukan aturan otorisasi dalam kebijakan pengesahan VBS:

  • enclaveAuthorId: Nilai string yang berisi nilai yang dikodekan Base64Url dari id penulis enklave-Pengidentifikasi penulis modul utama untuk enklave.
  • enclaveImageId: Nilai string yang berisi nilai yang dikodekan Base64Url dari id Gambar enklave-Pengidentifikasi gambar modul utama untuk enklave.
  • enclaveOwnerId: Nilai string yang berisi nilai yang dikodekan Base64Url dari id Pemilik enklave-Pengidentifikasi pemilik untuk enklave.
  • enclaveFamilyId: Nilai string yang berisi nilai yang dikodekan Base64Url dari ID Keluarga enklave. Pengidentifikasi keluarga modul utama untuk enklave.
  • enclaveSvn: Nilai bilangan bulat yang berisi nomor versi keamanan modul utama untuk enklave.
  • enclavePlatformSvn: Nilai bilangan bulat yang berisi nomor versi keamanan platform yang menghosting enklave.
  • enclaveFlags: Klaim enklaveFlags adalah nilai Bilangan bulat yang berisi Bendera yang menjelaskan kebijakan runtime untuk enklave.

Klaim keluar

Umum untuk semua jenis pengesahan

Azure Attestation menyertakan klaim ini dalam token pengesahan untuk semua jenis pengesahan:

  • x-ms-ver: Versi skema JWT (diharapkan "1.0").
  • x-ms-attestation-type: Nilai string yang mewakili jenis pengesahan.
  • x-ms-policy-hash: Hash kebijakan evaluasi Azure Attestation dihitung sebagai BASE64URL(SHA256(UTF8(BASE64URL(UTF8(teks kebijakan))))).
  • x-ms-policy-signer: Objek JSON dengan anggota "jwk" yang mewakili kunci yang digunakan pelanggan untuk menandatangani kebijakan mereka, berlaku saat pelanggan mengunggah kebijakan yang ditandatangani.
  • x-ms-runtime: Objek JSON yang berisi "klaim" yang didefinisikan dan dihasilkan dalam lingkungan yang diuji, spesialisasi konsep "enklave memegang data", di mana "enklave memegang data" diformat sebagai pengodean UTF-8 dari JSON yang terbentuk dengan baik.
  • x-ms-inittime: Objek JSON yang berisi "klaim" yang ditentukan dan diverifikasi pada waktu inisialisasi lingkungan yang dibuktikan.

Nama klaim ini digunakan dari spesifikasi IETF JWT.

  • Klaim "jti" (JWT ID) - Pengidentifikasi unik untuk JWT.
  • Klaim "iss" (Penerbit) - Prinsipal yang menerbitkan JWT.
  • Klaim "iat" (Dikeluarkan Pada) - Waktu di mana JWT dikeluarkan.
  • Klaim "exp" (Waktu Kedaluwarsa) - Waktu kedaluwarsa setelah itu JWT tidak boleh diterima untuk diproses.
  • Klaim "nbf" (Tidak Sebelum) - Tidak Sebelum waktu sebelumnya JWT tidak boleh diterima untuk diproses.

Nama klaim ini digunakan dari spesifikasi draf IETF EAT:

  • "Klaim nonce" (nonce) - Salinan langsung yang tidak ditransformasi dari nilai nonce opsional yang disediakan oleh klien.

Klaim di bawah ini dianggap tidak digunakan lagi tetapi didukung sepenuhnya dan akan terus dimasukkan di masa depan. Disarankan untuk menggunakan nama klaim yang tidak digunakan lagi.

Klaim yang tidak digunakan lagi Rekomendasi klaim
ver x-ms-ver
tee x-ms-attestation-type
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data nonce

Pengesahan SGX

Klaim ini dihasilkan dan disertakan dalam token pengesahan oleh layanan untuk pengesahan SGX:

  • x-ms-sgx-is-debuggable: Boolean, yang menunjukkan apakah enklave mengaktifkan debugging atau tidak.
  • x-ms-sgx-product-id: Nilai ID produk dari enklave SGX.
  • x-ms-sgx-mrsigner: nilai yang dikodekan hex dari bidang MRSIGNER dari kuotasi.
  • x-ms-sgx-mrenclave: nilai yang dikodekan hex dari bidang MRSIGNER dari kuotasi.
  • x-ms-sgx-svn: nomor versi keamanan yang dikodekan dalam kuotasi.
  • x-ms-sgx-ehd: enklave menyimpan data yang diformat sebagai BASE64URL(data yang disimpan enklave).
  • x-ms-sgx-collateral:Objek JSON yang menggambarkan jaminan untuk melakukan pengesahan. Nilai untuk klaim x-ms-sgx-collateral adalah objek JSON berlapis dengan pasangan kunci/nilai berikut:
    • qeidcertshash: Nilai SHA256 dari sertifikat penerbitan Identitas Quoting Enclave (QE).
    • qeidcrlhash: Nilai SHA256 dari QE Identity mengeluarkan daftar CRL sertifikasi.
    • qeidhash: Nilai SHA256 dari jaminan Identitas QE.
    • quotehash: Nilai SHA256 dari kutipan yang dievaluasi.
    • tcbinfocertshash: Nilai SHA256 dari sertifikat penerbit Info TCB.
    • tcbinfocrlhash: Nilai SHA256 dari daftar CRL penerbit Info TCB.
    • tcbinfohash: Nilai SHA256 dari jaminan Info TCB.
  • x-ms-sgx-report-data: bidang data laporan enklave SGX (biasanya hash SHA256 x-ms-sgx-ehd).

Klaim ini hanya muncul dalam token pengesahan yang dihasilkan untuk platform server berbasis prosesor Intel® Xeon® Scalable. Klaim tidak akan muncul jika enklave SGX tidak dikonfigurasi dengan Pemisahan Kunci dan Dukungan Berbagi. Definisi klaim dapat ditemukan di sini:

  • x-ms-sgx-config-id
  • x-ms-sgx-config-svn
  • x-ms-sgx-isv-extended-product-id
  • x-ms-sgx-isv-family-id

Klaim ini dianggap tidak digunakan lagi, tetapi didukung penuh dan akan terus disertakan di masa mendatang. Disarankan untuk menggunakan nama klaim yang tidak digunakan lagi:

Klaim yang tidak digunakan lagi Rekomendasi klaim
$is-debuggable x-ms-sgx-is-debuggable
Id Produk x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn
$maa-ehd x-ms-sgx-ehd
$aas-ehd x-ms-sgx-ehd
$maa-attestationcollateral x-ms-sgx-agunan

Pengesahan SEV-SNP

Klaim berikut juga didukung oleh jenis pengesahan SevSnpVm:

  • x-ms-sevsnpvm-authorkeydigest: HASH SHA384 dari kunci penandatanganan penulis.
  • x-ms-sevsnpvm-bootloader-svn: Amd boot loader security version number (SVN).
  • x-ms-sevsnpvm-familyId: String identifikasi keluarga Host Compatibility Layer (HCL).
  • x-ms-sevsnpvm-guestsvn: Nomor versi keamanan HCL (SVN).
  • x-ms-sevsnpvm-hostdata: Data arbitrer yang ditentukan oleh host pada waktu peluncuran VM.
  • x-ms-sevsnpvm-idkeydigest: HASH SHA384 dari kunci penandatanganan identifikasi.
  • x-ms-sevsnpvm-imageId: Identifikasi gambar HCL.
  • x-ms-sevsnpvm-is-debuggable: Nilai Boolean yang menunjukkan apakah debugging AMD SEV-SNP diaktifkan.
  • x-ms-sevsnpvm-launchmeasurement: Pengukuran gambar tamu yang diluncurkan.
  • x-ms-sevsnpvm-microcode-svn: Nomor versi keamanan mikrokode AMD (SVN).
  • x-ms-sevsnpvm-migration-allowed: Nilai Boolean yang menunjukkan apakah dukungan migrasi AMD SEV-SNP diaktifkan.
  • x-ms-sevsnpvm-reportdata: Data yang diteruskan oleh HCL untuk disertakan dengan laporan, untuk memverifikasi bahwa kunci transfer dan konfigurasi VM sudah benar.
  • x-ms-sevsnpvm-reportid: ID Laporan tamu.
  • x-ms-sevsnpvm-smt-allowed: Nilai Boolean menunjukkan apakah SMT diaktifkan pada host.
  • x-ms-sevsnpvm-snpfw-svn: Nomor versi keamanan firmware AMD (SVN).
  • x-ms-sevsnpvm-tee-svn: Nomor versi keamanan (SVN) lingkungan eksekusi tepercaya AMD.
  • x-ms-sevsnpvm-vmpl: VMPL yang menghasilkan laporan ini (0 untuk HCL).

Pengesahan TPM dan VBS

  • cnf (Konfirmasi): Klaim "cnf" digunakan untuk mengidentifikasi bukti kunci kepemilikan. Klaim konfirmasi seperti yang didefinisikan dalam RFC 7800, berisi bagian publik dari kunci enklave yang dibuktikan yang diwakili sebagai objek JSON Web Key (JWK) (RFC 7517).
  • rp_data (mengandalkan data pihak): Mengandalkan data pihak, jika ada, yang ditentukan dalam permintaan, digunakan oleh pihak yang mengandalkan sebagai nonce untuk menjamin kesegaran laporan. rp_data hanya ditambahkan jika ada rp_data.

Klaim properti

Pengesahan TPM dan VBS

  • report_validity_in_minutes: Klaim bilangan bulat penanda berapa lama token valid.
    • Nilai(waktu) default: Satu hari dalam hitungan menit.
    • Nilai maksimum(waktu): Satu tahun dalam hitungan menit.
  • omit_x5c: Klaim Boolean yang menunjukkan apakah Azure Attestation harus menghilangkan sertifikasi yang digunakan untuk memberikan bukti keaslian layanan. Jika true, x5t ditambahkan ke token pengesahan. Jika false(default), x5c ditambahkan ke token pengesahan.

Langkah berikutnya