Byok (Bring Your Own Key) configureren
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:
- Genereer KEK.
- Haal de openbare sleutel van de KEK op.
- 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.
- 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.