Claimsets

Claims die worden gegenereerd tijdens het attesteren van enclaves met behulp van Microsoft Azure Attestation kunnen worden onderverdeeld in deze categorieën:

  • Binnenkomende claims: de claims die worden gegenereerd door Microsoft Azure Attestation na het parseren van het attestation-bewijs en kunnen door beleidsauteurs worden gebruikt om autorisatieregels in een aangepast beleid te definiëren

  • Uitgaande claims: de claims die zijn gegenereerd door Azure Attestation en zijn opgenomen in het attestation-token

  • Eigenschapsclaims: de claims die zijn gemaakt als uitvoer door Azure Attestation. Het bevat alle claims die eigenschappen van het Attestation-token vertegenwoordigen, zoals het coderen van het rapport, de geldigheidsduur van het rapport, enzovoort.

Binnenkomende claims

SGX-Attestation

Claims die moeten worden gebruikt door beleidsauteurs om autorisatieregels te definiëren in een SGX-attestation-beleid:

  • x-ms-sgx-is-debuggable: een booleaanse waarde die aangeeft of enclave-foutopsporing is ingeschakeld of niet.

    SGX-enclaves kunnen worden geladen met foutopsporing uitgeschakeld of ingeschakeld. Wanneer de vlag is ingesteld op true in de enclave, worden foutopsporingsfuncties ingeschakeld voor de enclavecode. Dit omvat de mogelijkheid om toegang te krijgen tot het geheugen van de enclave. Daarom wordt aanbevolen om de vlag alleen in te stellen op true voor ontwikkelingsdoeleinden. Als deze optie is ingeschakeld in de productieomgeving, blijven SGX-beveiligingsgaranties niet behouden.

    Azure Attestation gebruikers kunnen het attestation-beleid gebruiken om te controleren of foutopsporing is uitgeschakeld voor de SGX-enclave. Zodra de beleidsregel is toegevoegd, mislukt attestation wanneer een kwaadwillende gebruiker de ondersteuning voor foutopsporing inschakelt om toegang te krijgen tot de enclave-inhoud.

  • x-ms-sgx-product-id: een geheel getal dat de product-id van de SGX-enclave aangeeft.

    De auteur van de enclave wijst een product-id toe aan elke enclave. Met de product-id kan de enclaveauteur enclaves segmenteren die zijn ondertekend met behulp van dezelfde MRSIGNER. Door een validatieregel toe te voegen aan het attestation-beleid, kunnen klanten controleren of ze de beoogde enclaves gebruiken. Attestation mislukt als de product-id van de enclave niet overeenkomt met de waarde die is gepubliceerd door de auteur van de enclave.

  • x-ms-sgx-mrsigner: een tekenreekswaarde die de auteur van de SGX-enclave aangeeft.

    MRSIGNER is de hash van de openbare sleutel van de enclaveauteur die is gekoppeld aan de persoonlijke sleutel die wordt gebruikt om het binaire bestand van de enclave te ondertekenen. Door MRSIGNER te valideren via een attestation-beleid, kunnen klanten controleren of er vertrouwde binaire bestanden worden uitgevoerd in een enclave. Wanneer de beleidsclaim niet overeenkomt met de MRSIGNER van de enclave-auteur, betekent dit dat het binaire bestand van de enclave niet is ondertekend door een vertrouwde bron en dat de attestation mislukt.

    Wanneer een enclave-auteur liever MRSIGNER roteert om veiligheidsredenen, moet Azure Attestation beleid worden bijgewerkt om de nieuwe en oude MRSIGNER-waarden te ondersteunen voordat de binaire bestanden worden bijgewerkt. Anders mislukken autorisatiecontroles, wat resulteert in attestation-fouten.

    Attestation-beleid moet worden bijgewerkt met behulp van de onderstaande indeling.

    Vóór sleutelrotatie

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

    Tijdens sleutelrotatie

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

    Na sleutelrotatie

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: een tekenreekswaarde die de code en gegevens identificeert die in het enclave-geheugen zijn geladen.

    MRENCLAVE is een van de enclavemetingen die kan worden gebruikt om de binaire enclavebestanden te verifiëren. Dit is de hash van de code die in de enclave wordt uitgevoerd. De meting verandert bij elke wijziging in de binaire enclavecode. Door MRENCLAVE te valideren via een attestation-beleid, kunnen klanten controleren of de beoogde binaire bestanden worden uitgevoerd in een enclave. Omdat MRENCLAVE echter naar verwachting regelmatig verandert met elke triviale wijziging in de bestaande code, wordt het aanbevolen om binaire enclavebestanden te verifiëren met behulp van MRSIGNER-validatie in een attestation-beleid.

  • x-ms-sgx-svn: een geheel getal dat het beveiligingsversienummer van de SGX-enclave aangeeft

    De auteur van de enclave wijst een SVN (Security Version Number) toe aan elke versie van de SGX-enclave. Wanneer er een beveiligingsprobleem wordt gedetecteerd in de enclavecode, wordt de SVN-waarde na de oplossing van het beveiligingsprobleem verhoogd door de auteur van de enclave. Om interactie met onveilige enclavecode te voorkomen, kunnen klanten een validatieregel toevoegen aan het attestation-beleid. Als de SVN van de enclavecode niet overeenkomt met de versie die wordt aanbevolen door de auteur van de enclave, mislukt attestation.

