Set klaim

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

  • Klaim masuk: Klaim yang dihasilkan oleh Microsoft Azure Attestation setelah menguraikan bukti pengesahan dan dapat digunakan oleh penulis kebijakan untuk menentukan aturan otorisasi dalam kebijakan kustom

  • Klaim keluar: Klaim yang dihasilkan oleh Azure Attestation dan termasuk 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, itu memungkinkan fitur debugging untuk kode enklave. Ini termasuk 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 akan dipertahankan.

    Pengguna Azure Attestation dapat menggunakan kebijakan pengesahan untuk memverifikasi apakah debugging dinonaktifkan untuk enklave SGX. Setelah aturan kebijakan ditambahkan, pengesahan akan 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. Dengan menambahkan aturan validasi dalam kebijakan pengesahan, pelanggan dapat memeriksa apakah mereka menggunakan enklave yang dimaksudkan. Pengesahan akan gagal jika ID produk enklave tidak cocok dengan nilai yang diterbitkan oleh pembuat enklave.

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

    MRSIGNER adalah hash kunci publik pembuat 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 pembuat 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 akan gagal sehingga mengakibatkan pengesahan juga gagal.

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

Klaim ini dianggap tidak digunakan lagi tetapi didukung penuh dan akan terus disertakan di masa depan. 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 apakah sertifikasi Attestation Identity Key (AIK) telah divalidasi 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 boot debugging 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, klaim ini dapat digunakan oleh penulis kebijakan 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 enclaveFlags 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 tipe pengesahan
  • x-ms-policy-hash: Kebijakan evaluasi hash 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. Ini berlaku saat pelanggan mengunggah kebijakan yang ditandatangani
  • x-ms-runtime: Objek JSON yang berisi "klaim" yang ditentukan dan dihasilkan dalam lingkungan yang dites. Ini adalah spesialisasi dari konsep "enklave memegang data", di mana "enklave memegang data" secara khusus 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

Di bawah ini nama klaim digunakan dari spesifikasi IETF JWT

  • Klaim "jti" (JWT ID) - Pengidentifikasi unik untuk JWT
  • Klaim "iss" (Pengeluar Sertifikat) - Prinsipal yang menerbitkan JWT
  • Klaim "iat" (Dikeluarkan Pada) - Waktu di mana JWT diterbitkan
  • Klaim "exp" (Waktu Kedaluwarsa) - Waktu kedaluwarsa ketika JWT tidak boleh diterima untuk diproses
  • Klaim "nbf" (Tidak Sebelum) - Tidak Sebelum waktu sebelumnya yang 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

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

  • x-ms-sgx-is-debuggable: Nilai Boolean, yang menunjukkan apakah enklave memiliki debugging diaktifkan 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 "mrenclave" dari kuotasi
  • x-ms-sgx-svn: nomor versi keamanan yang dikodekan dalam kuotasi
  • x-ms-sgx-ehd: enklave memegang data yang diformat sebagai BASE64URL(data dalam enklave)
  • x-ms-sgx-collateral: Objek JSON yang menggambarkan jaminan untuk melakukan pengesahan. Nilai untuk klaim x-ms-sgx-collateral adalah objek JSON bertumpuk dengan pasangan kunci/nilai berikut:
    • qeidcertshash: Nilai SHA256 dari Mengutip Identitas Enklave (QE) mengeluarkan sertifikat
    • qeidcrlhash: Nilai SHA256 dari QE Identity menerbitkan daftar sertifikat CRL
    • qeidhash: Nilai SHA256 dari jaminan Identitas QE
    • quotehash: Nilai SHA256 dari kuotasi yang dievaluasi
    • tcbinfocertshash: SHA256 nilai TCB Info mengeluarkan sertifikat
    • tcbinfocrlhash: Nilai SHA256 dari Info TCB mengeluarkan sertifikat daftar CRL
    • tcbinfohash: Nilai SHA256 dari jaminan Info TCB
  • x-ms-sgx-report-data: Bidang data laporan enklave SGX (biasanya hash SHA256 dari x-ms-sgx-ehd)

Klaim ini hanya akan muncul dalam token pengesahan yang dihasilkan untuk platform server berbasis prosesor Intel® Xeon® Scalable. Klaim tidak akan muncul jika enklave SGX tidak dikonfigurasi dengan Dukungan Pemisahan Kunci dan 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 depan. 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 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 kode mikro 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 yang 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 (TEE) 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 sebagaimana didefinisikan dalam RFC 7800, berisi bagian publik dari kunci enklave teruji 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 akan ditambahkan ke token pengesahan. Jika false(default), x5c akan ditambahkan ke token pengesahan.

Langkah berikutnya