Megosztás a következőn keresztül:


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:

  1. KEK létrehozása.
  2. Kérje le a KEK nyilvános kulcsát.
  3. 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.
  4. 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