Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Microsoft Azure-igazolás erős biztonságot garantál egy megbízhatósági lánc ellenőrzésével, amely a megbízhatóság gyökerétől (TPM) a hipervizor elindításáig és a biztonságos kernel elindításáig tart. Ehhez az Azure-igazolásnak igazolnia kell a gép rendszerindítási állapotát, mielőtt megbízhatóságot alakíthatnánk ki a biztonságos enklávéban. Az operációs rendszert, a hipervizort és a biztonságos kernel bináris fájljait a megfelelő hivatalos Microsoft-hatóságoknak kell aláírnia, és biztonságos módon kell konfigurálnia. Miután megkötöttük a megbízhatóságot a megbízható platformmodul (TPM) és a hipervizor állapota között, megbízhatunk a Virtualization Based Security (VBS) által a mért rendszerindítási naplóban biztosított enklávéazonosítókban. Ezzel ellenőrizheti, hogy az enklávé egy kulcspárt hozott-e létre, és létrehoz egy igazolási jelentést, amely megköti az adott kulcs megbízhatóságát, és más jogcímeket, például a biztonsági szintet és a rendszerindítási igazolási tulajdonságokat tartalmaz.
A VBS-enklávékhoz TPM szükséges a biztonsági alap ellenőrzéséhez szükséges mérés biztosításához. A VBS-enklávékat a TPM-végpont igazolja a kérelemobjektum hozzáadásával a protokollban.
Protokollüzenetek
A protokoll két üzenetcserével rendelkezik:
- Init-üzenet
- Üzenet kérése
Init-üzenet
Üzenet a kérelemüzenet környezetének létrehozásához.
Irány
Ügyfél –> Azure-igazolás
Hasznos adat
{
"type": "aikcert"
}
"type" (ASCII-sztring): a kért igazolás típusát jelöli. Jelenleg csak az "aikcert" támogatott.
Kihívás üzenete
Irány
Azure-igazolás –> Ügyfél
Hasznos adat
{
"challenge": "<BASE64URL(CHALLENGE)>",
"service_context": "<BASE64URL(SERVICECONTEXT)>"
}
challenge (BASE64URL(OCTETS)): A szolgáltatás által kibocsátott véletlenszerű érték.
service_context (BASE64URL(OCTETS)): A szolgáltatás által létrehozott átlátszatlan környezet.
Üzenet kérése
Az igazolási szolgáltatás által igazolni kívánt adatokat tartalmazó hasznos adat.
Megjegyzés: Az IMA mérési naplóinak és kulcsainak támogatása hozzá lett adva a Kérés üzenethez, és megtalálható a 2. kérésüzenet v2 szakaszában.
1. üzenet kérése
Irány
Ügyfél –> Azure-igazolás
Hasznos adat
{
"request": "<JWS>"
}
request (JWS): A kérelem JSON webes aláírási (JWS) struktúrából áll. A JWS által védett fejléc és A JWS hasznos adatai az alábbiakban láthatók. Mint minden JWS-struktúrában, a végső érték a következőkből áll:
BASE64URL(UTF8(JWS védett fejléc)) || '.' ||
BASE64URL(JWS Payload) || '.' ||
BASE64URL(JWS-aláírás)
JWS által védett fejléc
{
"alg": "PS256",
"typ": "attReq"
// no "kid" parameter as the key specified by attest_key MUST sign this JWS to prove possession.
}
JWS hasznos adatok
A JWS hasznos adatai lehetnek egyszerű vagy VBS típusúak. Alapszintű, ha az igazolási bizonyíték nem tartalmaz VBS-adatokat.
Csak TPM-minta:
{
"att_type": "basic",
"att_data": {
"rp_id": "<URL>",
"rp_data": "<BASE64URL(RPCUSTOMDATA)>",
"challenge": "<BASE64URL(CHALLENGE)>",
"tpm_att_data": {
"srtm_boot_log": "<BASE64URL(SRTMBOOTLOG)>",
"srtm_resume_log": "<BASE64URL(SRTMRESUMELOG)>",
"drtm_boot_log": "<BASE64URL(DRTMBOOTLOG)>",
"drtm_resume_log": "<BASE64URL(DRTMRESUMELOG)>",
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"current_claim": "<BASE64URL(CURRENTCLAIM)>",
"boot_claim": "<BASE64URL(BOOTCLAIM)>"
},
// attest_key is represented as a JSON Web Key (JWK) object (RFC 7517).
"attest_key": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"custom_claims": [
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
},
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
}
],
"service_context": "<BASE64URL(SERVICECONTEXT)>"
}
}
TPM + VBS enklávé minta:
{
"att_type": "vbs",
"att_data": {
"report_signed": {
"rp_id": "<URL>",
"rp_data": "<BASE64URL(RPCUSTOMDATA)>",
"challenge": "<BASE64URL(CHALLENGE)>",
"tpm_att_data": {
"srtm_boot_log": "<BASE64URL(SRTMBOOTLOG)>",
"srtm_resume_log": "<BASE64URL(SRTMRESUMELOG)>",
"drtm_boot_log": "<BASE64URL(DRTMBOOTLOG)>",
"drtm_resume_log": "<BASE64URL(DRTMRESUMELOG)>",
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"current_claim": "<BASE64URL(CURRENTCLAIM)>",
"boot_claim": "<BASE64URL(BOOTCLAIM)>"
},
// attest_key is represented as a JSON Web Key (JWK) object (RFC 7517).
"attest_key": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"custom_claims": [
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
},
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
}
],
"service_context": "<BASE64URL(SERVICECONTEXT)>"
},
"vsm_report": "<BASE64URL(REPORT)>"
}
}
rp_id (StringOrURI): Függő entitás azonosítója. A szolgáltatás a gépazonosító-jogcím számításában használja
rp_data (BASE64URL(OCTETS)): A függő entitás által átadott átlátszatlan adatok. Ezt a függő entitás általában nonce-ként használja a jelentés frissességének garantálására
challenge (BASE64URL(OCTETS)): A szolgáltatás által kibocsátott véletlenszerű érték
tpm_att_data: TPM-hez kapcsolódó igazolási adatok
srtm_boot_log (BASE64URL(OCTETS)): SRTM rendszerindítási naplók a függvény által lekért Tbsi_Get_TCG_Log_Ex naplótípus = TBS_TCGLOG_SRTM_BOOT
srtm_resume_log (BASE64URL(OCTETS)): Az SRTM a naplót a függvény által lekért módon folytatja, Tbsi_Get_TCG_Log_Ex naplótípus = TBS_TCGLOG_SRTM_RESUME
drtm_boot_log (BASE64URL(OCTETS)): DRTM rendszerindítási naplók a függvény által lekért Tbsi_Get_TCG_Log_Ex naplótípus = TBS_TCGLOG_DRTM_BOOT
drtm_resume_log (BASE64URL(OCTETS)): A DRTM a naplót a függvény által lekért módon folytatja, Tbsi_Get_TCG_Log_Ex naplótípus = TBS_TCGLOG_DRTM_RESUME
aik_cert (BASE64URL(OCTETS)): Az AIK X.509-tanúsítványa az NCryptGetProperty függvény által visszaadott= NCRYPT_CERTIFICATE_PROPERTY
aik_pub: Az AIK nyilvános része JSON Web Key (JWK) objektumként (RFC 7517)
current_claim (BASE64URL(OCTETS)): Az NCryptCreateClaim függvény által visszaadott jelenlegi PCR-állapot igazolási jogcíme a dwClaimType = NCRYPT_CLAIM_PLATFORM és a NCRYPTBUFFER_TPM_PLATFORM_CLAIM_PCR_MASK paraméter, amely az összes PCR-t tartalmazza. A szolgáltatás által küldött kihívást is fel kell használni ennek a jogcímnek a kiszámításához
boot_claim (BASE64URL(OCTETS)): A PCR-állapot igazolási jogcíme a rendszerindításkor az NCryptCreateClaim függvény által visszaadott dwClaimType = NCRYPT_CLAIM_PLATFORM és a NCRYPTBUFFER_TPM_PLATFORM_CLAIM_PCR_MASK paraméter által visszaadott igazolási jogcím, amely az összes PCR-t tartalmazza
vsm_report (BASE64URL(OCTETS)): A VBS enklávé igazolási jelentése az EnclaveGetAttestationReport függvény által visszaadott módon. Az EnclaveData paraméternek a report_signed értékének SHA-512 kivonatának kell lennie (beleértve a nyitó és záró zárójeleket is). A kivonatfüggvény bemenete UTF8(report_signed)
attest_key: Az enklávékulcs nyilvános része JSON-webkulcsként (JWK) (RFC 7517)
custom_claims: A szolgáltatásnak küldött egyéni enklávé jogcímek tömbje, amelyeket a szabályzat kiértékelhet. A jogcím
name (String): A jogcím neve. Ez a név hozzá lesz fűzve az Igazolási szolgáltatás által meghatározott URL-címhez (az ütközések elkerülése érdekében), és az összefűzött sztring lesz a szabályzatban használható jogcím típusa
érték (sztring): A jogcím értéke
value_type (sztring): A jogcím értékének adattípusa
service_context (BASE64URL(OCTETS)): A szolgáltatás által létrehozott átlátszatlan környezet.
Jelentésüzenet
Irány
Azure-igazolás –> Ügyfél
Hasznos adat
{
"report": "<JWT>"
}
jelentés (JWT): Az igazolási jelentés JSON Web Token (JWT) formátumban (RFC 7519).
2. üzenet kérése
{
"request": "<JWS>"
}
request (JWS): A kérelem JSON webes aláírási (JWS) struktúrából áll. A JWS által védett fejléc és A JWS hasznos adatai az alábbiakban láthatók. Mint minden JWS-struktúrában, a végső érték a következőkből áll: BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS-aláírás)
JWS által védett fejléc
{
"alg": "PS256",
"typ": "attReqV2"
// no "kid" parameter as the key specified by request_key MUST sign this JWS to prove possession.
}
JWS hasznos adatok
A JWS hasznos adatai lehetnek egyszerű vagy vsm típusúak. Alapszintű, ha az igazolási bizonyíték nem tartalmaz VSM-adatokat.
Egyszerű példa:
{
"att_type": "basic",
"att_data": {
"rp_id": "<URL>",
"rp_data": "<BASE64URL(RPCUSTOMDATA)>",
"challenge": "<BASE64URL(CHALLENGE)>",
"tpm_att_data": {
"current_attestation": {
"logs": [
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG1)>"
},
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG2)>"
},
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG3)>"
}
],
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"pcrs": [
{
"algorithm": 4, // TPM_ALG_SHA1
"values": [
{
"index": 0,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 5,
"digest": "<BASE64URL(DIGEST)>"
}
]
},
{
"algorithm": 11, // TPM_ALG_SHA256
"values": [
{
"index": 2,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 1,
"digest": "<BASE64URL(DIGEST)>"
}
]
}
],
"quote": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
},
"boot_attestation": {
"logs": [
{
"type": "TCG",
"log": "<BASE64URL(BOOT_LOG1)>"
},
{
"type": "TCG",
"log": "<BASE64URL(BOOT_LOG2)>"
}
],
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"pcrs": [
{
"algorithm": 4, // TPM_ALG_SHA1
"values": [
{
"index": 0,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 5,
"digest": "<BASE64URL(DIGEST)>"
}
]
},
{
"algorithm": 11, // TPM_ALG_SHA256
"values": [
{
"index": 2,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 1,
"digest": "<BASE64URL(DIGEST)>"
}
]
}
],
"quote": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
}
},
"request_key": {
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_quote": {
"hash_alg": "sha-256"
}
}
},
"other_keys": [
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_certify": {
"public": "<BASE64URL(TPMT_PUBLIC)>",
"certification": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
}
}
},
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
}
}
],
"custom_claims": [
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
},
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
}
],
"service_context": "<BASE64URL(SERVICECONTEXT)>"
}
}
TPM + VBS enklávé példa:
{
"att_type": "vbs",
"att_data": {
"report_signed": {
"rp_id": "<URL>",
"rp_data": "<BASE64URL(RPCUSTOMDATA)>",
"challenge": "<BASE64URL(CHALLENGE)>",
"tpm_att_data": {
"current_attestation": {
"logs": [
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG1)>"
},
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG2)>"
},
{
"type": "TCG",
"log": "<BASE64URL(CURRENT_LOG3)>"
}
],
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"pcrs": [
{
"algorithm": 4, // TPM_ALG_SHA1
"values": [
{
"index": 0,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 5,
"digest": "<BASE64URL(DIGEST)>"
}
]
},
{
"algorithm": 11, // TPM_ALG_SHA256
"values": [
{
"index": 2,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 1,
"digest": "<BASE64URL(DIGEST)>"
}
]
}
],
"quote": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
},
"boot_attestation": {
"logs": [
{
"type": "TCG",
"log": "<BASE64URL(BOOT_LOG1)>"
},
{
"type": "TCG",
"log": "<BASE64URL(BOOT_LOG2)>"
}
],
"aik_cert": "<BASE64URL(AIKCERTIFICATE)>",
// aik_pub is represented as a JSON Web Key (JWK) object (RFC 7517).
"aik_pub": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"pcrs": [
{
"algorithm": 4, // TPM_ALG_SHA1
"values": [
{
"index": 0,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 5,
"digest": "<BASE64URL(DIGEST)>"
}
]
},
{
"algorithm": 11, // TPM_ALG_SHA256
"values": [
{
"index": 2,
"digest": "<BASE64URL(DIGEST)>"
},
{
"index": 1,
"digest": "<BASE64URL(DIGEST)>"
}
]
}
],
"quote": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
}
},
"request_key": {
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_quote": {
"hash_alg": "sha-256"
}
}
},
"other_keys": [
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_certify": {
"public": "<BASE64URL(TPMT_PUBLIC)>",
"certification": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
}
}
},
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
}
}
],
"custom_claims": [
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
},
{
"name": "<name>",
"value": "<value>",
"value_type": "<value_type>"
}
],
"service_context": "<BASE64URL(SERVICECONTEXT)>"
},
"vsm_report": {
"enclave": {
"report": "<BASE64URL(REPORT)>"
}
}
}
}
rp_id (StringOrURI): Függő entitás azonosítója. A szolgáltatás a gépazonosító-jogcím számításában használja.
rp_data (BASE64URL(OCTETS)): A függő entitás által átadott átlátszatlan adatok. Ezt a függő entitás általában nonce-ként használja a jelentés frissességének garantálására.
challenge (BASE64URL(OCTETS)): A szolgáltatás által kibocsátott véletlenszerű érték.
current_attestation (Objektum): Naplókat és TPM-idézeteket tartalmaz a rendszer aktuális állapotához (rendszerindítás vagy folytatás). A szolgáltatástól kapott nem szolgáltatásokat át kell adni a "qualifyingData" paraméter TPM2_Quote parancsának.
boot_attestation (Objektum): Ez nem kötelező, és naplókat és a rendszer hibernálása és folytatása előtt mentett TPM-idézetet tartalmazza. boot_attestation adatokat ugyanahhoz a hideg rendszerindítási ciklushoz kell társítani (vagyis a rendszer csak hibernált volt, és közöttük folytatódott).
naplók (Tömb(Objektum)): Naplók tömbje. A tömb minden eleme tartalmaz egy naplót, és a tömbnek a mérésekhez használt sorrendben kell lennie.
-
- type (String): A napló típusa: "TCG" vagy "IMA".
-
- log (BASE64URL(OCTETS)): A napló BASE64URL sztringként van kódolva.
aik_cert (BASE64URL(OCTETS)): Az AIK-t képviselő X.509-tanúsítvány.
aik_pub (JWK): Az AIK nyilvános része JSON Web Key (JWK) objektumként (RFC 7517).
pcrs (Array(Object)): Az idézett készletet tartalmazza. A tömb minden eleme egy PCR-bankot jelöl, és a tömbnek az idézőjel létrehozásához használt sorrendben kell lennie. A PCR-bankokat az algoritmusa és az értékei határozzák meg (csak az idézett értékek szerepelhetnek a listában).
-
- algoritmus (egész szám): A TPM_ALG_ID állandók által definiált kivonatoló algoritmust képviselő UINT16 érték.
-
- értékek (Tömb(Objektum)): Idézett kivonatértékek tömbje. A tömb minden eleme egy kivonatértéket jelöl a PCR-bankban.
-
-
- index (egész szám): A PCR kivonatoló értékének indexe.
-
-
-
- digest (BASE64URL(OCTETS)): Kivonatoló érték.
-
-
- quote (BASE64URL(OCTETS)): TPMS_ATTEST a TPM2_Quote parancs adja vissza. Ha ez a mező a "current_attestation" objektumban van, a szolgáltatástól kapott feladatot át kell adni a TPM2_Quote parancsnak a "qualifyingData" paraméterben. Az adott "qualifyingData" paraméter értéke a "request_key" kötési módszertől függ, és a KEY OBJECT szakaszban ismertetjük.
-
- aláírás (BASE64URL(OCTETS)): TPMT_SIGNATURE a TPM2_Quote parancs által visszaadott. Ha ez a mező a "current_attestation" objektumban van, a szolgáltatástól kapott feladatot át kell adni a TPM2_Quote parancsnak a "qualifyingData" paraméterben. Az adott "qualifyingData" paraméter értéke a "request_key" kötési módszertől függ, és a KEY OBJECT szakaszban ismertetjük.
vsm_report (VSM jelentésobjektum): A VSM igazolási jelentése. Lásd a VSM REPORT OBJECT szakaszt.
request_key (Kulcsobjektum): A kérés aláírásához használt kulcs. Ha egy TPM jelen van (a kérelem TPM-ajánlatot tartalmaz), request_key vagy idézőjelen keresztül kell a TPM-hez kötni, vagy a TPM-ben rezidensnek kell lennie (lásd: KEY OBJECT).
other_keys (Array(Key object)): A szolgáltatásnak küldendő kulcsok tömbje. Legfeljebb két kulcs.
custom_claims (Array(Object)): A szolgáltatásnak küldött egyéni enklávé jogcímek tömbje, amelyeket a szabályzat kiértékelhet.
name (String): A jogcím neve. Ez a név hozzá lesz fűzve az Igazolási szolgáltatás által meghatározott URL-címhez (az ütközések elkerülése érdekében), és az összefűzött sztring lesz a szabályzatban használható jogcím típusa.
érték (sztring): A jogcím értéke.
value_type (sztring): A jogcím értékének adattípusa.
service_context (BASE64URL(OCTETS)): A szolgáltatás által létrehozott átlátszatlan, titkosított környezet, amely magában foglalja többek között a kihívást és a feladat lejárati idejét.
Kulcsobjektum
jwk (Object): A kulcs nyilvános része JSON Web Key (JWK) objektumként (RFC 7517).
info (Object): További információ a kulcsról.
Nincs további információ:(Az információs objektum üres lehet, vagy hiányzik a kérésből)
• A TPM-hez kötött kulcs idézőjelen keresztül:
- tpm_quote (Objektum): A TPM idézőjelkötési metódusának adatai.
- hash_alg (sztring): A "qualifyingData" paraméterben a TPM2_Quote parancsnak átadott kivonat létrehozásához használt algoritmus. A kivonat kiszámítása a HASH[UTF8(jwk) || 0x00 || <OCTETS(szolgáltatás kihívás)>]. Megjegyzés: Az UTF8(jwk) pontosan a vezetékre küldött sztringnek kell lennie, mivel a szolgáltatás módosítás nélkül kiszámítja a kivonatot a kérelemben kapott pontos sztring alapján.
Megjegyzés: Ez a kötési módszer nem használható a other_keys tömb kulcsaihoz.
• A TPM-ben lakóhellyel rendelkező kulcs:
tpm_certify (Objektum): A TPM tanúsítványkötési módszerének adatai. "public" (BASE64URL(OCTETS)): TPMT_PUBLIC a kulcs nyilvános területét képviselő struktúra a TPM-ben.
minősítés (BASE64URL(OCTETS)): TPMS_ATTEST a TPM2_Certify parancs adja vissza. A szolgáltatástól kapott feladatot át kell adni a "qualifyingData" paraméter TPM2_Certify parancsának. A kulcs minősítéséhez a kérelemben megadott AIK-t kell használni.
signature (BASE64URL(OCTETS)): TPMT_SIGNATURE a TPM2_Certify parancs adja vissza. A szolgáltatástól kapott feladatot át kell adni a "qualifyingData" paraméter TPM2_Certify parancsának. A kulcs minősítéséhez a kérelemben megadott AIK-t kell használni.
Megjegyzés: Ha ezt a kötési módszert használja a request_key, a TPM2_Quote parancsnak átadott "qualifyingData" paraméter értéke egyszerűen a szolgáltatástól kapott kihívás.
Példák:
A TPM-hez nem kötött kulcs:
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
}
}
A TPM-hez idézőjelen keresztül kötött kulcs (vagy egy VBS-enklávéban tartózkodik, vagy nem):
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_quote":
"hash_alg": "sha-256"
}
}
}
A TPM-ben lakóhellyel rendelkező kulcs:
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_certify": {
"public": "<BASE64URL(TPMT_PUBLIC)>",
"certification": "<BASE64URL(TPMS_ATTEST)>",
"signature": "<BASE64URL(TPMT_SIGNATURE)>"
}
}
}
Szabályzatkulcs-objektum
A szabályzatkulcs-objektum a szabályzatban bemeneti jogcímként használt kulcsobjektum verziója. A szolgáltatást azért dolgozzák fel, hogy olvashatóbbá és könnyebben kiértékelhetővé tegyék a szabályzatszabályok.
• A kulcs nincs a TPM-hez kötve: Ugyanaz, mint a megfelelő kulcsobjektum. Példa:
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
}
}
• A TPM-hez idézőjelen keresztül kötött kulcs (vagy egy VBS-enklávéban tartózkodik, vagy nem): Ugyanaz, mint a megfelelő kulcsobjektum. Példa:
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_quote":
"hash_alg": "sha-256"
}
}
}
• A TPM-ben lakóhellyel rendelkező kulcs:
jwk (Object): Ugyanaz, mint a megfelelő kulcsobjektum. info.tpm_certify (objektum):
- name_alg (egész szám): A TPM_ALG_ID állandók által definiált kivonatoló algoritmust képviselő UINT16 érték.
- obj_attr (egész szám): A TPMA_OBJECT által definiált kulcsobjektum attribútumait képviselő UINT32 érték
- auth_policy (BASE64URL(OCTETS)): A kulcsobjektum használatához választható szabályzat.
Példa:
{
"jwk": {
"kty": "RSA",
"n": "<Base64urlUInt(MODULUS)>",
"e": "<Base64urlUInt(EXPONENT)>"
},
"info": {
"tpm_certify": {
"name_alg": 11, // 0xB (TPM_ALG_SHA256)
"obj_attr": 50, // 0x32 (fixedTPM | fixedParent | sensitiveDataOrigin)
"auth_policy": "<BASE64URL(AUTH_POLICY)>"
}
}
}
VBS jelentésobjektum
Enklávé igazolás:
enklávé (objektum): A VSM enklávé igazolásának adatai.
- jelentés (BASE64URL(OCTETS)): A VSM enklávé igazolási jelentése az EnclaveGetAttestationReport függvény által visszaadott módon. Az EnclaveData paraméternek a report_signed értékének SHA-512 kivonatának kell lennie (beleértve a nyitó és záró zárójeleket is). A kivonatfüggvény bemenete UTF8(report_signed).
Példák:
Enklávé igazolás:
{
"enclave": {
"report": "<BASE64URL(REPORT)>"
}
}
Jelentésüzenet
Irányigazolási szolgáltatás –> Ügyfél
Hasznos adat
{
"report": "<JWT>"
}
jelentés (JWT): Az igazolási jelentés JSON Web Token (JWT) formátumban (RFC 7519).