Condividi tramite


Set di attestazioni

Le attestazioni generate nel processo di attestazione delle enclave che usano Microsoft attestazione di Azure possono essere suddivise in queste categorie:

  • Attestazioni in ingresso: le attestazioni generate da Microsoft attestazione di Azure dopo l'analisi dell'evidenza di attestazione e possono essere usate dagli autori dei criteri per definire le regole di autorizzazione in un criterio personalizzato

  • Attestazioni in uscita: attestazioni generate da attestazione di Azure e incluse nel token di attestazione

  • Attestazioni di proprietà: attestazioni create come output da attestazione di Azure. Sono incluse tutte le attestazioni che rappresentano proprietà del token di attestazione, ad esempio la codifica del report, la durata di validità del report e così via.

Attestazioni in ingresso

Attestazione SGX

Attestazioni da usare dagli autori di criteri per definire le regole di autorizzazione in un criterio di attestazione SGX:

  • x-ms-sgx-is-debuggable: valore booleano, che indica se il debug dell'enclave è abilitato o meno.

    Le enclave SGX possono essere caricate con il debug disabilitato o abilitato. Quando il flag è impostato su true nell'enclave, abilita le funzionalità di debug per il codice dell'enclave. Ciò include la possibilità di accedere alla memoria dell'enclave. È quindi consigliabile impostare il flag su true solo a scopo di sviluppo. Se abilitata nell'ambiente di produzione, le garanzie di sicurezza SGX non verranno mantenute.

    attestazione di Azure gli utenti possono usare i criteri di attestazione per verificare se il debug è disabilitato per l'enclave SGX. Dopo aver aggiunto la regola dei criteri, l'attestazione avrà esito negativo quando un utente malintenzionato attiva il supporto per il debug per ottenere l'accesso al contenuto dell'enclave.

  • x-ms-sgx-product-id: valore intero, che indica l'ID prodotto dell'enclave SGX.

    L'autore dell'enclave assegna un ID prodotto a ogni enclave. L'ID prodotto consente all'autore dell'enclave di segmentare le enclave firmate usando lo stesso MRSIGNER. Aggiungendo una regola di convalida nei criteri di attestazione, i clienti possono verificare se usano le enclave previste. L'attestazione avrà esito negativo se l'ID prodotto dell'enclave non corrisponde al valore pubblicato dall'autore dell'enclave.

  • x-ms-sgx-mrsigner: valore stringa che identifica l'autore dell'enclave SGX.

    MRSIGNER è l'hash della chiave pubblica dell'autore dell'enclave associata alla chiave privata usata per firmare il file binario dell'enclave. Convalidando MRSIGNER tramite un criterio di attestazione, i clienti possono verificare se i file binari attendibili sono in esecuzione all'interno di un'enclave. Quando l'attestazione dei criteri non corrisponde a MRSIGNER dell'autore dell'enclave, implica che il file binario dell'enclave non è firmato da un'origine attendibile e l'attestazione ha esito negativo.

    Quando un autore dell'enclave preferisce ruotare MRSIGNER per motivi di sicurezza, attestazione di Azure criterio deve essere aggiornato per supportare i valori MRSIGNER nuovi e precedenti prima dell'aggiornamento dei file binari. In caso contrario, i controlli di autorizzazione non riusciranno a generare errori di attestazione.

    I criteri di attestazione devono essere aggiornati usando il formato seguente.

    Prima della rotazione delle chiavi

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

    Durante la rotazione delle chiavi

      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(); 
      };
    

    Dopo la rotazione delle chiavi

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: valore stringa che identifica il codice e i dati caricati nella memoria dell'enclave.

    MRENCLAVE è una delle misurazioni dell'enclave che possono essere usate per verificare i file binari dell'enclave. È l'hash del codice in esecuzione all'interno dell'enclave. La misura cambia con ogni modifica al codice binario dell'enclave. Convalidando MRENCLAVE tramite un criterio di attestazione, i clienti possono verificare se i file binari previsti sono in esecuzione all'interno di un'enclave. Tuttavia, poiché è previsto che MRENCLAVE cambi frequentemente con qualsiasi modifica semplice al codice esistente, è consigliabile verificare i file binari dell'enclave usando la convalida MRSIGNER in un criterio di attestazione.

  • x-ms-sgx-svn: valore intero, che indica il numero di versione di sicurezza dell'enclave SGX

    L'autore dell'enclave assegna un numero di versione di sicurezza (SVN) a ogni versione dell'enclave SGX. Quando viene rilevato un problema di sicurezza nel codice dell'enclave, l'autore dell'enclave incrementa il valore SVN dopo la correzione della vulnerabilità. Per impedire l'interazione con il codice dell'enclave non sicuro, i clienti possono aggiungere una regola di convalida nei criteri di attestazione. Se il nome SVN del codice dell'enclave non corrisponde alla versione consigliata dall'autore dell'enclave, l'attestazione avrà esito negativo.

