Byok (Bring Your Own Key) configureren

Voltooid

Scenario

Een Key Vault-klant wil een sleutel veilig overdragen van hun on-premises HSM (Hardware Security Module) buiten Azure, naar de HSM-backing van Azure Key Vault. Het proces voor het importeren van een sleutel die buiten Key Vault wordt gegenereerd, wordt BYOK (Bring Your Own Key) genoemd.

Hier volgen de volgende vereisten:

  • De sleutel die moet worden overgedragen, bestaat nooit buiten een HSM in tekst zonder opmaak.
  • Buiten een HSM wordt de sleutel die moet worden overgedragen altijd beveiligd door een sleutel in de Azure Key Vault HSM.

Terminologie

Sleutelnaam Sleuteltype Oorprong Beschrijving
Key Exchange Key (KEK) RSA Azure Key Vault-HSM Een RSA-sleutelpaar met HSM-ondersteuning dat is gegenereerd in Azure Key Vault
Wrapping-sleutel AES HSM-leverancier Een [kortstondige] AES-sleutel gegenereerd door HSM on-premises
Doelsleutel RSA, EC, AES (alleen beheerde HSM) HSM-leverancier De sleutel die moet worden overgedragen naar de Azure Key Vault-HSM

Key Exchange Key (KEK): Dit is een door de klant gegenereerde sleutel met HSM-ondersteuning binnen de sleutelkluis die is bedoeld voor het importeren van de BYOK-sleutel (Bring Your Own Key). De KEK moet de volgende eigenschappen hebben:

  • Het moet een RSA-HSM-sleutel zijn, met een grootte van 4096-bits, 3072-bits of 2048-bits.
  • De belangrijkste bewerkingen (key_ops) zijn beperkt tot 'importeren', waardoor het gebruik uitsluitend tijdens het BYOK-proces mogelijk is.
  • Deze moet zich in dezelfde kluis bevinden waar de doelsleutel moet worden geïmporteerd.

Gebruikersstappen

Een sleuteloverdracht uitvoeren:

  1. Genereer KEK.
  2. Haal de openbare sleutel van de KEK op.
  3. Importeer de KEK in de doel-HSM en exporteert de doelsleutel die door de KEK wordt beveiligd met behulp van het BYOK-hulpprogramma van de HSM- leverancier.
  4. Importeer de beveiligde doelsleutel in Azure Key Vault.

Klanten gebruiken het BYOK-hulpprogramma en de documentatie van de HSM-leverancier om stap 3 te voltooien. Het produceert een sleuteloverdrachtblob (een byok-bestand).

HSM-beperkingen

De bestaande HSM kan beperkingen toepassen op de sleutel die ze beheren, waaronder:

  • De HSM moet mogelijk worden geconfigureerd om export op basis van sleutelterugloop toe te staan
  • De doelsleutel moet mogelijk worden gemarkeerd als Cryptoki Attribute (CKA)_EXTRACTABLE voor de HSM om gecontroleerde export toe te staan
  • In sommige gevallen moet de KEK- en wrapping-sleutel mogelijk worden gemarkeerd als CKA_TRUSTED, zodat deze kan worden gebruikt om sleutels in de HSM te verpakken.

De configuratie van de bron-HSM valt over het algemeen buiten het bereik van deze specificatie. Microsoft verwacht dat de HSM-leverancier documentatie produceert die bij hun BYOK-hulpprogramma hoort, zodat deze configuratiestappen moeten worden opgenomen.

Notitie

Verschillende van deze stappen kunnen worden uitgevoerd met behulp van andere interfaces, zoals Azure PowerShell en Azure Portal. Ze kunnen ook programmatisch worden uitgevoerd met behulp van equivalente functies in Key Vault SDK.

KEK genereren

Gebruik de opdracht az keyvault key create om KEK te maken met sleutelbewerkingen die zijn ingesteld om te importeren. Noteer de sleutel-id 'kid' die is geretourneerd door de onderstaande opdracht.

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM




Services ondersteunen verschillende KEK-lengten; Azure SQL ondersteunt bijvoorbeeld alleen sleutellengten van 2048 of 3072 bytes.

De openbare sleutel van de KEK ophalen

Download het openbare sleutelgedeelte van de KEK en sla deze op in een PEM-bestand.

az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem




Sleuteloverdrachtblob genereren met behulp van het BYOK-hulpprogramma van de HSM-leverancier

Gebruik het byOK-hulpprogramma van de HSM-leverancier om een blob voor sleuteloverdracht te maken (opgeslagen als een BYOK-bestand). Openbare KEK-sleutel als een . Privacy-Enhanced Mail (PEM-bestand) is een van de invoer voor dit hulpprogramma.

Sleuteloverdrachtblob

Op lange termijn wil Microsoft PKCS#11 CKM_RSA_AES_KEY_WRAP-mechanisme gebruiken om de doelsleutel over te dragen naar Azure Key Vault, omdat dit mechanisme één blob produceert en, belangrijker, de tussenliggende AES-sleutel wordt verwerkt door de twee HSM's en gegarandeerd kortstondig is. Dit mechanisme is momenteel niet beschikbaar in sommige HSM's, maar de combinatie van het beveiligen van de doelsleutel met CKM_AES_KEY_WRAP_PAD met behulp van een AES-sleutel en het beveiligen van de AES-sleutel met CKM_RSA_PKCS_OAEP produceert een equivalente blob.

De doelsleutel zonder opmaak is afhankelijk van het sleuteltype:

  • Voor een RSA-sleutel is de persoonlijke sleutel ASN.1 DER-codering [RFC3447] verpakt in PKCS#8 [RFC5208]
  • Voor een EC-sleutel is de persoonlijke sleutel ASN.1 DER-codering [RFC5915] verpakt in PKCS#8 [RFC5208]
  • Voor een octetsleutel zijn de onbewerkte bytes van de sleutel

De bytes voor de sleutel voor tekst zonder opmaak worden vervolgens getransformeerd met behulp van het CKM_RSA_AES_KEY_WRAP mechanisme:

  • Er wordt een kortstondige AES-sleutel gegenereerd en versleuteld met de wrapping RSA-sleutel met behulp van RSA-OAEP met SHA1.
  • De gecodeerde sleutel voor tekst zonder opmaak wordt versleuteld met behulp van de AES-sleutel met behulp van AES Key Wrap met opvulling.
  • De versleutelde AES-sleutel en de versleutelde sleutel voor tekst zonder opmaak worden samengevoegd om de uiteindelijke ciphertext-blob te produceren.

De indeling van de overdrachtsblob maakt gebruik van compacte serialisatie van JSON Web Encryption (RFC7516) voornamelijk als een voertuig voor het leveren van de vereiste metagegevens aan de service voor een juiste ontsleuteling.