Saját kulcs használatának specifikációja
Ez a dokumentum az ügyfelek helyszíni HSM-jeiből a Key Vaultba való HSM által védett kulcsok 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 az Azure Key Vault HSM-háttérrendszerébe. A Key Vaulton kívül létrehozott kulcs importálásának folyamatát saját kulcs (BYOK) néven nevezzük.
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 | Eredet | Leírás |
---|---|---|---|
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 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 továbbítandó kulcs |
Kulcscserekulcs: Egy HSM-alapú kulcs, amelyet az ügyfél abban a kulcstartóban hoz létre, amelyben a BYOK-kulcs importálva lesz. 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 használja
- Ugyanabban a tárolóban kell lennie, ahol a célkulcs importálva lesz
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öz használata – 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 Vaultba.
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
- Lehetséges, hogy a célkulcsot meg kell jelölni CKA_EXTRACTABLE 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, 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-gyártó olyan dokumentációt készítsen, amely tartalmazza a BYOK-eszközt, és tartalmazza az ilyen konfigurációs lépéseket.
Feljegyzés
Ezen lépések közül több más felülettel is elvégezhető, például az Azure PowerShell és az Azure Portal használatával. A Key Vault SDK egyenértékű függvényeivel programozott módon is elvégezhetők.
KEK létrehozása
Az az keyvault key create paranccsal hozza létre a KEK-t 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
Feljegyzés
A szolgáltatások különböző KEK-hosszokat támogatnak; Az 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 által biztosított HSM-szállítóval
Az ügyfél a HSM Vendor által biztosított BYOK-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 ideig tart. Ez a mechanizmus jelenleg nem érhető el egyes HSM-ekben, de a célkulcs és az AES-kulcs CKM_AES_KEY_WRAP_PAD é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ú titkos kulcs [RFC3447] pKCS#8 [RFC5208]
- EC-kulcs esetén az ASN.1 DER kódolási [RFC5915] titkos kulcs a PKCS#8 fájlba burkolva [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 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 hozza létre a végső rejtjeles blobot.
Az átviteli blob formátuma A JSON Web Encryption kompakt szerializálást (RFC7516) használ elsősorban a szükséges metaadatok szolgáltatáshoz való továbbításához a megfelelő visszafejtéshez.
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. A 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 rejtjelszöveget, amely pontosan ábrázolja 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-blobot egy ".byok" kiterjesztésű fájl tárolja, így az 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-kulcs 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 ezt a 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 egy REST API-kérést küld az alábbiak szerint:
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 base64 formátumban kódolt teljes tartalma.
Hivatkozások
Következő lépések
- Részletes BYOK-utasítások: HSM által védett kulcsok importálása a Key Vaultba (BYOK)