Claimsets
Claims die worden gegenereerd tijdens het attesting-enclaves met behulp van Microsoft Azure Attestation, kunnen worden onderverdeeld in de volgende categorieën:
- Binnenkomende claims: de claims die door Microsoft Azure Attestation worden gegenereerd na het parseren van het attestation-bewijs. De claims kunnen worden gebruikt door beleidsauteurs 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 voor het definiëren van autorisatieregels 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 voor de enclavecode ingeschakeld, waaronder 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. Indien ingeschakeld in een productieomgeving, worden SGX-beveiligingsgaranties niet bewaard.
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 enclaveauteur wijst een product-id toe aan elke enclave. Met de product-id kan de enclaveauteur enclaves segmenteren die zijn ondertekend met dezelfde MRSIGNER. Klanten kunnen een validatieregel toevoegen aan het attestation-beleid om te 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 identificeert.
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 vertrouwde binaire bestanden worden uitgevoerd in een enclave. Wanneer de beleidsclaim niet overeenkomt met de MRSIGNER van de enclaveauteur, betekent dit dat het binaire bestand van de enclave niet is ondertekend door een vertrouwde bron en dat de attestation mislukt.
Wanneer een enclaveauteur liever MRSIGNER draait om veiligheidsredenen, moet het 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.
Voor 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 enclavegeheugen zijn geladen.
MRENCLAVE is een van de enclavemetingen die kunnen worden gebruikt om de binaire bestanden van de enclave te controleren. Dit is de hash van de code die in de enclave wordt uitgevoerd. De meting verandert met elke wijziging in de binaire enclavecode. Door MRENCLAVE te valideren via een attestation-beleid, kunnen klanten controleren of de beoogde binaire bestanden in een enclave worden uitgevoerd. Aangezien MRENCLAVE echter regelmatig zal worden gewijzigd met een triviale wijziging in de bestaande code, is het raadzaam 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 enclaveauteur 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 verhoogd na een beveiligingsprobleem. Om te voorkomen dat er interactie is met onveilige enclavecode, kunnen klanten een validatieregel toevoegen in het attestation-beleid. Als de SVN van de enclavecode niet overeenkomt met de versie die door de auteur van de enclave wordt aanbevolen, mislukt attestation.
Deze claims worden beschouwd als afgeschaft, maar worden volledig ondersteund en blijven in de toekomst opgenomen. Het is raadzaam om de niet-afgeschafte claimnamen te gebruiken:
Afgeschafte claim | Aanbevolen claim |
---|---|
$is-foutopsporingsbaar | 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 voor het definiëren van autorisatieregels in een TPM-attestation-beleid:
- aikValidated: Booleaanse waarde die informatie bevat als het certificaat attestation Identity Key (AIK) valideert of niet.
- 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 die aangeeft 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 beleidsauteurs deze claims gebruiken om autorisatieregels te definiëren in een VBS-attestation-beleid:
- enclaveAuthorId: tekenreekswaarde met de gecodeerde base64Url-waarde van de enclave-auteur-id- De auteur-id van de primaire module voor de enclave.
- enclaveImageId: tekenreekswaarde met de base64Url-gecodeerde waarde van de enclave-installatiekopie-id- De afbeeldings-id van de primaire module voor de enclave.
- enclaveOwnerId: tekenreekswaarde met de base64Url gecodeerde waarde van de enclave-eigenaar-id- De id van de eigenaar van de enclave voor de enclave.
- enclaveFamilyId: tekenreekswaarde met de gecodeerde base64Url-waarde van de enclavefamilie-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
Algemeen voor alle attestation-typen
Azure Attestation bevat deze claims in het attestation-token voor alle attestation-typen:
- x-ms-ver: JWT-schemaversie (verwacht '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, van toepassing wanneer de klant een ondertekend beleid uploadt.
- x-ms-runtime: JSON-object met 'claims' die zijn gedefinieerd en gegenereerd in de geteste omgeving, een specialisatie van het concept 'enclave-gegevens' waarbij de 'enclave-gegevens' is 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.
Deze claimnamen worden gebruikt uit de JWT-specificatie van IETF.
- "jti" (JWT ID) Claim - unieke id voor de JWT.
- "iss" (Issuer) Claim - De principal die de JWT heeft uitgegeven.
- "iat" (Uitgegeven bij) Claim - het tijdstip waarop de JWT is uitgegeven.
- "exp" (verlooptijd) Claim - verlooptijd waarna de JWT niet mag worden geaccepteerd voor verwerking.
- "nbf" (Niet vóór) Claim - Niet vóór de tijd waarvoor de JWT niet mag worden geaccepteerd voor verwerking.
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 wordt geleverd.
Onderstaande claims worden beschouwd als afgeschaft, maar worden volledig ondersteund en blijven in de toekomst 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 claims 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 de enclave foutopsporing heeft ingeschakeld of niet.
- x-ms-sgx-product-id: product-id van de SGX-enclave.
- x-ms-sgx-mrsigner: hex gecodeerde waarde van het veld MRSIGNER van de offerte.
- x-ms-sgx-mrenclave: hex gecodeerde waarde van het veld MRSIGNER van de offerte.
- x-ms-sgx-svn: beveiligingsversienummer gecodeerd in de offerte.
- x-ms-sgx-ehd: enclave met gegevens die zijn opgemaakt als BASE64URL(enclavegegevens).
- x-ms-sgx-collateral: JSON-object met een beschrijving van het onderpand dat wordt gebruikt om attestation uit te voeren. De waarde voor de x-ms-sgx-onderpandclaim is een genest JSON-object met de volgende sleutel-/waardeparen:
- qeidcertshash: SHA256-waarde van QE-identiteit (Quoting Enclave) die certificaten uitgeeft.
- qeidcrlhash: SHA256-waarde van QE Identity die certificaat CRL-lijst 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 TCB-info die CRL-lijst uitgeeft.
- tcbinfohash: SHA256-waarde van het TCB Info-onderpand.
- 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 serverplatforms op basis van Intel® Xeon® Scalable 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 blijven in de toekomst opgenomen. Het is raadzaam om de niet-afgeschafte claimnamen te gebruiken:
Afgeschafte claim | Aanbevolen claim |
---|---|
$is-foutopsporingsbaar | 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-onderpand |
SEV-SNP-attestation
De volgende claims worden ook 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: Host Compatibility Layer (HCL) family identification string.
- x-ms-sevsnpvm-guestsvn: HCL-beveiligingsversienummer (SVN).
- x-ms-sevsnpvm-hostdata: willekeurige gegevens die zijn gedefinieerd door de host tijdens het starten van de VM.
- x-ms-sevsnpvm-idkeydigest: SHA384-hash van de identificatieondertekeningssleutel.
- 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 gastafbeelding.
- x-ms-sevsnpvm-microcode-svn: AMD microcode security version number (SVN).
- x-ms-sevsnpvm-migration-allowed: Booleaanse waarde die aangeeft of AMD SEV-SNP-migratieondersteuning is ingeschakeld.
- x-ms-sevsnpvm-reportdata: gegevens die door HCL worden doorgegeven om op te nemen met een rapport, om te controleren of 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 Trusted Execution Environment (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 bewijs-van-bezitssleutel te identificeren. Een bevestigingsclaim zoals gedefinieerd in RFC 7800 bevat het openbare deel van de Attestation-sleutelenclave die wordt weergegeven als een JSON Web Key (JWK)-object (RFC 7517).
- rp_data (relying party-gegevens): Relying party-gegevens, indien aanwezig, die zijn opgegeven in de aanvraag, die door de relying party worden gebruikt als een niet-ce om de nieuwheid van het rapport te garanderen. rp_data wordt alleen toegevoegd als er rp_data is.
Eigenschapsclaims
TPM- en VBS-attestation
- report_validity_in_minutes: Een geheel getalclaim om aan te geven hoe lang het token geldig is.
- Standaardwaarde (tijd): een dag in minuten.
- Maximumwaarde(tijd): één jaar in minuten.
- omit_x5c: Een Booleaanse claim die aangeeft of Azure Attestation het certificaat weglaat dat wordt gebruikt om de echtheid van de service te bewijzen. Indien waar, wordt x5t toegevoegd aan het attestation-token. Als false(standaard) wordt x5c toegevoegd aan het attestation-token.