Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Dokument werden Spezifikationen für das Importieren von HSM-geschützten Schlüsseln aus den lokalen HSMs von Kunden in Key Vault beschrieben.
Szenario
Ein Key Vault-Kunde möchte einen Schlüssel sicher von ihrem lokalen HSM außerhalb von Azure in den HSM übertragen, der Azure Key Vault sichert. Der Vorgang zum Importieren eines Schlüssels, der außerhalb von Key Vault generiert wird, wird als Bring Your Own Key (BYOK) bezeichnet.
Dies sind die Anforderungen:
- Der zu übertragende Schlüssel ist niemals außerhalb eines HSM in Nur-Text-Form vorhanden.
- Außerhalb eines HSM wird der zu übertragende Schlüssel immer durch einen Schlüssel geschützt, der im Azure Key Vault HSM gespeichert ist.
Terminologie
| Schlüsselname | Schlüsseltyp | Ursprung | BESCHREIBUNG |
|---|---|---|---|
| Schlüsselaustauschschlüssel (Key Exchange Key, KEK) | RSA | Azure Key Vault-HSM | Dies ist ein durch HSM gestütztes RSA-Schlüsselpaar, das in Azure Key Vault generiert wurde. |
| Schlüssel zum Packen | AES (Advanced Encryption Standard) | Anbieter-HSM | Ein [ephemeral] AES-Schlüssel, der von hsM lokal generiert wird |
| Zielschlüssel | RSA, EC, AES (nur verwaltetes HSM) | Anbieter-HSM | Der Schlüssel, der an das Azure Key Vault-HSM übertragen werden soll |
Schlüsselaustauschschlüssel: Ein HSM-gesicherter Schlüssel, der vom Kunden im Schlüsseltresor generiert wird, in dem der BYOK-Schlüssel importiert wird. Dieser Schlüsselaustauschschlüssel (KEK) muss die folgenden Eigenschaften aufweisen:
- Es handelt sich um einen RSA-HSM Schlüssel (4096-Bit oder 3072-Bit oder 2048-Bit)
- Es verfügt über eine feste key_ops (NUR
import), mit der es NUR während BYOK verwendet werden kann - Muss sich im selben Tresor befinden, in dem der Zielschlüssel importiert wird
Benutzerschritte
Ein Benutzer muss für die Übertragung eines Schlüssels die folgenden Schritte ausführen:
- Generieren Sie einen KEK.
- Rufen Sie den öffentlichen Schlüssel des KEK ab.
- Verwenden Sie das vom HSM-Anbieter bereitgestellte BYOK-Tool. Importieren Sie den KEK in das Ziel-HSM, und exportieren Sie den durch den KEK geschützten Zielschlüssel.
- Importieren Sie den geschützten Zielschlüssel in Azure Key Vault.
Kunden verwenden das BYOK-Tool und die vom HSM-Anbieter bereitgestellte Dokumentation, um Schritt 3 abzuschließen. Ein Schlüsselübertragungsblob (BYOK-Datei) wird erstellt.
HSM-Einschränkungen
Ein vorhandenes HSM kann Einschränkungen für verwaltete Schlüssel anwenden. Dazu gehört Folgendes:
- Das HSM muss möglicherweise so konfiguriert werden, dass es den Export zulässt, bei dem Schlüssel zum Packen verwendet werden.
- Der Zielschlüssel muss möglicherweise CKA_EXTRACTABLE für das HSM markiert werden, um den kontrollierten Export zuzulassen.
- In einigen Fällen müssen der KEK und der Umbruchschlüssel möglicherweise als CKA_TRUSTED gekennzeichnet werden, sodass er zur Umschließung von Schlüsseln im HSM verwendet werden kann.
Die Konfiguration des Quell-HSM überschreitet im Allgemeinen den Umfang dieser Spezifikation. Microsoft erwartet, dass der HSM-Anbieter eine Dokumentation mit dem BYOK-Tool erstellt, die derartige Konfigurationsschritte beinhaltet.
Hinweis
Einige dieser Schritte können mit anderen Schnittstellen wie Azure PowerShell oder dem Azure-Portal ausgeführt werden. Sie können auch programmgesteuert mithilfe gleichwertiger Funktionen im Key Vault SDK ausgeführt werden.
Generieren des KEK
Verwenden Sie den Befehl "az keyvault key create", um KEK mit den festgelegten Schlüsselvorgängen zum Importieren zu erstellen. Notieren Sie sich die Schlüssel-ID (kid), die vom folgenden Befehl zurückgegeben wird.
az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM
Hinweis
Dienstleistungen unterstützen unterschiedliche KEK-Längen; Azure SQL unterstützt beispielsweise nur Schlüssellängen von 2048 oder 3072 Bytes. Weitere Informationen finden Sie in der Dokumentation für Ihren Dienst.
Abrufen des öffentlichen Schlüssels des KEK
Laden Sie den Teil des öffentlichen Schlüssels des KEK herunter, und speichern Sie ihn in einer PEM-Datei.
az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem
Generieren von Schlüsselübertragungsblobs mithilfe des vom HSM-Anbieter bereitgestellten BYOK-Tools
Der Kunde verwendet das vom HSM-Anbieter bereitgestellte BYOK-Tool zum Erstellen von Schlüsselübertragungsblobs (wird als BYOK-Datei gespeichert). Der öffentliche KEK-Schlüssel (als PEM-Datei) ist einer der Eingaben für dieses Tool.
Schlüsselübertragungsblob
Langfristig möchte Microsoft PKCS#11 CKM_RSA_AES_KEY_WRAP Mechanismus verwenden, um den Zielschlüssel in Azure Key Vault zu übertragen, da dieser Mechanismus ein einzelnes Blob erzeugt und wichtiger ist, dass der AES-Zwischenschlüssel von den beiden HSMs behandelt wird und garantiert kurzlebig ist. Dieser Mechanismus ist derzeit nicht in einigen HSMs verfügbar, sondern die Kombination aus dem Schutz des Zielschlüssels mit CKM_AES_KEY_WRAP_PAD verwendung eines AES-Schlüssels und dem Schutz des AES-Schlüssels mit CKM_RSA_PKCS_OAEP erzeugt ein entsprechendes Blob.
Der Klartext des Zielschlüssels hängt vom Schlüsseltyp ab:
- RSA-Schlüssel: DER-Codierung [RFC3447] des öffentlichen ASN.1-Schlüssels wird von PKCS#8 [RFC5208] umschlossen
- EC-Schlüssel: DER-Codierung [RFC5915] des privaten ASN.1-Schlüssels wird von PKCS#8 [RFC5208] umschlossen
- Oktettschlüssel: Rawbytes des Schlüssels
Die Bytes des Klartextschlüssels werden dann mithilfe des „CKM_RSA_AES_KEY_WRAP“-Mechanismus umgewandelt:
- Ein flüchtiger AES-Schlüssel wird erzeugt und mit dem umhüllenden RSA-Schlüssel mithilfe von RSA-OAEP mit SHA1 verschlüsselt.
- Der codierte Klartextschlüssel wird mit dem AES-Schlüssel im Rahmen der AES-Schlüsselverpackung mit Auffüllung verschlüsselt.
- Der verschlüsselte AES-Schlüssel und der verschlüsselte Klartextschlüssel werden verkettet, um das finale Verschlüsselungstextblob zu erstellen.
Das Format des Übertragungsblobs verwendet die kompakte JSON Web Encryption Serialisierung (RFC7516) in erster Linie als Fahrzeug für die Bereitstellung der erforderlichen Metadaten an den Dienst für die korrekte Entschlüsselung.
Wenn CKM_RSA_AES_KEY_WRAP_PAD verwendet wird, lautet die JSON-Serialisierung des Übertragungsblobs:
{
"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 = Schlüsselidentifikator von KEK. Für Key Vault-Schlüssel sieht dieser folgendermaßen aus:
https://ContosoKeyVaultHSM.vault.azure.net/keys/mykek/eba63d27e4e34e028839b53fac905621. - alg = Algorithmus.
- dir = Direkter Modus, d. h. der kid-Wert, auf den verwiesen wird, wird zum Schützen des Chiffretexts verwendet. Dies ist eine genaue Darstellung von „CKM_RSA_AES_KEY_WRAP“.
- generator = ein Informationsfeld, das den Namen und die Version des BYOK-Tools und des HSM-Quellherstellers und -Modells angibt. Diese Informationen sind für die Problembehandlung und den Support vorgesehen.
Das JSON-Blob wird in einer Datei mit der Erweiterung ".byok" gespeichert, sodass der Azure PowerShell- oder CLI-Client es korrekt behandelt, wenn die Befehle "Add-AzKeyVaultKey" (PSH) oder "az keyvault key import" (CLI) verwendet werden.
Hochladen des Schlüsselübertragungsblobs zum Importieren des HSM-Schlüssels
Kunden übertragen das Schlüsselübertragungs-Blob ("BYOK"-Datei) auf eine Onlinearbeitsstation und führen dann einen Az keyvault-Schlüsselimportbefehl aus, um dieses Blob als neuen HSM-gesicherten Schlüssel in Key Vault zu importieren.
Verwenden Sie den folgenden Befehl, um einen RSA-Schlüssel zu importieren:
az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok --ops encrypt decrypt
Zum Importieren eines EC-Schlüssels müssen Sie den Schlüsseltyp und den Kurvennamen angeben.
az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file --kty EC-HSM --curve-name "P-256" KeyTransferPackage-ContosoFirstHSMkey.byok --ops sign verify
Wenn dieser Befehl ausgeführt wird, wird eine REST-API-Anforderung wie folgt gesendet:
PUT https://contosokeyvaulthsm.vault.azure.net/keys/ContosoFirstHSMKey?api-version=7.0
Anforderungstext beim Importieren eines RSA-Schlüssels:
{
"key": {
"kty": "RSA-HSM",
"key_ops": [
"decrypt",
"encrypt"
],
"key_hsm": "<Base64 encoded BYOK_BLOB>"
},
"attributes": {
"enabled": true
}
}
Anforderungstext beim Importieren eines EC-Schlüssels:
{
"key": {
"kty": "EC-HSM",
"crv": "P-256",
"key_ops": [
"sign",
"verify"
],
"key_hsm": "<Base64 encoded BYOK_BLOB>"
},
"attributes": {
"enabled": true
}
}
Der Wert "key_hsm" ist der gesamte Inhalt des KeyTransferPackage-ContosoFirstHSMkey.byok, verschlüsselt im Base64-Format.
Verweise
Nächste Schritte
- Schrittweise BYOK-Anweisungen: Importieren von HSM-geschützten Schlüsseln in Key Vault (BYOK)