Deze claims worden beschouwd als afgeschaft, maar worden volledig ondersteund en worden ook in de toekomst opgenomen. Het wordt aanbevolen om de niet-afgeschafte claimnamen te gebruiken:

Afgeschafte claim Aanbevolen claim
$is-foutopsporing mogelijk 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

TPM-attestation

Claims die moeten worden gebruikt door beleidsauteurs om autorisatieregels te definiëren in een TPM-attestation-beleid:

  • aikValidated: Booleaanse waarde met informatie als het Attestation Identity Key -certificaat (AIK) al dan niet is gevalideerd
  • aikPubHash: Tekenreeks met de base64(SHA256(openbare AIK-sleutel in DER-indeling))
  • tpmVersion: integerwaarde met de primaire versie van TPM (Trusted Platform Module)
  • secureBootEnabled: Booleaanse waarde om aan te geven of beveiligd opstarten is ingeschakeld
  • iommuEnabled: Booleaanse waarde om aan te geven of input-output memory management unit (Iommu) is ingeschakeld
  • bootDebuggingDisabled: Booleaanse waarde om aan te geven of opstartfoutopsporing is uitgeschakeld
  • notSafeMode: Booleaanse waarde om aan te geven of Windows niet wordt uitgevoerd in de veilige modus
  • notWinPE: Booleaanse waarde die aangeeft of Windows niet wordt uitgevoerd in de WinPE-modus
  • vbsEnabled: Booleaanse waarde die aangeeft of VBS is ingeschakeld
  • vbsReportPresent: Booleaanse waarde die aangeeft of het VBS-enclaverapport beschikbaar is

VBS-Attestation

Naast de TPM-attestation-beleidsclaims kunnen deze claims door beleidsauteurs worden gebruikt om autorisatieregels in een VBS-attestation-beleid te definiëren:

  • enclaveAuthorId: tekenreekswaarde met de base64Url gecodeerde waarde van de enclave-auteurs-id- De auteurs-id van de primaire module voor de enclave
  • enclaveImageId: tekenreekswaarde met de base64Url gecodeerde waarde van de enclave-installatiekopie-id- De installatiekopie-id van de primaire module voor de enclave
  • enclaveOwnerId: tekenreekswaarde met de base64Url gecodeerde waarde van de enclave-id van de eigenaar- de id van de eigenaar voor de enclave
  • enclaveFamilyId: tekenreekswaarde met de base64Url gecodeerde waarde van de enclave family-id. De familie-id van de primaire module voor de enclave
  • enclaveSvn: integerwaarde met het beveiligingsversienummer van de primaire module voor de enclave
  • enclavePlatformSvn: integerwaarde met het beveiligingsversienummer van het platform dat als host fungeert voor de enclave
  • enclaveFlags: de enclaveFlags-claim is een geheel getal met vlaggen die het runtimebeleid voor de enclave beschrijven

Uitgaande claims

Gemeenschappelijk voor alle attestation-typen