Queste attestazioni sono considerate deprecate, ma sono completamente supportate e continueranno a essere incluse in futuro. È consigliabile usare i nomi di attestazione non deprecati:

Attestazione deprecata Attestazione consigliata
$is debug x-ms-sgx-is-debuggable
$product-id x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

Attestazione TPM

Attestazioni da usare dagli autori di criteri per definire le regole di autorizzazione in un criterio di attestazione TPM:

  • aikValidated: valore booleano contenente informazioni se il certificato AIK (Attestation Identity Key) è stato convalidato o meno
  • aikPubHash: stringa contenente la chiave pubblica BASE64(SHA256(AIK public key in formato DER))
  • tpmVersion: valore intero contenente la versione principale del modulo TPM (Trusted Platform Module)
  • secureBootEnabled: valore booleano per indicare se l'avvio protetto è abilitato
  • iommuEnabled: valore booleano per indicare se l'unità di gestione della memoria di input-output (Iommu) è abilitata
  • bootDebuggingDisabled: valore booleano per indicare se il debug di avvio è disabilitato
  • notSafeMode: valore booleano per indicare se Windows non è in esecuzione in modalità provvisoria
  • notWinPE: valore booleano che indica se Windows non è in esecuzione in modalità WinPE
  • vbsEnabled: valore booleano che indica se VBS è abilitato
  • vbsReportPresent: valore booleano che indica se il report dell'enclave VBS è disponibile

Attestazione VBS

Oltre alle attestazioni dei criteri di attestazione TPM, queste attestazioni possono essere usate dagli autori di criteri per definire le regole di autorizzazione in un criterio di attestazione VBS:

  • enclaveAuthorId: valore stringa contenente il valore codificato Base64Url dell'ID autore dell'enclave: identificatore dell'autore dell'autore dell'enclave dell'enclave
  • enclaveImageId: valore stringa contenente il valore codificato Base64Url dell'ID immagine dell'enclave: identificatore dell'immagine del modulo primario per l'enclave
  • enclaveOwnerId: valore stringa contenente il valore con codifica Base64Url dell'ID proprietario dell'enclave: identificatore del proprietario dell'enclave per l'enclave
  • enclaveFamilyId: valore stringa contenente il valore con codifica Base64Url dell'ID famiglia dell'enclave. Identificatore della famiglia del modulo primario per l'enclave
  • enclaveSvn: valore intero contenente il numero di versione di sicurezza del modulo primario per l'enclave
  • enclavePlatformSvn: valore intero contenente il numero di versione di sicurezza della piattaforma che ospita l'enclave
  • enclaveFlags: l'attestazione enclaveFlags è un valore intero contenente flag che descrivono i criteri di runtime per l'enclave

Attestazioni in uscita

Comune per tutti i tipi di attestazione

