Key-Wrapping für Schlüssel erneut ausführen

Verschlüsseln Sie Ihre Datenverschlüsselungsschlüssel erneut mithilfe der IBM® Key Protect-API.

Wenn Sie einen Rootschlüssel in Key Protect turnusmäßig wechseln, werden neue Verschlüsselungsschlüsselinformationen für den Schutz der Datenverschlüsselungsschlüssel (DEKs) verfügbar, die dem Rootschlüssel zugeordnet sind. Mit der API für das erneute Wrapping können Sie DEKs erneut verschlüsseln, ohne die zugehörigen Schlüssel in unverschlüsselter Form zugänglich zu machen.

Wie Sie mit Hilfe der Umschlagverschlüsselung die Sicherheit von Daten im Ruhezustand in der Cloud kontrollieren können, erfahren Sie unter Schutz von Daten mit Envelope- Verschlüsselung.

Rewrapping für Schlüssel über API durchführen

Sie können einen bestimmten Datenverschlüsselungsschlüssel (DEK) mit einem Rootschlüssel erneut verschlüsseln, den Sie in Key Protect verwalten, ohne den Datenverschlüsselungsschlüssel in seinem unverschlüsselten Textformat offenzulegen.

Zum Rewrapping von Schlüsseln werden die Aufrufe unwrap und wrap für den Service kombiniert. Sie können beispielsweise eine Operation rewrap emulieren, indem Sie zuerst die API für unwrap aufrufen, um auf einen Datenverschlüsselungsschlüssel zuzugreifen, und dann die API wrap aufrufen, um den Datenverschlüsselungsschlüssel anhand der neuesten Informationen zum Rootschlüssel erneut zu verschlüsseln.

Nachdem Sie einen Root-Schlüssel im Dienst gedreht haben, einen Datenverschlüsselungsschlüssel, der mit dem Root-Schlüssel verknüpft ist, neu verschlüsseln, indem Sie einen POST-Aufruf an den folgenden Endpunkt durchführen.

https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap
  1. Rufen Sie Ihren Service- und Authentifizierungsnachweis ab, um mit den Schlüsseln im Service zu arbeiten.

  2. Kopieren Sie die ID des gewechselten Rootschlüssels, mit dem Sie die ursprüngliche Wrapping-Anforderung durchgeführt haben.

    Sie können die ID eines Schlüssels abrufen, indem Sie eine GET api/v2/keys-Anforderung stellen oder indem Sie Ihre Schlüssel in der Key Protect- GUI anzeigen.

  3. Kopieren Sie den ciphertext-Wert, der während der letzten Wrapping-Anforderung zurückgegeben wurde.

  4. Ändern Sie den Schlüssel mit dem neuesten Stammschlüsselmaterial, indem Sie Folgendes ausführen curl-Befehl ausführen.

    $ curl -X POST \
        "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rewrap" \
        -H "accept: application/vnd.ibm.kms.key_action+json" \
        -H "authorization: Bearer <IAM_token>" \
        -H "bluemix-instance: <instance_ID>" \
        -H "content-type: application/vnd.ibm.kms.key_action+json" \
        -H "x-kms-key-ring: <key_ring_ID>" \
        -H "correlation-id: <correlation_ID>" \
        -d '{
                "ciphertext": "<encrypted_data_key>",
                "aad": [
                    "<additional_data>",
                    "<additional_data>"
                ]
            }'
    

    Ersetzen Sie die Variablen in der Beispielanforderung entsprechend der folgenden Tabelle.

