Saját kulcs használatának specifikációja
Ez a dokumentum a HSM által védett kulcsok ügyfelek helyszíni HSM-jeiből a Key Vault való importálásának specifikációit ismerteti.
Eset
Egy Key Vault ügyfél biztonságosan át szeretne helyezni egy kulcsot a helyszíni HSM-ről az Azure-on kívül, a HSM-háttérrendszerbe az Azure Key Vault. A Key Vault kívül létrehozott kulcs importálásának folyamatát saját kulcs (BYOK) néven is említik.
A követelmények a következők:
- Az átvitt kulcs soha nem létezik egyszerű szöveges formában a HSM-en kívül.
- A HSM-en kívül az átvitt kulcsot mindig az Azure Key Vault HSM-ben tárolt kulcs védi
Terminológia
Kulcs neve | Kulcstípus | Forrás | Description |
---|---|---|---|
Kulcscserekulcs (KEK) | RSA | Azure Key Vault HSM | Az Azure Key Vault-ben létrehozott HSM-alapú RSA-kulcspár |
Körbefuttatási kulcs | AES | SzállítóI HSM | A helyszíni HSM által létrehozott [rövid élettartamú] AES-kulcs |
Célkulcs | RSA, EC, AES (csak felügyelt HSM esetén) | SzállítóI HSM | Az Azure Key Vault HSM-be áthelyezendő kulcs |
Kulcscserekulcs: Az ügyfél által a BYOK-kulcsot importáló kulcstartóban létrehozott HSM-alapú kulcs. Ennek a KEK-nek a következő tulajdonságokkal kell rendelkeznie:
- RSA-HSM-kulcs (4096 bites vagy 3072 bites vagy 2048 bites)
- Rögzített key_ops (CSAK "importálás"), amely lehetővé teszi, hogy csak a BYOK alatt lehessen használni
- Ugyanabban a tárolóban kell lennie, ahol a célkulcsot importálni fogja
Felhasználói lépések
Kulcsátvitel végrehajtásához a felhasználó a következő lépéseket hajtja végre:
- KEK létrehozása.
- Kérje le a KEK nyilvános kulcsát.
- A HSM szállító által biztosított BYOK eszközzel – Importálja a KEK-t a cél HSM-be, és exportálja a KEK által védett célkulcsot.
- Importálja a védett célkulcsot az Azure Key Vault.
Az ügyfelek a HSM-szállító által biztosított BYOK eszközt és dokumentációt használják a 3. lépés végrehajtásához. Létrehoz egy kulcsátviteli blobot (egy ".byok" fájlt).
HSM-korlátozások
A meglévő HSM korlátozásokat alkalmazhat az általuk kezelt kulcsokra, beleértve a következőket:
- Előfordulhat, hogy a HSM-et konfigurálni kell a kulcsburkolásalapú exportálás engedélyezéséhez
- Előfordulhat, hogy a célkulcsot meg kell jelölni CKA_EXTRACTABLE a HSM számára az ellenőrzött exportálás engedélyezéséhez
- Bizonyos esetekben előfordulhat, hogy a KEK-et és a burkolókulcsot CKA_TRUSTED kell megjelölni, ami lehetővé teszi a kulcsok HSM-ben való körbefuttatását.
A forrás HSM konfigurációja általában kívül esik ezen specifikáció hatókörén. A Microsoft elvárja, hogy a HSM szállítója készítsen dokumentációt a BYOK-eszközhöz, hogy tartalmazza az ilyen konfigurációs lépéseket.
Megjegyzés
Ezek közül a lépések közül több más felületen is elvégezhető, például Azure PowerShell és Azure Portal használatával. A Key Vault SDK-ban a megfelelő függvények használatával programozott módon is elvégezhetők.
KEK létrehozása
Az az keyvault key create paranccsal hozza létre a KEK-t az importálásra beállított kulcsműveletekkel. Jegyezze fel az alábbi parancsból visszaadott "kid" kulcsazonosítót.
az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM
Megjegyzés
A szolgáltatások különböző KEK-hosszokat támogatnak; Azure SQL például csak a 2048 vagy 3072 bájtos kulcshosszokat támogatja. A részletekért tekintse meg a szolgáltatás dokumentációját.
A KEK nyilvános kulcsának lekérése
Töltse le a KEK nyilvános kulcsrészét, és tárolja egy PEM-fájlban.
az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem
Kulcsátviteli blob létrehozása a BYOK-eszköz által biztosított HSM-szállítóval
Az ügyfél a BYOK által biztosított HSM Vendor eszközt fogja használni egy kulcsátadási blob létrehozásához (amely ".byok" fájlként van tárolva). A KEK nyilvános kulcs (.pem fájlként) az eszköz egyik bemenete lesz.
Kulcsátviteli blob
A Microsoft hosszú távon pKCS#11 CKM_RSA_AES_KEY_WRAP mechanizmussal szeretné átadni a célkulcsot az Azure Key Vault mivel ez a mechanizmus egyetlen blobot hoz létre, és ami még fontosabb, a köztes AES-kulcsot a két HSM kezeli, és garantáltan rövid ideig tart. Ez a mechanizmus jelenleg nem érhető el egyes HSM-ekben, de a célkulcs AES-kulc CKM_AES_KEY_WRAP_PAD csal való védelme és az AES-kulcs CKM_RSA_PKCS_OAEP való védelme egyenértékű blobot eredményez.
A célkulcs egyszerű szövege a kulcs típusától függ:
- RSA-kulcs esetén az ASN.1 DER kódolású [RFC3447] titkos kulcs be van csomagolva a PKCS#8 fájlba [RFC5208]
- EC-kulcs esetén az ASN.1 DER kódolású [RFC5915] titkos kulcs be van csomagolva a PKCS#8 fájlba [RFC5208]
- Oktettkulcs esetén a kulcs nyers bájtja
A egyszerű szöveges kulcs bájtja ezután a CKM_RSA_AES_KEY_WRAP mechanizmussal lesz átalakítva:
- A rendszer létrehoz és titkosít egy rövid élettartamú AES-kulcsot a burkoló RSA-kulccsal az RSA-OAEP és az SHA1 használatával.
- A kódolt egyszerű szöveges kulcs az AES-kulccsal van titkosítva az AES-kulcsburkolás és a padding használatával.
- A titkosított AES-kulcs és a titkosított egyszerű szöveges kulcs összefűzve jelenik meg a végső titkosítószöveg-blob létrehozásához.
Az átviteli blob formátuma JSON Web Encryption kompakt szerializálást (RFC7516) használ elsősorban a szükséges metaadatok szolgáltatásba való megfelelő visszafejtéséhez.
Ha CKM_RSA_AES_KEY_WRAP_PAD használ, az átviteli blob JSON-szerializálása a következő:
{
"schema_version": "1.0.0",
"header":
{
"kid": "<key identifier of the KEK>",
"alg": "dir",
"enc": "CKM_RSA_AES_KEY_WRAP"
},
"ciphertext":"BASE64URL(<ciphertext contents>)",
"generator": "BYOK tool name and version; source HSM name and firmware version"
}
- kid = a KEK kulcsazonosítója. Key Vault kulcsok esetében a következőképpen néz ki:https://ContosoKeyVaultHSM.vault.azure.net/keys/mykek/eba63d27e4e34e028839b53fac905621
- alg = algoritmus.
- dir = Közvetlen mód, azaz a hivatkozott gyermek közvetlenül védi a titkosítószöveget, amely a CKM_RSA_AES_KEY_WRAP
- generator = egy információs mező, amely a BYOK eszköz nevét és verzióját, valamint a forrás HSM gyártóját és modelljét jelöli. Ezek az információk a hibaelhárításhoz és támogatáshoz használhatók.
A JSON-blob egy ".byok" kiterjesztésű fájlban van tárolva, így a Azure PowerShell/CLI-ügyfelek megfelelően kezelik azt az Add-AzKeyVaultKey (PSH) vagy az az keyvault key import (CLI) parancsok használatakor.
Kulcsátviteli blob feltöltése a HSM-key importálásához
Az ügyfél átviszi a kulcsátadási blobot (".byok" fájlt) egy online munkaállomásra, majd futtat egy az keyvault key import parancsot a blob új HSM-alapú kulcsként való importálásához a Key Vault.
RSA-kulcs importálásához használja a következő parancsot:
az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok --ops encrypt decrypt
Ec-kulcs importálásához meg kell adnia a kulcs típusát és a görbe nevét.
az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file --kty EC-HSM --curve-name "P-256" KeyTransferPackage-ContosoFirstHSMkey.byok --ops sign verify
A fenti parancs végrehajtása után a következőképpen küldi el a REST API-kérést:
PUT https://contosokeyvaulthsm.vault.azure.net/keys/ContosoFirstHSMKey?api-version=7.0
Kérelemtörzs RSA-kulcs importálásakor:
{
"key": {
"kty": "RSA-HSM",
"key_ops": [
"decrypt",
"encrypt"
],
"key_hsm": "<Base64 encoded BYOK_BLOB>"
},
"attributes": {
"enabled": true
}
}
Kérelem törzse EC-kulcs importálásakor:
{
"key": {
"kty": "EC-HSM",
"crv": "P-256",
"key_ops": [
"sign",
"verify"
],
"key_hsm": "<Base64 encoded BYOK_BLOB>"
},
"attributes": {
"enabled": true
}
}
A "key_hsm" érték a Base64 formátumban kódolt KeyTransferPackage-ContosoFirstHSMkey.byok teljes tartalma.
Hivatkozások
Következő lépések
- Részletes BYOK-utasítások: HSM által védett kulcsok importálása Key Vault (BYOK)