attestazione di Azure include queste attestazioni nel token di attestazione per tutti i tipi di attestazione:

  • x-ms-ver: versione dello schema JWT (prevista come "1.0")
  • x-ms-attestation-type: valore stringa che rappresenta il tipo di attestazione
  • x-ms-policy-hash: hash dei criteri di valutazione attestazione di Azure calcolati come BASE64URL(SHA256(UTF8(BASE64URL(UTF8(policy text)))))
  • x-ms-policy-signer: oggetto JSON con un membro "jwk" che rappresenta la chiave usata dal cliente per firmare i criteri. Questo è applicabile quando il cliente carica un criterio firmato
  • x-ms-runtime: oggetto JSON contenente "attestazioni" definite e generate all'interno dell'ambiente con attestazione. Si tratta di una specializzazione del concetto di "dati contenuti nell'enclave", in cui i "dati contenuti nell'enclave" sono formattati in modo specifico come codifica UTF-8 di JSON ben formato
  • x-ms-inittime: oggetto JSON contenente "attestazioni" definite e verificate al momento dell'inizializzazione dell'ambiente attestato

I nomi delle attestazioni seguenti vengono usati dalla specifica JWT IETF

  • Attestazione "jti" (ID JWT): identificatore univoco per il token JWT
  • Attestazione "iss" (autorità di certificazione): l'entità che ha emesso il token JWT
  • Attestazione "iat" (rilasciata a) - Ora in cui è stato emesso il token JWT
  • Attestazione "exp" (scadenza): ora di scadenza dopo la quale il token JWT non deve essere accettato per l'elaborazione
  • Attestazione "nbf" (Non prima) - Non prima del tempo prima del quale il token JWT non deve essere accettato per l'elaborazione

Questi nomi di attestazione vengono usati dalla specifica bozza di IETF EAT:

  • "Attestazione nonce" (nonce): copia diretta non trasformata di un valore nonce facoltativo fornito da un client

Le attestazioni seguenti sono considerate deprecate, ma sono completamente supportate e continueranno a essere incluse in futuro. È consigliabile usare i nomi delle attestazioni non deprecati.

Attestazione deprecata Attestazione consigliata
ver x-ms-ver
tee x-ms-attestaziontion-type
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data nonce

Attestazione SGX

Questi caims vengono generati e inclusi nel token di attestazione dal servizio per l'attestazione SGX:

  • x-ms-sgx-is-debugable: valore booleano, che indica se l'enclave ha abilitato o meno il debug
  • x-ms-sgx-product-id: valore ID prodotto dell'enclave SGX
  • x-ms-sgx-mrsigner: valore con codifica esadecimale del campo "mrsigner" della citazione
  • x-ms-sgx-mrenclave: valore con codifica hex del campo "mrenclave" della citazione
  • x-ms-sgx-svn: numero di versione di sicurezza codificato nella citazione
  • x-ms-sgx-ehd: enclave tenuto dati formattati come BASE64URL(dati mantenuti enclave)
  • x-ms-sgx-collateral: oggetto JSON che descrive il collaterale usato per eseguire l'attestazione. Il valore per l'attestazione x-ms-sgx-collateral è un oggetto JSON annidato con le coppie chiave/valore seguenti:
    • qeidcertshash: VALORE SHA256 dell'identità QE (Quoting Enclave) che emette certificati
    • qeidcrlhash: VALORE SHA256 di QE Identity emittente di certificati CRL
    • qeidhash: VALORE SHA256 del collaterale QE Identity
    • quotehash: VALORE SHA256 dell'offerta valutata
    • tcbinfocertshash: VALORE SHA256 dell'info TCB che emette certificati
    • tcbinfocrlhash: VALORE SHA256 dell'elenco TCB Info emittente di certificati CRL
    • tcbinfohash: valore SHA256 del collaterale TCB Info
  • x-ms-sgx-report-data: campo dati del report dell'enclave SGX (in genere hash SHA256 di x-ms-sgx-ehd)