Beschreibt die Variablen, die benötigt werden, um Schlüssel in Key Protect umzubrechen.
Variable Beschreibung
Bereich Erforderlich. Die Regionsabkürzung (z. B. us-south oder eu-gb) für den geografischen Bereich, in dem sich Ihre Key Protect-Instanz befindet.
Weitere Informationen finden Sie unter Regionale Dienstendpunkte.
keyID_or_alias Erforderlich. Die eindeutige ID oder der Aliasname für den Rootschlüssel der ursprünglichen Wrapping-Anforderung.
IAM_token Erforderlich. Ihr IBM Cloud-Zugriffstoken. Fügen Sie den vollständigen Inhalt des IAM-Tokens, einschließlich des Träger-Wertes, in die Curl-Anforderung ein.
Weitere Informationen finden Sie unter Abrufen eines Zugriffstokens.
instance_id Erforderlich. Die eindeutige ID, die Ihrer Key Protect-Serviceinstanz zugewiesen ist.
Weitere Informationen finden Sie unter Abrufen einer Instanz-ID.
key_ring_ID Optional. Die eindeutige ID des Schlüsselrings, zu dem der Schlüssel gehört. Wenn diese Option nicht angegeben ist, wird Key Protect nach dem Schlüssel in jedem Schlüsselring gesucht, der der angegebenen Instanz zugeordnet ist. Es wird empfohlen, die Schlüsselring-ID für eine optimiertere Anforderung anzugeben.
Hinweis: Die Schlüsselring-ID von Schlüsseln, die ohne x-kms-key-ring-Header erstellt werden, lautet: default.
For more information, see Gruppentasten.
correlation_ID Die eindeutige ID, die zum Überwachen und Korrelieren von Transaktionen verwendet wird.
encrypted_data_key Erforderlich. Der Wert des Chiffretextes, der durch die ursprüngliche Wrap-Operation zurückgegeben wurde.
additional_data OptionalDie zusätzlichen Authentifizierungsdaten (AAD), die verwendet werden, um den Schlüssel weiter zu sichern. Jede Zeichenfolge kann bis zu 255 Zeichen enthalten. Wenn Sie AAD für den ursprünglichen Wrapping-Aufruf angegeben haben, müssen Sie dieselben AAD während der nachfolgenden Unwrap-oder Rewrap-Aufrufe angeben.

Wichtig: Der Dienst Key Protect speichert keine zusätzlichen Authentifizierungsdaten. Wenn AAD angegeben werden, speichern Sie die Daten an einer sicheren Position, um sicherzustellen, dass Sie bei nachfolgenden Anforderungen zum Aufheben des Wrappings oder erneutem Durchführen des Wrappings auf dieselben AAD zugreifen und diese angeben können.

Der neu eingeschlossene Datenverschlüsselungsschlüssel, ursprüngliche Schlüsselversion (keyVersion), die dem angegebenen verschlüsselten Text zugeordnet ist, und die neueste Schlüsselversion (rewrappedKeyVersion), die dem neuen verschlüsselten Text zugeordnet ist, wwerden im Entitätshauptteil der Antwort zurückgegeben. Das folgende JSON-Objekt zeigt ein Beispiel für einen zurückgegebenen Wert.

{
    "ciphertext": "eyJjaX ... h0Ijoi ... c1ZCJ9",
    "keyVersion": {
        "id": "02fd6835-6001-4482-a892-13bd2085f75d"
    },
    "rewrappedKeyVersion": {
        "id": "12e8c9c2-a162-472d-b7d6-8b9a86b815a6"
    }
}

Speichern und verwenden Sie den neuen Wert für den verschlüsselten Text (ciphertext) für zukünftige Operationen zur Envelope-Verschlüsselung, sodass Ihre Daten durch den aktuellsten Rootschlüssel geschützt werden.

Optionale Validierung

Stellen Sie sicher, dass der Schlüssel erfolgreich durch base64-Decodierung des Werts ciphertext neu eingepackt wurde.

$ echo <ciphertext> | base64 --decode

Ersetzen Sie <ciphertext> durch den base64-codierten Wert, der im vorherigen Schritt zurückgegeben wurde. Das folgende JSON-Objekt zeigt eine Beispiel-CLI-Ausgabe.

{
    "ciphertext": "mIzRrwZAA8+WqRckG6gt1ji8HlEEJPSiV+TRBSR4GVr+FlAZlC5KvRriRF0=",
    "iv": "lbwxXlAW2DS7+5jGz5Y1Kg==",
    "version": "4.0.0",
    "handle": "8e309bae-b3ec-4270-9b87-89f8697fe54f"
}