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 Vaultba történő importálásának specifikációit ismerteti.
Eset
Egy Key Vault-ügyfél biztonságosan át szeretne vinni egy kulcsot a helyszíni HSM-ből az Azure-on kívülről a HSM-hez, amely az Azure Key Vaultot védi. A Key Vaulton kívül létrehozott kulcs importálásának folyamatát általában a Saját kulcs használata (BYOK) néven említik.
A követelmények a következők:
- Az átvitt kulcs soha nem létezik egyszerű szöveges formában egy 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 | Kulcs típusa | Forrás | Description |
---|---|---|---|
Kulcscserekulcs (KEK) | RSA | Azure Key Vault HSM | Az Azure Key Vaultban létrehozott HSM-alapú RSA-kulcspár |
Körbefuttatási kulcs | AES | SzállítóI HSM | A HSM által a helyszíni HSM által létrehozott [rövid élettartamú] AES-kulcs |
Célkulcs | RSA, EC, AES (csak felügyelt HSM) | SzállítóI HSM | Az Azure Key Vault HSM-be átvitt kulcs |
Kulcscserekulcs: Egy HSM-alapú kulcs, amelyet az ügyfél a BYOK-kulcs importálását tartalmazó kulcstartóban hoz létre. Ennek a KEK-nek a következő tulajdonságokkal kell rendelkeznie:
- RsA-HSM-kulcs (4096 bites, 3072 bites vagy 2048 bites)
- Rögzített key_ops (CSAK "importálás"), amely lehetővé teszi, hogy CSAK a BYOK során használja
- 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 BYOK-eszköz által biztosított HSM-szállító használata – Importálja a KEK-et 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 Vaultba.
Az ügyfelek a HSM szállítója á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 kulcsra, beleértve a következőket:
- Előfordulhat, hogy a HSM-et konfigurálni kell a kulcsburkoláson alapuló exportálás engedélyezéséhez
- Lehetséges, hogy a célkulcsot CKA_EXTRACTABLE kell megjelölni a HSM számára a szabályozott exportálás engedélyezéséhez
- Bizonyos esetekben előfordulhat, hogy a KEK-t és a burkolókulcsot CKA_TRUSTED kell megjelölni. Ez lehetővé teszi, hogy kulcsokat tördeljen a HSM-ben.
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 a BYOK-eszközhöz mellékelt dokumentációt, amely tartalmazza az ilyen konfigurációs lépéseket.
Megjegyzés
Az alábbiakban ismertetett 1., 2. és 4. lépés más felületeken is végrehajtható, például az Azure PowerShell és az Azure Portal használatával. A Key Vault SDK-ban az egyenértékű függvények használatával programozott módon is végrehajthatók.
1. lépés: KEK létrehozása
Az az keyvault key create paranccsal hozza létre az importálásra beállított kulcsműveletekkel rendelkező KEK-t. 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
2. lépés: A KEK nyilvános kulcsának lekérése
Töltse le a KEK nyilvános kulcs részét, és tárolja egy PEM-fájlban.
az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem
3. lépés: 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özzel fog létrehozni egy kulcsátviteli blobot (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 a PKCS#11 CKM_RSA_AES_KEY_WRAP mechanizmust szeretné használni a célkulcs Azure Key Vaultba való átviteléhez, 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 élettartamú. Ez a mechanizmus jelenleg nem érhető el egyes HSM-ekben, de a célkulcs és a CKM_AES_KEY_WRAP_PAD AES-kulccsal 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 a PKCS#8 fájlba van csomagolva [RFC5208]
- EC-kulcs esetén az ASN.1 DER kódolású [RFC5915] titkos kulcs a PKCS#8 fájlba van csomagolva [RFC5208]
- Oktettkulcs esetén a kulcs nyers bájtja
Az egyszerű szöveges kulcs bájtja ezután a CKM_RSA_AES_KEY_WRAP mechanizmussal lesz átalakítva:
- A rövid élettartamú AES-kulcs a burkoló RSA-kulccsal jön létre és titkosítva 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 kitöltés használatával.
- A titkosított AES-kulcs és a titkosított egyszerű szöveges kulcs összefűzve hozza létre a végső titkosítószöveg-blobot.
Az átviteli blob formátuma elsősorban JSON Web Encryption kompakt szerializálást (RFC7516) használ a szükséges metaadatok szolgáltatáshoz való megfelelő visszafejtéséhez.
Ha CKM_RSA_AES_KEY_WRAP_PAD használ, az átviteli blob JSON-szerializálása a következő lenne:
{
"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én 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 rejtjelszö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 hibaelhárításhoz és támogatáshoz használhatók.
A JSON-blob egy ".byok" kiterjesztésű fájlban van tárolva, így az Azure PowerShell-/CLI-ügyfelek megfelelően kezelik az Add-AzKeyVaultKey (PSH) vagy az "az keyvault key import" (CLI) parancsok használatakor.
4. lépés: Kulcsátviteli blob feltöltése a HSM-key importálásához
Az ügyfél átviszi a kulcsátviteli blobot (".byok" fájlt) egy online munkaállomásra, majd futtat egy az keyvault kulcsimportálási parancsot a blob új HSM-alapú kulcsként való importálásához a Key Vaultba.
RSA-kulcs importálásához használja az alábbi parancsot:
az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok --ops encrypt decrypt
Az 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érelem törzse 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 KeyTransferPackage-ContosoFirstHSMkey.byok teljes tartalma, base64 formátumban kódolva.
Hivatkozások
Következő lépések
- Részletes útmutató BYOK-utasításokhoz: HSM által védett kulcsok importálása a Key Vaultba (BYOK)