Azure Attestation bevat deze claims in het attestation-token voor alle attestation-typen:

  • x-ms-ver: JWT-schemaversie (naar verwachting '1.0')
  • x-ms-attestation-type: tekenreekswaarde die het attestation-type vertegenwoordigt
  • x-ms-policy-hash: Hash van Azure Attestation evaluatiebeleid berekend als BASE64URL(SHA256(UTF8(BASE64URL(UTF8(beleidstekst)))
  • x-ms-policy-signer: JSON-object met een jwk-lid dat de sleutel vertegenwoordigt die een klant heeft gebruikt om het beleid te ondertekenen. Dit is van toepassing wanneer de klant een ondertekend beleid uploadt
  • x-ms-runtime: JSON-object met 'claims' die zijn gedefinieerd en gegenereerd binnen de geteste omgeving. Dit is een specialisatie van het concept 'enclave-gehouden gegevens', waarbij de 'enclave-gegevens' specifiek zijn opgemaakt als een UTF-8-codering van goed gevormde JSON
  • x-ms-inittime: JSON-object met 'claims' die zijn gedefinieerd en geverifieerd tijdens de initialisatie van de geteste omgeving

Onderstaande claimnamen worden gebruikt uit de IETF JWT-specificatie

  • "jti" (JWT ID) Claim - Unieke id voor de JWT
  • "iss" (Issuer) Claim : de principal die de JWT heeft uitgegeven
  • "iat" (Uitgegeven op) Claim - Het tijdstip waarop de JWT is uitgegeven op
  • "exp" (Verlooptijd) Claim - Verlooptijd waarna de JWT niet mag worden geaccepteerd voor verwerking
  • "nbf" (Niet vóór) Claim - Niet vóór het tijdstip waarop de JWT niet voor verwerking moet worden geaccepteerd

Deze claimnamen worden gebruikt uit de conceptspecificatie van IETF EAT:

  • 'Nonce-claim' (nonce): een niet-vertaalde directe kopie van een optionele nonce-waarde die door een client is opgegeven

Onderstaande claims worden beschouwd als afgeschaft, maar worden volledig ondersteund en worden in de toekomst nog steeds opgenomen. Het wordt aanbevolen om de niet-afgeschafte claimnamen te gebruiken.

Afgeschafte claim Aanbevolen claim
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

SGX-Attestation

Deze caims worden gegenereerd en opgenomen in het attestation-token door de service voor SGX-attestation:

  • x-ms-sgx-is-debuggable: een Booleaanse waarde die aangeeft of foutopsporing is ingeschakeld voor de enclave of niet
  • x-ms-sgx-product-id: product-id-waarde van de SGX-enclave
  • x-ms-sgx-mrsigner: hex gecodeerde waarde van het veld 'mrsigner' van het aanhalingsteken
  • x-ms-sgx-mrenclave: hex gecodeerde waarde van het veld 'mrenclave' van de aanhalingsteken
  • x-ms-sgx-svn: beveiligingsversienummer gecodeerd in de offerte
  • x-ms-sgx-ehd: enclave-gegevens opgemaakt als BASE64URL(enclave-gegevens)
  • x-ms-sgx-collateral: JSON-object dat het onderpand beschrijft dat wordt gebruikt om attestation uit te voeren. De waarde voor de claim x-ms-sgx-collateral is een genest JSON-object met de volgende sleutel-waardeparen:
    • qeidcertshash: SHA256-waarde van quoting enclave (QE) Identity die certificaten uitgeeft
    • qeidcrlhash: SHA256-waarde van de QE-identiteit die CRL-lijst met certificaten uitgeeft
    • qeidhash: SHA256-waarde van het QE Identity-onderpand
    • quotehash: SHA256-waarde van de geëvalueerde offerte
    • tcbinfocertshash: SHA256-waarde van de TCB Info die certificaten uitgeeft
    • tcbinfocrlhash: SHA256-waarde van de CRL-lijst TCB Info die certificaten uitgeeft
    • tcbinfohash: SHA256-waarde van het onderpand van TCB Info
  • x-ms-sgx-report-data: SGX enclave-rapportgegevensveld (meestal SHA256-hash van x-ms-sgx-ehd)

Deze claims worden alleen weergegeven in het attestation-token dat is gegenereerd voor Intel® Xeon® Scalable-serverplatforms op basis van een processor. De claims worden niet weergegeven als de SGX-enclave niet is geconfigureerd met ondersteuning voor sleutelscheiding en delen. De claimdefinities vindt u hier:

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

Deze claims worden beschouwd als afgeschaft, maar worden volledig ondersteund en worden in de toekomst nog steeds opgenomen. Het wordt aanbevolen om de niet-afgeschafte claimnamen te gebruiken:

Afgeschafte claim Aanbevolen claim
$is-foutopsporing mogelijk 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
$maa-ehd x-ms-sgx-ehd
$aas-ehd x-ms-sgx-ehd
$maa-attestationcollateral x-ms-sgx-collateral

SEV-SNP-attestation

De volgende claims worden bovendien ondersteund door het attestation-type SevSnpVm:

  • x-ms-sevsnpvm-authorkeydigest: SHA384-hash van de ondertekeningssleutel van de auteur
  • x-ms-sevsnpvm-bootloader-svn :AMD boot loader security version number (SVN)
  • x-ms-sevsnpvm-familyId: hostcompatibiliteitslaag (HCL) family identification string
  • x-ms-sevsnpvm-guestsvn: HCL security version number (SVN)
  • x-ms-sevsnpvm-hostdata: Willekeurige gegevens gedefinieerd door de host tijdens het starten van de VM
  • x-ms-sevsnpvm-idkeydigest: SHA384-hash van de ondertekeningssleutel voor identificatie
  • x-ms-sevsnpvm-imageId: identificatie van HCL-installatiekopieën
  • x-ms-sevsnpvm-is-debuggable: Booleaanse waarde die aangeeft of AMD SEV-SNP-foutopsporing is ingeschakeld
  • x-ms-sevsnpvm-launchmeasurement: Meting van de gestarte gastinstallatiekopieën
  • x-ms-sevsnpvm-microcode-svn: AMD microcode security version number (SVN)
  • x-ms-sevsnpvm-migration-allowed: Booleaanse waarde die aangeeft of ondersteuning voor AMD SEV-SNP-migratie is ingeschakeld
  • x-ms-sevsnpvm-reportdata: gegevens die door HCL worden doorgegeven om in het rapport te worden opgenomen, om te controleren of de overdrachtssleutel en VM-configuratie juist zijn
  • x-ms-sevsnpvm-reportid: rapport-id van de gast
  • x-ms-sevsnpvm-smt-allowed: Booleaanse waarde die aangeeft of SMT is ingeschakeld op de host
  • x-ms-sevsnpvm-snpfw-svn: AMD firmware security version number (SVN)
  • x-ms-sevsnpvm-tee-svn: AMD TEE Security Version Number (TEE) security version number (SVN)
  • x-ms-sevsnpvm-vmpl: VMPL die dit rapport heeft gegenereerd (0 voor HCL)

TPM- en VBS-attestation

  • cnf (bevestiging): de 'cnf'-claim wordt gebruikt om de sleutel voor het bewijs van bezit te identificeren. Bevestigingsclaim zoals gedefinieerd in RFC 7800, bevat het openbare deel van de geteste enclavesleutel die wordt weergegeven als een JSON-websleutelobject (JWK) (RFC 7517)
  • rp_data (relying party-gegevens): Relying Party-gegevens, indien aanwezig, opgegeven in de aanvraag, die door de relying party worden gebruikt als nonce om de actualiteit van het rapport te garanderen. rp_data wordt alleen toegevoegd als er rp_data

Eigenschapsclaims

TPM- en VBS-attestation

  • report_validity_in_minutes: een claim met een geheel getal om aan te geven hoe lang het token geldig is.
    • Standaardwaarde (tijd) : Eén dag in minuten.
    • Maximale waarde (tijd) : Één jaar in minuten.
  • omit_x5c: Een Booleaanse claim die aangeeft of het certificaat dat wordt gebruikt voor het controleren van de service-authenticiteit, door Azure Attestation moet worden weggelaten. Indien true, wordt x5t toegevoegd aan het Attestation-token. Indien false, wordt x5c toegevoegd aan het Attestation-token.

Volgende stappen