Queste attestazioni verranno visualizzate solo nel token di attestazione generato per® le piattaforme server basate su processori scalabili Intel Xeon®. Le attestazioni non verranno visualizzate se l'enclave SGX non è configurato con il supporto per la separazione delle chiavi e la condivisione. Le definizioni delle attestazioni sono disponibili qui:

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

Queste attestazioni sono considerate deprecate, ma sono completamente supportate e continueranno a essere incluse in futuro. È consigliabile usare i nomi attestazioni non deprecati:

Attestazione deprecata Attestazione consigliata
$is debug x-ms-sgx-is-debugable
$product-id 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-attestazionecollateral x-ms-sgx-collateral

Attestazione SEV-SNP

Le attestazioni seguenti sono supportate anche dal tipo di attestazione SevSnpVm:

  • x-ms-sevsnpvm-authorkeydigest: hash SHA384 della chiave di firma dell'autore
  • x-ms-sevsnpvm-bootloader-svn :AMD boot loader security number (SVN)
  • x-ms-sevsnpvm-familyId: stringa di identificazione della famiglia di identificazione del livello di compatibilità host (HCL)
  • x-ms-sevsnpvm-guestvn: numero di versione di sicurezza HCL (SVN)
  • x-ms-sevsnpvm-hostdata: dati arbitrari definiti dall'host all'ora di avvio della macchina virtuale
  • x-ms-sevsnpvm-idkeydigest: hash SHA384 della chiave di firma di identificazione
  • x-ms-sevsnpvm-imageId: identificazione dell'immagine HCL
  • x-ms-sevsnpvm-is-debugable: valore booleano che indica se il debug AMD SEV-SNP è abilitato
  • x-ms-sevsnpvm-launchmeasurement: misurazione dell'immagine guest avviata
  • x-ms-sevsnpvm-microcode-svn: numero di versione di sicurezza del microcode AMD (SVN
  • x-ms-sevsnpvm-migration-allowed: valore booleano che indica se il supporto della migrazione AMD SEV-SNP è abilitato
  • x-ms-sevsnpvm-reportdata: i dati passati da HCL da includere con il report, per verificare che la configurazione della chiave di trasferimento e della macchina virtuale siano corrette
  • x-ms-sevsnpvm-reportid: ID report del guest
  • x-ms-sevsnpvm-smt-allowed: valore booleano che indica se SMT è abilitato nell'host
  • x-ms-sevsnpvm-snpfw-svn: numero di versione del firmware AMD (SVN)
  • x-ms-sevsnpvm-tee-svn: numero di versione di sicurezza dell'ambiente di esecuzione attendibile AMD (TEE) (SVN)
  • x-ms-sevsnpvm-vmpl: VMPL che ha generato questo report (0 per HCL)

Attestazione TPM e VBS

  • cnf (conferma): l'attestazione "cnf" viene usata per identificare la chiave di verifica del possesso. Attestazione di conferma definita in RFC 7800 contiene la parte pubblica della chiave enclave attestazionata rappresentata come oggetto JWK (JSON Web Key) (RFC 7517)
  • rp_data (dati di relying party): dati di relying party, se presenti, specificati nella richiesta, usati dalla relying party come nonce per garantire la freschezza del report. rp_data viene aggiunto solo se è presente rp_data

Attestazioni di proprietà

Attestazione TPM e VBS

  • report_validity_in_minutes: un'attestazione integer per firmare per quanto tempo il token è valido.
    • Default value(time) : un giorno in minuti.
    • Maximum value(time) : un anno in minuti.
  • omit_x5c: attestazione di tipo booleano che indica se Attestazione di Azure deve omettere il certificato usato per fornire la prova dell'autenticità del servizio. Se true, x5t verrà aggiunto al token di attestazione. Se false, x5c verrà aggiunto al token di attestazione.

Passaggi successivi